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 1322 1322: def a(href = "") # :yield: 1323: attributes = if href.kind_of?(String) 1324: { "HREF" => href } 1325: else 1326: href 1327: end 1328: if block_given? 1329: super(attributes){ yield } 1330: else 1331: super(attributes) 1332: end 1333: 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 1344 1344: def base(href = "") # :yield: 1345: attributes = if href.kind_of?(String) 1346: { "HREF" => href } 1347: else 1348: href 1349: end 1350: if block_given? 1351: super(attributes){ yield } 1352: else 1353: super(attributes) 1354: end 1355: 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 1367 1367: def blockquote(cite = nil) # :yield: 1368: attributes = if cite.kind_of?(String) 1369: { "CITE" => cite } 1370: else 1371: cite or "" 1372: end 1373: if block_given? 1374: super(attributes){ yield } 1375: else 1376: super(attributes) 1377: end 1378: 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 1391 1391: def caption(align = nil) # :yield: 1392: attributes = if align.kind_of?(String) 1393: { "ALIGN" => align } 1394: else 1395: align or "" 1396: end 1397: if block_given? 1398: super(attributes){ yield } 1399: else 1400: super(attributes) 1401: end 1402: 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 1421 1421: def checkbox(name = "", value = nil, checked = nil) 1422: attributes = if name.kind_of?(String) 1423: { "TYPE" => "checkbox", "NAME" => name, 1424: "VALUE" => value, "CHECKED" => checked } 1425: else 1426: name["TYPE"] = "checkbox" 1427: name 1428: end 1429: input(attributes) 1430: 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 1475 1475: def checkbox_group(name = "", *values) 1476: if name.kind_of?(Hash) 1477: values = name["VALUES"] 1478: name = name["NAME"] 1479: end 1480: values.collect{|value| 1481: if value.kind_of?(String) 1482: checkbox(name, value) + value 1483: else 1484: if value[value.size - 1] == true 1485: checkbox(name, value[0], true) + 1486: value[value.size - 2] 1487: else 1488: checkbox(name, value[0]) + 1489: value[value.size - 1] 1490: end 1491: end 1492: }.to_s 1493: 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 1517 1517: def file_field(name = "", size = 20, maxlength = nil) 1518: attributes = if name.kind_of?(String) 1519: { "TYPE" => "file", "NAME" => name, 1520: "SIZE" => size.to_s } 1521: else 1522: name["TYPE"] = "file" 1523: name 1524: end 1525: attributes["MAXLENGTH"] = maxlength.to_s if maxlength 1526: input(attributes) 1527: 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 1551 1551: def form(method = "post", action = script_name, enctype = "application/x-www-form-urlencoded") 1552: attributes = if method.kind_of?(String) 1553: { "METHOD" => method, "ACTION" => action, 1554: "ENCTYPE" => enctype } 1555: else 1556: unless method.has_key?("METHOD") 1557: method["METHOD"] = "post" 1558: end 1559: unless method.has_key?("ENCTYPE") 1560: method["ENCTYPE"] = enctype 1561: end 1562: method 1563: end 1564: if block_given? 1565: body = yield 1566: else 1567: body = "" 1568: end 1569: if @output_hidden 1570: body += @output_hidden.collect{|k,v| 1571: "<INPUT TYPE=\"HIDDEN\" NAME=\"#{k}\" VALUE=\"#{v}\">" 1572: }.to_s 1573: end 1574: super(attributes){body} 1575: 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 1592 1592: def hidden(name = "", value = nil) 1593: attributes = if name.kind_of?(String) 1594: { "TYPE" => "hidden", "NAME" => name, "VALUE" => value } 1595: else 1596: name["TYPE"] = "hidden" 1597: name 1598: end 1599: input(attributes) 1600: 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 1644 1644: def html(attributes = {}) # :yield: 1645: if nil == attributes 1646: attributes = {} 1647: elsif "PRETTY" == attributes 1648: attributes = { "PRETTY" => true } 1649: end 1650: pretty = attributes.delete("PRETTY") 1651: pretty = " " if true == pretty 1652: buf = "" 1653: 1654: if attributes.has_key?("DOCTYPE") 1655: if attributes["DOCTYPE"] 1656: buf += attributes.delete("DOCTYPE") 1657: else 1658: attributes.delete("DOCTYPE") 1659: end 1660: else 1661: buf += doctype 1662: end 1663: 1664: if block_given? 1665: buf += super(attributes){ yield } 1666: else 1667: buf += super(attributes) 1668: end 1669: 1670: if pretty 1671: CGI::pretty(buf, pretty) 1672: else 1673: buf 1674: end 1675: 1676: 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 1693 1693: def image_button(src = "", name = nil, alt = nil) 1694: attributes = if src.kind_of?(String) 1695: { "TYPE" => "image", "SRC" => src, "NAME" => name, 1696: "ALT" => alt } 1697: else 1698: src["TYPE"] = "image" 1699: src["SRC"] ||= "" 1700: src 1701: end 1702: input(attributes) 1703: 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 1719 1719: def img(src = "", alt = "", width = nil, height = nil) 1720: attributes = if src.kind_of?(String) 1721: { "SRC" => src, "ALT" => alt } 1722: else 1723: src 1724: end 1725: attributes["WIDTH"] = width.to_s if width 1726: attributes["HEIGHT"] = height.to_s if height 1727: super(attributes) 1728: 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 1745 1745: def multipart_form(action = nil, enctype = "multipart/form-data") 1746: attributes = if action == nil 1747: { "METHOD" => "post", "ENCTYPE" => enctype } 1748: elsif action.kind_of?(String) 1749: { "METHOD" => "post", "ACTION" => action, 1750: "ENCTYPE" => enctype } 1751: else 1752: unless action.has_key?("METHOD") 1753: action["METHOD"] = "post" 1754: end 1755: unless action.has_key?("ENCTYPE") 1756: action["ENCTYPE"] = enctype 1757: end 1758: action 1759: end 1760: if block_given? 1761: form(attributes){ yield } 1762: else 1763: form(attributes) 1764: end 1765: 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 1787 1787: def password_field(name = "", value = nil, size = 40, maxlength = nil) 1788: attributes = if name.kind_of?(String) 1789: { "TYPE" => "password", "NAME" => name, 1790: "VALUE" => value, "SIZE" => size.to_s } 1791: else 1792: name["TYPE"] = "password" 1793: name 1794: end 1795: attributes["MAXLENGTH"] = maxlength.to_s if maxlength 1796: input(attributes) 1797: 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 1842 1842: def popup_menu(name = "", *values) 1843: 1844: if name.kind_of?(Hash) 1845: values = name["VALUES"] 1846: size = name["SIZE"].to_s if name["SIZE"] 1847: multiple = name["MULTIPLE"] 1848: name = name["NAME"] 1849: else 1850: size = nil 1851: multiple = nil 1852: end 1853: 1854: select({ "NAME" => name, "SIZE" => size, 1855: "MULTIPLE" => multiple }){ 1856: values.collect{|value| 1857: if value.kind_of?(String) 1858: option({ "VALUE" => value }){ value } 1859: else 1860: if value[value.size - 1] == true 1861: option({ "VALUE" => value[0], "SELECTED" => true }){ 1862: value[value.size - 2] 1863: } 1864: else 1865: option({ "VALUE" => value[0] }){ 1866: value[value.size - 1] 1867: } 1868: end 1869: end 1870: }.to_s 1871: } 1872: 1873: 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 1891 1891: def radio_button(name = "", value = nil, checked = nil) 1892: attributes = if name.kind_of?(String) 1893: { "TYPE" => "radio", "NAME" => name, 1894: "VALUE" => value, "CHECKED" => checked } 1895: else 1896: name["TYPE"] = "radio" 1897: name 1898: end 1899: input(attributes) 1900: 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 1930 1930: def radio_group(name = "", *values) 1931: if name.kind_of?(Hash) 1932: values = name["VALUES"] 1933: name = name["NAME"] 1934: end 1935: values.collect{|value| 1936: if value.kind_of?(String) 1937: radio_button(name, value) + value 1938: else 1939: if value[value.size - 1] == true 1940: radio_button(name, value[0], true) + 1941: value[value.size - 2] 1942: else 1943: radio_button(name, value[0]) + 1944: value[value.size - 1] 1945: end 1946: end 1947: }.to_s 1948: 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 1965 1965: def reset(value = nil, name = nil) 1966: attributes = if (not value) or value.kind_of?(String) 1967: { "TYPE" => "reset", "VALUE" => value, "NAME" => name } 1968: else 1969: value["TYPE"] = "reset" 1970: value 1971: end 1972: input(attributes) 1973: 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 1995 1995: def submit(value = nil, name = nil) 1996: attributes = if (not value) or value.kind_of?(String) 1997: { "TYPE" => "submit", "VALUE" => value, "NAME" => name } 1998: else 1999: value["TYPE"] = "submit" 2000: value 2001: end 2002: input(attributes) 2003: 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 2027 2027: def text_field(name = "", value = nil, size = 40, maxlength = nil) 2028: attributes = if name.kind_of?(String) 2029: { "TYPE" => "text", "NAME" => name, "VALUE" => value, 2030: "SIZE" => size.to_s } 2031: else 2032: name["TYPE"] = "text" 2033: name 2034: end 2035: attributes["MAXLENGTH"] = maxlength.to_s if maxlength 2036: input(attributes) 2037: 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 2053 2053: def textarea(name = "", cols = 70, rows = 10) # :yield: 2054: attributes = if name.kind_of?(String) 2055: { "NAME" => name, "COLS" => cols.to_s, 2056: "ROWS" => rows.to_s } 2057: else 2058: name 2059: end 2060: if block_given? 2061: super(attributes){ yield } 2062: else 2063: super(attributes) 2064: end 2065: end