| Module | CGI::HtmlExtension |
| In: |
lib/cgi.rb
|
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 1317
1317: def a(href = "") # :yield:
1318: attributes = if href.kind_of?(String)
1319: { "HREF" => href }
1320: else
1321: href
1322: end
1323: if block_given?
1324: super(attributes){ yield }
1325: else
1326: super(attributes)
1327: end
1328: 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 1339
1339: def base(href = "") # :yield:
1340: attributes = if href.kind_of?(String)
1341: { "HREF" => href }
1342: else
1343: href
1344: end
1345: if block_given?
1346: super(attributes){ yield }
1347: else
1348: super(attributes)
1349: end
1350: 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 1362
1362: def blockquote(cite = nil) # :yield:
1363: attributes = if cite.kind_of?(String)
1364: { "CITE" => cite }
1365: else
1366: cite or ""
1367: end
1368: if block_given?
1369: super(attributes){ yield }
1370: else
1371: super(attributes)
1372: end
1373: 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 1386
1386: def caption(align = nil) # :yield:
1387: attributes = if align.kind_of?(String)
1388: { "ALIGN" => align }
1389: else
1390: align or ""
1391: end
1392: if block_given?
1393: super(attributes){ yield }
1394: else
1395: super(attributes)
1396: end
1397: 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 1416
1416: def checkbox(name = "", value = nil, checked = nil)
1417: attributes = if name.kind_of?(String)
1418: { "TYPE" => "checkbox", "NAME" => name,
1419: "VALUE" => value, "CHECKED" => checked }
1420: else
1421: name["TYPE"] = "checkbox"
1422: name
1423: end
1424: input(attributes)
1425: 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 1470
1470: def checkbox_group(name = "", *values)
1471: if name.kind_of?(Hash)
1472: values = name["VALUES"]
1473: name = name["NAME"]
1474: end
1475: values.collect{|value|
1476: if value.kind_of?(String)
1477: checkbox(name, value) + value
1478: else
1479: if value[value.size - 1] == true
1480: checkbox(name, value[0], true) +
1481: value[value.size - 2]
1482: else
1483: checkbox(name, value[0]) +
1484: value[value.size - 1]
1485: end
1486: end
1487: }.to_s
1488: 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 1512
1512: def file_field(name = "", size = 20, maxlength = nil)
1513: attributes = if name.kind_of?(String)
1514: { "TYPE" => "file", "NAME" => name,
1515: "SIZE" => size.to_s }
1516: else
1517: name["TYPE"] = "file"
1518: name
1519: end
1520: attributes["MAXLENGTH"] = maxlength.to_s if maxlength
1521: input(attributes)
1522: 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 1546
1546: def form(method = "post", action = script_name, enctype = "application/x-www-form-urlencoded")
1547: attributes = if method.kind_of?(String)
1548: { "METHOD" => method, "ACTION" => action,
1549: "ENCTYPE" => enctype }
1550: else
1551: unless method.has_key?("METHOD")
1552: method["METHOD"] = "post"
1553: end
1554: unless method.has_key?("ENCTYPE")
1555: method["ENCTYPE"] = enctype
1556: end
1557: method
1558: end
1559: if block_given?
1560: body = yield
1561: else
1562: body = ""
1563: end
1564: if @output_hidden
1565: body += @output_hidden.collect{|k,v|
1566: "<INPUT TYPE=\"HIDDEN\" NAME=\"#{k}\" VALUE=\"#{v}\">"
1567: }.to_s
1568: end
1569: super(attributes){body}
1570: 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 1587
1587: def hidden(name = "", value = nil)
1588: attributes = if name.kind_of?(String)
1589: { "TYPE" => "hidden", "NAME" => name, "VALUE" => value }
1590: else
1591: name["TYPE"] = "hidden"
1592: name
1593: end
1594: input(attributes)
1595: 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 1639
1639: def html(attributes = {}) # :yield:
1640: if nil == attributes
1641: attributes = {}
1642: elsif "PRETTY" == attributes
1643: attributes = { "PRETTY" => true }
1644: end
1645: pretty = attributes.delete("PRETTY")
1646: pretty = " " if true == pretty
1647: buf = ""
1648:
1649: if attributes.has_key?("DOCTYPE")
1650: if attributes["DOCTYPE"]
1651: buf += attributes.delete("DOCTYPE")
1652: else
1653: attributes.delete("DOCTYPE")
1654: end
1655: else
1656: buf += doctype
1657: end
1658:
1659: if block_given?
1660: buf += super(attributes){ yield }
1661: else
1662: buf += super(attributes)
1663: end
1664:
1665: if pretty
1666: CGI::pretty(buf, pretty)
1667: else
1668: buf
1669: end
1670:
1671: 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 1688
1688: def image_button(src = "", name = nil, alt = nil)
1689: attributes = if src.kind_of?(String)
1690: { "TYPE" => "image", "SRC" => src, "NAME" => name,
1691: "ALT" => alt }
1692: else
1693: src["TYPE"] = "image"
1694: src["SRC"] ||= ""
1695: src
1696: end
1697: input(attributes)
1698: 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 1714
1714: def img(src = "", alt = "", width = nil, height = nil)
1715: attributes = if src.kind_of?(String)
1716: { "SRC" => src, "ALT" => alt }
1717: else
1718: src
1719: end
1720: attributes["WIDTH"] = width.to_s if width
1721: attributes["HEIGHT"] = height.to_s if height
1722: super(attributes)
1723: 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 1740
1740: def multipart_form(action = nil, enctype = "multipart/form-data")
1741: attributes = if action == nil
1742: { "METHOD" => "post", "ENCTYPE" => enctype }
1743: elsif action.kind_of?(String)
1744: { "METHOD" => "post", "ACTION" => action,
1745: "ENCTYPE" => enctype }
1746: else
1747: unless action.has_key?("METHOD")
1748: action["METHOD"] = "post"
1749: end
1750: unless action.has_key?("ENCTYPE")
1751: action["ENCTYPE"] = enctype
1752: end
1753: action
1754: end
1755: if block_given?
1756: form(attributes){ yield }
1757: else
1758: form(attributes)
1759: end
1760: 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 1782
1782: def password_field(name = "", value = nil, size = 40, maxlength = nil)
1783: attributes = if name.kind_of?(String)
1784: { "TYPE" => "password", "NAME" => name,
1785: "VALUE" => value, "SIZE" => size.to_s }
1786: else
1787: name["TYPE"] = "password"
1788: name
1789: end
1790: attributes["MAXLENGTH"] = maxlength.to_s if maxlength
1791: input(attributes)
1792: 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 1837
1837: def popup_menu(name = "", *values)
1838:
1839: if name.kind_of?(Hash)
1840: values = name["VALUES"]
1841: size = name["SIZE"].to_s if name["SIZE"]
1842: multiple = name["MULTIPLE"]
1843: name = name["NAME"]
1844: else
1845: size = nil
1846: multiple = nil
1847: end
1848:
1849: select({ "NAME" => name, "SIZE" => size,
1850: "MULTIPLE" => multiple }){
1851: values.collect{|value|
1852: if value.kind_of?(String)
1853: option({ "VALUE" => value }){ value }
1854: else
1855: if value[value.size - 1] == true
1856: option({ "VALUE" => value[0], "SELECTED" => true }){
1857: value[value.size - 2]
1858: }
1859: else
1860: option({ "VALUE" => value[0] }){
1861: value[value.size - 1]
1862: }
1863: end
1864: end
1865: }.to_s
1866: }
1867:
1868: 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 1886
1886: def radio_button(name = "", value = nil, checked = nil)
1887: attributes = if name.kind_of?(String)
1888: { "TYPE" => "radio", "NAME" => name,
1889: "VALUE" => value, "CHECKED" => checked }
1890: else
1891: name["TYPE"] = "radio"
1892: name
1893: end
1894: input(attributes)
1895: 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 1925
1925: def radio_group(name = "", *values)
1926: if name.kind_of?(Hash)
1927: values = name["VALUES"]
1928: name = name["NAME"]
1929: end
1930: values.collect{|value|
1931: if value.kind_of?(String)
1932: radio_button(name, value) + value
1933: else
1934: if value[value.size - 1] == true
1935: radio_button(name, value[0], true) +
1936: value[value.size - 2]
1937: else
1938: radio_button(name, value[0]) +
1939: value[value.size - 1]
1940: end
1941: end
1942: }.to_s
1943: 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 1960
1960: def reset(value = nil, name = nil)
1961: attributes = if (not value) or value.kind_of?(String)
1962: { "TYPE" => "reset", "VALUE" => value, "NAME" => name }
1963: else
1964: value["TYPE"] = "reset"
1965: value
1966: end
1967: input(attributes)
1968: 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 1990
1990: def submit(value = nil, name = nil)
1991: attributes = if (not value) or value.kind_of?(String)
1992: { "TYPE" => "submit", "VALUE" => value, "NAME" => name }
1993: else
1994: value["TYPE"] = "submit"
1995: value
1996: end
1997: input(attributes)
1998: 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 2022
2022: def text_field(name = "", value = nil, size = 40, maxlength = nil)
2023: attributes = if name.kind_of?(String)
2024: { "TYPE" => "text", "NAME" => name, "VALUE" => value,
2025: "SIZE" => size.to_s }
2026: else
2027: name["TYPE"] = "text"
2028: name
2029: end
2030: attributes["MAXLENGTH"] = maxlength.to_s if maxlength
2031: input(attributes)
2032: 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 2048
2048: def textarea(name = "", cols = 70, rows = 10) # :yield:
2049: attributes = if name.kind_of?(String)
2050: { "NAME" => name, "COLS" => cols.to_s,
2051: "ROWS" => rows.to_s }
2052: else
2053: name
2054: end
2055: if block_given?
2056: super(attributes){ yield }
2057: else
2058: super(attributes)
2059: end
2060: end