# @Opulent module Opulent # @Compiler class Compiler # Generate the code for a while control structure # # @param node [Array] Node code generation data # @param indent [Fixnum] Size of the indentation to be added # @param context [Context] Processing environment data # def doctype_node(node, indent, context) indentation = " " * indent value = case node[@value] when :"", :"html", :"5" "!DOCTYPE html" when :"1.1" '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"' when :strict '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"' when :frameset '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"' when :mobile '!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd"' when :basic '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"' when :transitional '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"' when :xml '?xml version="1.0" encoding="utf-8" ?' when :'xml ISO-8859-1' '?xml version="1.0" encoding="iso-8859-1" ?' end doctype_tag = "#{indentation}<#{value}>\n" @node_stack << :doctype @code += doctype_tag end end end