| Module | CGI::HtmlExtension |
| In: |
lib/cgi.rb
|
Mixin module providing HTML generation methods.
For example,
cgi.a("http://www.example.com") { "Example" }
# => "<A HREF=\"http://www.example.com\">Example</A>"
Modules Http3, Http4, etc., contain more basic HTML-generation methods (:title, :center, etc.).
See class CGI for a detailed example.
Generate an Anchor element as a string.
href can either be a string, giving the URL for the HREF attribute, or it can be a hash of the element’s attributes.
The body of the element is the string returned by the no-argument block passed in.
a("http://www.example.com") { "Example" }
# => "<A HREF=\"http://www.example.com\">Example</A>"
a("HREF" => "http://www.example.com", "TARGET" => "_top") { "Example" }
# => "<A HREF=\"http://www.example.com\" TARGET=\"_top\">Example</A>"
# File lib/cgi.rb, line 1310
1310: def a(href = "") # :yield:
1311: attributes = if href.kind_of?(String)
1312: { "HREF" => href }
1313: else
1314: href
1315: end
1316: if block_given?
1317: super(attributes){ yield }
1318: else
1319: super(attributes)
1320: end
1321: end
Generate a Document Base URI element as a String.
href can either by a string, giving the base URL for the HREF attribute, or it can be a has of the element’s attributes.
The passed-in no-argument block is ignored.
base("http://www.example.com/cgi")
# => "<BASE HREF=\"http://www.example.com/cgi\">"
# File lib/cgi.rb, line 1332
1332: def base(href = "") # :yield:
1333: attributes = if href.kind_of?(String)
1334: { "HREF" => href }
1335: else
1336: href
1337: end
1338: if block_given?
1339: super(attributes){ yield }
1340: else
1341: super(attributes)
1342: end
1343: end
Generate a BlockQuote element as a string.
cite can either be a string, give the URI for the source of the quoted text, or a hash, giving all attributes of the element, or it can be omitted, in which case the element has no attributes.
The body is provided by the passed-in no-argument block
blockquote("http://www.example.com/quotes/foo.html") { "Foo!" }
#=> "<BLOCKQUOTE CITE=\"http://www.example.com/quotes/foo.html\">Foo!</BLOCKQUOTE>
# File lib/cgi.rb, line 1355
1355: def blockquote(cite = nil) # :yield:
1356: attributes = if cite.kind_of?(String)
1357: { "CITE" => cite }
1358: else
1359: cite or ""
1360: end
1361: if block_given?
1362: super(attributes){ yield }
1363: else
1364: super(attributes)
1365: end
1366: end
Generate a Table Caption element as a string.
align can be a string, giving the alignment of the caption (one of top, bottom, left, or right). It can be a hash of all the attributes of the element. Or it can be omitted.
The body of the element is provided by the passed-in no-argument block.
caption("left") { "Capital Cities" }
# => <CAPTION ALIGN=\"left\">Capital Cities</CAPTION>
# File lib/cgi.rb, line 1379
1379: def caption(align = nil) # :yield:
1380: attributes = if align.kind_of?(String)
1381: { "ALIGN" => align }
1382: else
1383: align or ""
1384: end
1385: if block_given?
1386: super(attributes){ yield }
1387: else
1388: super(attributes)
1389: end
1390: end
Generate a Checkbox Input element as a string.
The attributes of the element can be specified as three arguments, name, value, and checked. checked is a boolean value; if true, the CHECKED attribute will be included in the element.
Alternatively, the attributes can be specified as a hash.
checkbox("name")
# = checkbox("NAME" => "name")
checkbox("name", "value")
# = checkbox("NAME" => "name", "VALUE" => "value")
checkbox("name", "value", true)
# = checkbox("NAME" => "name", "VALUE" => "value", "CHECKED" => true)
# File lib/cgi.rb, line 1409
1409: def checkbox(name = "", value = nil, checked = nil)
1410: attributes = if name.kind_of?(String)
1411: { "TYPE" => "checkbox", "NAME" => name,
1412: "VALUE" => value, "CHECKED" => checked }
1413: else
1414: name["TYPE"] = "checkbox"
1415: name
1416: end
1417: input(attributes)
1418: end
Generate a sequence of checkbox elements, as a String.
The checkboxes will all have the same name attribute. Each checkbox is followed by a label. There will be one checkbox for each value. Each value can be specified as a String, which will be used both as the value of the VALUE attribute and as the label for that checkbox. A single-element array has the same effect.
Each value can also be specified as a three-element array. The first element is the VALUE attribute; the second is the label; and the third is a boolean specifying whether this checkbox is CHECKED.
Each value can also be specified as a two-element array, by omitting either the value element (defaults to the same as the label), or the boolean checked element (defaults to false).
checkbox_group("name", "foo", "bar", "baz")
# <INPUT TYPE="checkbox" NAME="name" VALUE="foo">foo
# <INPUT TYPE="checkbox" NAME="name" VALUE="bar">bar
# <INPUT TYPE="checkbox" NAME="name" VALUE="baz">baz
checkbox_group("name", ["foo"], ["bar", true], "baz")
# <INPUT TYPE="checkbox" NAME="name" VALUE="foo">foo
# <INPUT TYPE="checkbox" CHECKED NAME="name" VALUE="bar">bar
# <INPUT TYPE="checkbox" NAME="name" VALUE="baz">baz
checkbox_group("name", ["1", "Foo"], ["2", "Bar", true], "Baz")
# <INPUT TYPE="checkbox" NAME="name" VALUE="1">Foo
# <INPUT TYPE="checkbox" CHECKED NAME="name" VALUE="2">Bar
# <INPUT TYPE="checkbox" NAME="name" VALUE="Baz">Baz
checkbox_group("NAME" => "name",
"VALUES" => ["foo", "bar", "baz"])
checkbox_group("NAME" => "name",
"VALUES" => [["foo"], ["bar", true], "baz"])
checkbox_group("NAME" => "name",
"VALUES" => [["1", "Foo"], ["2", "Bar", true], "Baz"])
# File lib/cgi.rb, line 1463
1463: def checkbox_group(name = "", *values)
1464: if name.kind_of?(Hash)
1465: values = name["VALUES"]
1466: name = name["NAME"]
1467: end
1468: values.collect{|value|
1469: if value.kind_of?(String)
1470: checkbox(name, value) + value
1471: else
1472: if value[value.size - 1] == true
1473: checkbox(name, value[0], true) +
1474: value[value.size - 2]
1475: else
1476: checkbox(name, value[0]) +
1477: value[value.size - 1]
1478: end
1479: end
1480: }.to_s
1481: end
Generate an File Upload Input element as a string.
The attributes of the element can be specified as three arguments, name, size, and maxlength. maxlength is the maximum length of the file’s name, not of the file’s contents.
Alternatively, the attributes can be specified as a hash.
See multipart_form() for forms that include file uploads.
file_field("name")
# <INPUT TYPE="file" NAME="name" SIZE="20">
file_field("name", 40)
# <INPUT TYPE="file" NAME="name" SIZE="40">
file_field("name", 40, 100)
# <INPUT TYPE="file" NAME="name" SIZE="40" MAXLENGTH="100">
file_field("NAME" => "name", "SIZE" => 40)
# <INPUT TYPE="file" NAME="name" SIZE="40">
# File lib/cgi.rb, line 1505
1505: def file_field(name = "", size = 20, maxlength = nil)
1506: attributes = if name.kind_of?(String)
1507: { "TYPE" => "file", "NAME" => name,
1508: "SIZE" => size.to_s }
1509: else
1510: name["TYPE"] = "file"
1511: name
1512: end
1513: attributes["MAXLENGTH"] = maxlength.to_s if maxlength
1514: input(attributes)
1515: end
Generate a Form element as a string.
method should be either "get" or "post", and defaults to the latter. action defaults to the current CGI script name. enctype defaults to "application/x-www-form-urlencoded".
Alternatively, the attributes can be specified as a hash.
See also multipart_form() for forms that include file uploads.
form{ "string" }
# <FORM METHOD="post" ENCTYPE="application/x-www-form-urlencoded">string</FORM>
form("get") { "string" }
# <FORM METHOD="get" ENCTYPE="application/x-www-form-urlencoded">string</FORM>
form("get", "url") { "string" }
# <FORM METHOD="get" ACTION="url" ENCTYPE="application/x-www-form-urlencoded">string</FORM>
form("METHOD" => "post", "ENCTYPE" => "enctype") { "string" }
# <FORM METHOD="post" ENCTYPE="enctype">string</FORM>
# File lib/cgi.rb, line 1539
1539: def form(method = "post", action = script_name, enctype = "application/x-www-form-urlencoded")
1540: attributes = if method.kind_of?(String)
1541: { "METHOD" => method, "ACTION" => action,
1542: "ENCTYPE" => enctype }
1543: else
1544: unless method.has_key?("METHOD")
1545: method["METHOD"] = "post"
1546: end
1547: unless method.has_key?("ENCTYPE")
1548: method["ENCTYPE"] = enctype
1549: end
1550: method
1551: end
1552: if block_given?
1553: body = yield
1554: else
1555: body = ""
1556: end
1557: if @output_hidden
1558: body += @output_hidden.collect{|k,v|
1559: "<INPUT TYPE=\"HIDDEN\" NAME=\"#{k}\" VALUE=\"#{v}\">"
1560: }.to_s
1561: end
1562: super(attributes){body}
1563: end
Generate a Hidden Input element as a string.
The attributes of the element can be specified as two arguments, name and value.
Alternatively, the attributes can be specified as a hash.
hidden("name")
# <INPUT TYPE="hidden" NAME="name">
hidden("name", "value")
# <INPUT TYPE="hidden" NAME="name" VALUE="value">
hidden("NAME" => "name", "VALUE" => "reset", "ID" => "foo")
# <INPUT TYPE="hidden" NAME="name" VALUE="value" ID="foo">
# File lib/cgi.rb, line 1580
1580: def hidden(name = "", value = nil)
1581: attributes = if name.kind_of?(String)
1582: { "TYPE" => "hidden", "NAME" => name, "VALUE" => value }
1583: else
1584: name["TYPE"] = "hidden"
1585: name
1586: end
1587: input(attributes)
1588: end
Generate a top-level HTML element as a string.
The attributes of the element are specified as a hash. The pseudo-attribute "PRETTY" can be used to specify that the generated HTML string should be indented. "PRETTY" can also be specified as a string as the sole argument to this method. The pseudo-attribute "DOCTYPE", if given, is used as the leading DOCTYPE SGML tag; it should include the entire text of this tag, including angle brackets.
The body of the html element is supplied as a block.
html{ "string" }
# <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><HTML>string</HTML>
html("LANG" => "ja") { "string" }
# <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><HTML LANG="ja">string</HTML>
html("DOCTYPE" => false) { "string" }
# <HTML>string</HTML>
html("DOCTYPE" => '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">') { "string" }
# <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><HTML>string</HTML>
html("PRETTY" => " ") { "<BODY></BODY>" }
# <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
# <HTML>
# <BODY>
# </BODY>
# </HTML>
html("PRETTY" => "\t") { "<BODY></BODY>" }
# <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
# <HTML>
# <BODY>
# </BODY>
# </HTML>
html("PRETTY") { "<BODY></BODY>" }
# = html("PRETTY" => " ") { "<BODY></BODY>" }
html(if $VERBOSE then "PRETTY" end) { "HTML string" }
# File lib/cgi.rb, line 1632
1632: def html(attributes = {}) # :yield:
1633: if nil == attributes
1634: attributes = {}
1635: elsif "PRETTY" == attributes
1636: attributes = { "PRETTY" => true }
1637: end
1638: pretty = attributes.delete("PRETTY")
1639: pretty = " " if true == pretty
1640: buf = ""
1641:
1642: if attributes.has_key?("DOCTYPE")
1643: if attributes["DOCTYPE"]
1644: buf += attributes.delete("DOCTYPE")
1645: else
1646: attributes.delete("DOCTYPE")
1647: end
1648: else
1649: buf += doctype
1650: end
1651:
1652: if block_given?
1653: buf += super(attributes){ yield }
1654: else
1655: buf += super(attributes)
1656: end
1657:
1658: if pretty
1659: CGI::pretty(buf, pretty)
1660: else
1661: buf
1662: end
1663:
1664: end
Generate an Image Button Input element as a string.
src is the URL of the image to use for the button. name is the input name. alt is the alternative text for the image.
Alternatively, the attributes can be specified as a hash.
image_button("url")
# <INPUT TYPE="image" SRC="url">
image_button("url", "name", "string")
# <INPUT TYPE="image" SRC="url" NAME="name" ALT="string">
image_button("SRC" => "url", "ATL" => "strng")
# <INPUT TYPE="image" SRC="url" ALT="string">
# File lib/cgi.rb, line 1681
1681: def image_button(src = "", name = nil, alt = nil)
1682: attributes = if src.kind_of?(String)
1683: { "TYPE" => "image", "SRC" => src, "NAME" => name,
1684: "ALT" => alt }
1685: else
1686: src["TYPE"] = "image"
1687: src["SRC"] ||= ""
1688: src
1689: end
1690: input(attributes)
1691: end
Generate an Image element as a string.
src is the URL of the image. alt is the alternative text for the image. width is the width of the image, and height is its height.
Alternatively, the attributes can be specified as a hash.
img("src", "alt", 100, 50)
# <IMG SRC="src" ALT="alt" WIDTH="100" HEIGHT="50">
img("SRC" => "src", "ALT" => "alt", "WIDTH" => 100, "HEIGHT" => 50)
# <IMG SRC="src" ALT="alt" WIDTH="100" HEIGHT="50">
# File lib/cgi.rb, line 1707
1707: def img(src = "", alt = "", width = nil, height = nil)
1708: attributes = if src.kind_of?(String)
1709: { "SRC" => src, "ALT" => alt }
1710: else
1711: src
1712: end
1713: attributes["WIDTH"] = width.to_s if width
1714: attributes["HEIGHT"] = height.to_s if height
1715: super(attributes)
1716: end
Generate a Form element with multipart encoding as a String.
Multipart encoding is used for forms that include file uploads.
action is the action to perform. enctype is the encoding type, which defaults to "multipart/form-data".
Alternatively, the attributes can be specified as a hash.
multipart_form{ "string" }
# <FORM METHOD="post" ENCTYPE="multipart/form-data">string</FORM>
multipart_form("url") { "string" }
# <FORM METHOD="post" ACTION="url" ENCTYPE="multipart/form-data">string</FORM>
# File lib/cgi.rb, line 1733
1733: def multipart_form(action = nil, enctype = "multipart/form-data")
1734: attributes = if action == nil
1735: { "METHOD" => "post", "ENCTYPE" => enctype }
1736: elsif action.kind_of?(String)
1737: { "METHOD" => "post", "ACTION" => action,
1738: "ENCTYPE" => enctype }
1739: else
1740: unless action.has_key?("METHOD")
1741: action["METHOD"] = "post"
1742: end
1743: unless action.has_key?("ENCTYPE")
1744: action["ENCTYPE"] = enctype
1745: end
1746: action
1747: end
1748: if block_given?
1749: form(attributes){ yield }
1750: else
1751: form(attributes)
1752: end
1753: end
Generate a Password Input element as a string.
name is the name of the input field. value is its default value. size is the size of the input field display. maxlength is the maximum length of the inputted password.
Alternatively, attributes can be specified as a hash.
password_field("name")
# <INPUT TYPE="password" NAME="name" SIZE="40">
password_field("name", "value")
# <INPUT TYPE="password" NAME="name" VALUE="value" SIZE="40">
password_field("password", "value", 80, 200)
# <INPUT TYPE="password" NAME="name" VALUE="value" SIZE="80" MAXLENGTH="200">
password_field("NAME" => "name", "VALUE" => "value")
# <INPUT TYPE="password" NAME="name" VALUE="value">
# File lib/cgi.rb, line 1775
1775: def password_field(name = "", value = nil, size = 40, maxlength = nil)
1776: attributes = if name.kind_of?(String)
1777: { "TYPE" => "password", "NAME" => name,
1778: "VALUE" => value, "SIZE" => size.to_s }
1779: else
1780: name["TYPE"] = "password"
1781: name
1782: end
1783: attributes["MAXLENGTH"] = maxlength.to_s if maxlength
1784: input(attributes)
1785: end
Generate a Select element as a string.
name is the name of the element. The values are the options that can be selected from the Select menu. Each value can be a String or a one, two, or three-element Array. If a String or a one-element Array, this is both the value of that option and the text displayed for it. If a three-element Array, the elements are the option value, displayed text, and a boolean value specifying whether this option starts as selected. The two-element version omits either the option value (defaults to the same as the display text) or the boolean selected specifier (defaults to false).
The attributes and options can also be specified as a hash. In this case, options are specified as an array of values as described above, with the hash key of "VALUES".
popup_menu("name", "foo", "bar", "baz")
# <SELECT NAME="name">
# <OPTION VALUE="foo">foo</OPTION>
# <OPTION VALUE="bar">bar</OPTION>
# <OPTION VALUE="baz">baz</OPTION>
# </SELECT>
popup_menu("name", ["foo"], ["bar", true], "baz")
# <SELECT NAME="name">
# <OPTION VALUE="foo">foo</OPTION>
# <OPTION VALUE="bar" SELECTED>bar</OPTION>
# <OPTION VALUE="baz">baz</OPTION>
# </SELECT>
popup_menu("name", ["1", "Foo"], ["2", "Bar", true], "Baz")
# <SELECT NAME="name">
# <OPTION VALUE="1">Foo</OPTION>
# <OPTION SELECTED VALUE="2">Bar</OPTION>
# <OPTION VALUE="Baz">Baz</OPTION>
# </SELECT>
popup_menu("NAME" => "name", "SIZE" => 2, "MULTIPLE" => true,
"VALUES" => [["1", "Foo"], ["2", "Bar", true], "Baz"])
# <SELECT NAME="name" MULTIPLE SIZE="2">
# <OPTION VALUE="1">Foo</OPTION>
# <OPTION SELECTED VALUE="2">Bar</OPTION>
# <OPTION VALUE="Baz">Baz</OPTION>
# </SELECT>
# File lib/cgi.rb, line 1830
1830: def popup_menu(name = "", *values)
1831:
1832: if name.kind_of?(Hash)
1833: values = name["VALUES"]
1834: size = name["SIZE"].to_s if name["SIZE"]
1835: multiple = name["MULTIPLE"]
1836: name = name["NAME"]
1837: else
1838: size = nil
1839: multiple = nil
1840: end
1841:
1842: select({ "NAME" => name, "SIZE" => size,
1843: "MULTIPLE" => multiple }){
1844: values.collect{|value|
1845: if value.kind_of?(String)
1846: option({ "VALUE" => value }){ value }
1847: else
1848: if value[value.size - 1] == true
1849: option({ "VALUE" => value[0], "SELECTED" => true }){
1850: value[value.size - 2]
1851: }
1852: else
1853: option({ "VALUE" => value[0] }){
1854: value[value.size - 1]
1855: }
1856: end
1857: end
1858: }.to_s
1859: }
1860:
1861: end
Generates a radio-button Input element.
name is the name of the input field. value is the value of the field if checked. checked specifies whether the field starts off checked.
Alternatively, the attributes can be specified as a hash.
radio_button("name", "value")
# <INPUT TYPE="radio" NAME="name" VALUE="value">
radio_button("name", "value", true)
# <INPUT TYPE="radio" NAME="name" VALUE="value" CHECKED>
radio_button("NAME" => "name", "VALUE" => "value", "ID" => "foo")
# <INPUT TYPE="radio" NAME="name" VALUE="value" ID="foo">
# File lib/cgi.rb, line 1879
1879: def radio_button(name = "", value = nil, checked = nil)
1880: attributes = if name.kind_of?(String)
1881: { "TYPE" => "radio", "NAME" => name,
1882: "VALUE" => value, "CHECKED" => checked }
1883: else
1884: name["TYPE"] = "radio"
1885: name
1886: end
1887: input(attributes)
1888: end
Generate a sequence of radio button Input elements, as a String.
This works the same as checkbox_group(). However, it is not valid to have more than one radiobutton in a group checked.
radio_group("name", "foo", "bar", "baz")
# <INPUT TYPE="radio" NAME="name" VALUE="foo">foo
# <INPUT TYPE="radio" NAME="name" VALUE="bar">bar
# <INPUT TYPE="radio" NAME="name" VALUE="baz">baz
radio_group("name", ["foo"], ["bar", true], "baz")
# <INPUT TYPE="radio" NAME="name" VALUE="foo">foo
# <INPUT TYPE="radio" CHECKED NAME="name" VALUE="bar">bar
# <INPUT TYPE="radio" NAME="name" VALUE="baz">baz
radio_group("name", ["1", "Foo"], ["2", "Bar", true], "Baz")
# <INPUT TYPE="radio" NAME="name" VALUE="1">Foo
# <INPUT TYPE="radio" CHECKED NAME="name" VALUE="2">Bar
# <INPUT TYPE="radio" NAME="name" VALUE="Baz">Baz
radio_group("NAME" => "name",
"VALUES" => ["foo", "bar", "baz"])
radio_group("NAME" => "name",
"VALUES" => [["foo"], ["bar", true], "baz"])
radio_group("NAME" => "name",
"VALUES" => [["1", "Foo"], ["2", "Bar", true], "Baz"])
# File lib/cgi.rb, line 1918
1918: def radio_group(name = "", *values)
1919: if name.kind_of?(Hash)
1920: values = name["VALUES"]
1921: name = name["NAME"]
1922: end
1923: values.collect{|value|
1924: if value.kind_of?(String)
1925: radio_button(name, value) + value
1926: else
1927: if value[value.size - 1] == true
1928: radio_button(name, value[0], true) +
1929: value[value.size - 2]
1930: else
1931: radio_button(name, value[0]) +
1932: value[value.size - 1]
1933: end
1934: end
1935: }.to_s
1936: end
Generate a reset button Input element, as a String.
This resets the values on a form to their initial values. value is the text displayed on the button. name is the name of this button.
Alternatively, the attributes can be specified as a hash.
reset
# <INPUT TYPE="reset">
reset("reset")
# <INPUT TYPE="reset" VALUE="reset">
reset("VALUE" => "reset", "ID" => "foo")
# <INPUT TYPE="reset" VALUE="reset" ID="foo">
# File lib/cgi.rb, line 1953
1953: def reset(value = nil, name = nil)
1954: attributes = if (not value) or value.kind_of?(String)
1955: { "TYPE" => "reset", "VALUE" => value, "NAME" => name }
1956: else
1957: value["TYPE"] = "reset"
1958: value
1959: end
1960: input(attributes)
1961: end
Generate a submit button Input element, as a String.
value is the text to display on the button. name is the name of the input.
Alternatively, the attributes can be specified as a hash.
submit
# <INPUT TYPE="submit">
submit("ok")
# <INPUT TYPE="submit" VALUE="ok">
submit("ok", "button1")
# <INPUT TYPE="submit" VALUE="ok" NAME="button1">
submit("VALUE" => "ok", "NAME" => "button1", "ID" => "foo")
# <INPUT TYPE="submit" VALUE="ok" NAME="button1" ID="foo">
# File lib/cgi.rb, line 1983
1983: def submit(value = nil, name = nil)
1984: attributes = if (not value) or value.kind_of?(String)
1985: { "TYPE" => "submit", "VALUE" => value, "NAME" => name }
1986: else
1987: value["TYPE"] = "submit"
1988: value
1989: end
1990: input(attributes)
1991: end
Generate a text field Input element, as a String.
name is the name of the input field. value is its initial value. size is the size of the input area. maxlength is the maximum length of input accepted.
Alternatively, the attributes can be specified as a hash.
text_field("name")
# <INPUT TYPE="text" NAME="name" SIZE="40">
text_field("name", "value")
# <INPUT TYPE="text" NAME="name" VALUE="value" SIZE="40">
text_field("name", "value", 80)
# <INPUT TYPE="text" NAME="name" VALUE="value" SIZE="80">
text_field("name", "value", 80, 200)
# <INPUT TYPE="text" NAME="name" VALUE="value" SIZE="80" MAXLENGTH="200">
text_field("NAME" => "name", "VALUE" => "value")
# <INPUT TYPE="text" NAME="name" VALUE="value">
# File lib/cgi.rb, line 2015
2015: def text_field(name = "", value = nil, size = 40, maxlength = nil)
2016: attributes = if name.kind_of?(String)
2017: { "TYPE" => "text", "NAME" => name, "VALUE" => value,
2018: "SIZE" => size.to_s }
2019: else
2020: name["TYPE"] = "text"
2021: name
2022: end
2023: attributes["MAXLENGTH"] = maxlength.to_s if maxlength
2024: input(attributes)
2025: end
Generate a TextArea element, as a String.
name is the name of the textarea. cols is the number of columns and rows is the number of rows in the display.
Alternatively, the attributes can be specified as a hash.
The body is provided by the passed-in no-argument block
textarea("name")
# = textarea("NAME" => "name", "COLS" => 70, "ROWS" => 10)
textarea("name", 40, 5)
# = textarea("NAME" => "name", "COLS" => 40, "ROWS" => 5)
# File lib/cgi.rb, line 2041
2041: def textarea(name = "", cols = 70, rows = 10) # :yield:
2042: attributes = if name.kind_of?(String)
2043: { "NAME" => name, "COLS" => cols.to_s,
2044: "ROWS" => rows.to_s }
2045: else
2046: name
2047: end
2048: if block_given?
2049: super(attributes){ yield }
2050: else
2051: super(attributes)
2052: end
2053: end