# File lib/hpricot/builder.rb, line 41 41: def add_child ele 42: ele.parent = self 43: self.children ||= [] 44: self.children << ele 45: ele 46: end
# File lib/hpricot/builder.rb, line 120 120: def build(*a, &b) 121: Hpricot.build(*a, &b) 122: end
# File lib/hpricot/builder.rb, line 148 148: def doctype(target, pub, sys) 149: add_child DocType.new(target, pub, sys) 150: end
Builds a head tag. Adds a meta tag inside with Content-Type set to text/html; charset=utf-8.
# File lib/hpricot/builder.rb, line 156 156: def head(*args, &block) 157: tag!(:head, *args) do 158: tag!(:meta, "http-equiv" => "Content-Type", "content" => "text/html; charset=utf-8") if @output_meta_tag 159: instance_eval(&block) 160: end 161: end
Every HTML tag method goes through an html_tag call. So, calling div is equivalent to calling html_tag(:div). All HTML tags in Hpricot’s list are given generated wrappers for this method.
If the @auto_validation setting is on, this method will check for many common mistakes which could lead to invalid XHTML.
# File lib/hpricot/builder.rb, line 130 130: def html_tag(sym, *args, &block) 131: if @auto_validation and @tagset.self_closing.include?(sym) and block 132: raise InvalidXhtmlError, "the `#{sym}' element is self-closing, please remove the block" 133: elsif args.empty? and block.nil? 134: CssProxy.new(self, sym) 135: else 136: tag!(sym, *args, &block) 137: end 138: end
Create a tag named tag. Other than the first argument which is the tag name, the arguments are the same as the tags implemented via method_missing.
# File lib/hpricot/builder.rb, line 63 63: def tag!(tag, *args, &block) 64: ele_id = nil 65: if @auto_validation and @tagset 66: if !@tagset.tagset.has_key?(tag) 67: raise InvalidXhtmlError, "no element `#{tag}' for #{tagset.doctype}" 68: elsif args.last.respond_to?(:to_hash) 69: attrs = args.last.to_hash 70: 71: if @tagset.forms.include?(tag) and attrs[:id] 72: attrs[:name] ||= attrs[:id] 73: end 74: 75: attrs.each do |k, v| 76: atname = k.to_s.downcase.intern 77: unless k =~ /:/ or @tagset.tagset[tag].include? atname 78: raise InvalidXhtmlError, "no attribute `#{k}' on #{tag} elements" 79: end 80: if atname == :id 81: ele_id = v.to_s 82: if @elements.has_key? ele_id 83: raise InvalidXhtmlError, "id `#{ele_id}' already used (id's must be unique)." 84: end 85: end 86: end 87: end 88: end 89: 90: # turn arguments into children or attributes 91: childs = [] 92: attrs = args.grep(Hash) 93: childs.concat((args - attrs).flatten.map do |x| 94: if x.respond_to? :to_html 95: Hpricot.make(x.to_html) 96: elsif x 97: Text.new(x.fast_xs) 98: end 99: end.flatten) 100: attrs = attrs.inject({}) do |hsh, ath| 101: ath.each do |k, v| 102: hsh[k] = v.to_s.fast_xs if v 103: end 104: hsh 105: end 106: 107: # create the element itself 108: tag = tag.to_s 109: f = Elem.new(tag, attrs, childs, ETag.new(tag)) 110: 111: # build children from the block 112: if block 113: build(f, &block) 114: end 115: 116: add_child f 117: f 118: end
Write a string to the HTML stream without escaping it.
# File lib/hpricot/builder.rb, line 54 54: def text(string) 55: add_child Text.new(string) 56: nil 57: end
Write a string to the HTML stream, making sure to escape it.
# File lib/hpricot/builder.rb, line 49 49: def text!(string) 50: add_child Text.new(string.fast_xs) 51: end
Builds an html tag with XHTML 1.0 Strict doctype instead.
# File lib/hpricot/builder.rb, line 172 172: def xhtml_strict(attrs = {}, &block) 173: # self.tagset = Hpricot::XHTMLStrict 174: xhtml_html(attrs, &block) 175: end
Builds an html tag. An XML 1.0 instruction and an XHTML 1.0 Transitional doctype are prepended. Also assumes :xmlns => "www.w3.org/1999/xhtml", :lang => "en".
# File lib/hpricot/builder.rb, line 166 166: def xhtml_transitional(attrs = {}, &block) 167: # self.tagset = Hpricot::XHTMLTransitional 168: xhtml_html(attrs, &block) 169: end
# File lib/hpricot/builder.rb, line 179 179: def xhtml_html(attrs = {}, &block) 180: instruct! if @output_xml_instruction 181: doctype(:html, *@@default[:tagset].doctype) 182: tag!(:html, @@default[:root_attributes].merge(attrs), &block) 183: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.