mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/cgi/html5.rb: Add html5 tag maker.
* lib/cgi/core.rb: ditto. [Feature #6637] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37077 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
4336caf204
commit
aeca965681
3 changed files with 68 additions and 3 deletions
|
@ -771,6 +771,7 @@ class CGI
|
||||||
# "html4":: HTML 4.0
|
# "html4":: HTML 4.0
|
||||||
# "html4Tr":: HTML 4.0 Transitional
|
# "html4Tr":: HTML 4.0 Transitional
|
||||||
# "html4Fr":: HTML 4.0 with Framesets
|
# "html4Fr":: HTML 4.0 with Framesets
|
||||||
|
# "html5":: HTML 5
|
||||||
#
|
#
|
||||||
# <tt>block</tt>::
|
# <tt>block</tt>::
|
||||||
# If provided, the block is called when an invalid encoding is
|
# If provided, the block is called when an invalid encoding is
|
||||||
|
@ -831,6 +832,11 @@ class CGI
|
||||||
extend Html4Fr
|
extend Html4Fr
|
||||||
element_init()
|
element_init()
|
||||||
extend HtmlExtension
|
extend HtmlExtension
|
||||||
|
when "html5"
|
||||||
|
require 'cgi/html'
|
||||||
|
extend Html5
|
||||||
|
element_init()
|
||||||
|
extend HtmlExtension
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -922,7 +922,7 @@ class CGI
|
||||||
|
|
||||||
# O O or - O
|
# O O or - O
|
||||||
for element in %w[ HTML BODY P DT DD LI OPTION THEAD TFOOT TBODY
|
for element in %w[ HTML BODY P DT DD LI OPTION THEAD TFOOT TBODY
|
||||||
COLGROUP TR TH TD HEAD]
|
COLGROUP TR TH TD HEAD ]
|
||||||
methods << <<-BEGIN + nO_element_def(element) + <<-END
|
methods << <<-BEGIN + nO_element_def(element) + <<-END
|
||||||
def #{element.downcase}(attributes = {})
|
def #{element.downcase}(attributes = {})
|
||||||
BEGIN
|
BEGIN
|
||||||
|
@ -1020,6 +1020,57 @@ class CGI
|
||||||
end
|
end
|
||||||
|
|
||||||
end # Html4Fr
|
end # Html4Fr
|
||||||
|
|
||||||
|
|
||||||
|
# Mixin module for HTML version 5 generation methods.
|
||||||
|
module Html5 # :nodoc:
|
||||||
|
|
||||||
|
# The DOCTYPE declaration for this version of HTML
|
||||||
|
def doctype
|
||||||
|
%|<!DOCTYPE HTML>|
|
||||||
|
end
|
||||||
|
|
||||||
|
# Initialise the HTML generation methods for this version.
|
||||||
|
def element_init
|
||||||
|
extend TagMaker
|
||||||
|
methods = ""
|
||||||
|
# - -
|
||||||
|
for element in %w[ SECTION NAV ARTICLE ASIDE HGROUP
|
||||||
|
FOOTER FIGURE FIGCAPTION S TIME U MARK RUBY BDI IFRAME
|
||||||
|
VIDEO AUDIO CANVAS DATALIST OUTPUT PROGRESS METER DETAILS
|
||||||
|
SUMMARY MENU DIALOG I B SMALL EM STRONG DFN CODE SAMP KBD
|
||||||
|
VAR CITE ABBR SUB SUP SPAN BDO ADDRESS DIV MAP OBJECT
|
||||||
|
H1 H2 H3 H4 H5 H6 PRE Q INS DEL DL OL UL LABEL SELECT
|
||||||
|
FIELDSET LEGEND BUTTON TABLE TITLE STYLE SCRIPT NOSCRIPT
|
||||||
|
TEXTAREA FORM A BLOCKQUOTE CAPTION ]
|
||||||
|
methods += <<-BEGIN + nn_element_def(element) + <<-END
|
||||||
|
def #{element.downcase}(attributes = {})
|
||||||
|
BEGIN
|
||||||
|
end
|
||||||
|
END
|
||||||
|
end
|
||||||
|
|
||||||
|
# - O EMPTY
|
||||||
|
for element in %w[ IMG BASE BR AREA LINK PARAM HR INPUT COL META
|
||||||
|
COMMAND EMBED KEYGEN SOURCE TRACK WBR ]
|
||||||
|
methods += <<-BEGIN + nOE_element_def(element) + <<-END
|
||||||
|
def #{element.downcase}(attributes = {})
|
||||||
|
BEGIN
|
||||||
|
end
|
||||||
|
END
|
||||||
|
end
|
||||||
|
|
||||||
|
# O O or - O
|
||||||
|
for element in %w[ HTML HEAD BODY P DT DD LI OPTION THEAD TFOOT TBODY
|
||||||
|
OPTGROUP COLGROUP RT RP TR TH TD ]
|
||||||
|
methods += <<-BEGIN + nO_element_def(element) + <<-END
|
||||||
|
def #{element.downcase}(attributes = {})
|
||||||
|
BEGIN
|
||||||
|
end
|
||||||
|
END
|
||||||
|
end
|
||||||
|
eval(methods)
|
||||||
|
end
|
||||||
|
|
||||||
|
end # Html5
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -353,6 +353,14 @@ class CGICoreTest < Test::Unit::TestCase
|
||||||
cgi = CGI.new('html4Fr')
|
cgi = CGI.new('html4Fr')
|
||||||
expected = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">'
|
expected = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">'
|
||||||
assert_equal(expected, cgi.doctype)
|
assert_equal(expected, cgi.doctype)
|
||||||
|
## html5
|
||||||
|
cgi = CGI.new('html5')
|
||||||
|
expected = '<!DOCTYPE HTML>'
|
||||||
|
assert_equal(expected, cgi.doctype)
|
||||||
|
# cgi.header not broken
|
||||||
|
expected = "Content-Type: text/html\r\n\r\n"
|
||||||
|
actual = cgi.header
|
||||||
|
assert_equal(expected, actual)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue