Class Hpricot::Elem
In: lib/haml/html.rb
Parent: Object
Haml::HTML::Node BaseEle Comment XMLDecl Doc CData Elem DocType lib/haml/html.rb Node Hpricot dot/m_10_0.png

@see Hpricot

Methods

Public Instance methods

@see Haml::HTML::Node#to_haml

[Source]

     # File lib/haml/html.rb, line 173
173:       def to_haml(tabs, options)
174:         output = "#{tabulate(tabs)}"
175:         if options[:rhtml] && name[0...5] == 'haml:'
176:           return output + send("haml_tag_#{name[5..-1]}", CGI.unescapeHTML(self.inner_text))
177:         end
178: 
179:         output += "%#{name}" unless name == 'div' &&
180:           (static_id?(options) || static_classname?(options))
181: 
182:         if attr_hash
183:           if static_id?(options)
184:             output += "##{attr_hash['id']}"
185:             remove_attribute('id')
186:           end
187:           if static_classname?(options)
188:             attr_hash['class'].split(' ').each { |c| output += ".#{c}" }
189:             remove_attribute('class')
190:           end
191:           output += haml_attributes(options) if attr_hash.length > 0
192:         end
193: 
194:         (self.children || []).inject(output + "\n") do |output, child|
195:           output + child.to_haml(tabs + 1, options)
196:         end
197:       end

Private Instance methods

[Source]

     # File lib/haml/html.rb, line 228
228:       def dynamic_attribute?(name, options)
229:         options[:rhtml] and dynamic_attributes.key?(name)
230:       end

[Source]

     # File lib/haml/html.rb, line 201
201:       def dynamic_attributes
202:         @dynamic_attributes ||= begin
203:           Haml::Util.map_hash(attr_hash) do |name, value|
204:             next if value.empty?
205:             full_match = nil
206:             ruby_value = value.gsub(%r{<haml:loud>\s*(.+?)\s*</haml:loud>}) do
207:               full_match = $`.empty? && $'.empty?
208:               CGI.unescapeHTML(full_match ? $1: "\#{#{$1}}")
209:             end
210:             next if ruby_value == value
211:             [name, full_match ? ruby_value : %("#{ruby_value}")]
212:           end
213:         end
214:       end

Returns a string representation of an attributes hash that‘s prettier than that produced by Hash#inspect

[Source]

     # File lib/haml/html.rb, line 242
242:       def haml_attributes(options)
243:         attrs = attr_hash.map do |name, value|
244:           value = dynamic_attribute?(name, options) ? dynamic_attributes[name] : value.inspect
245:           name = name.index(/\W/) ? name.inspect : ":#{name}"
246:           "#{name} => #{value}"
247:         end
248:         "{ #{attrs.join(', ')} }"
249:       end

[Source]

     # File lib/haml/html.rb, line 216
216:       def haml_tag_loud(text)
217:         "= #{text.gsub(/\n\s*/, ' ').strip}\n"
218:       end

[Source]

     # File lib/haml/html.rb, line 220
220:       def haml_tag_silent(text)
221:         text.split("\n").map { |line| "- #{line.strip}\n" }.join
222:       end

[Source]

     # File lib/haml/html.rb, line 224
224:       def static_attribute?(name, options)
225:         attr_hash[name] and !dynamic_attribute?(name, options)
226:       end

[Source]

     # File lib/haml/html.rb, line 236
236:       def static_classname?(options)
237:         static_attribute?('class', options)
238:       end

[Source]

     # File lib/haml/html.rb, line 232
232:       def static_id?(options)
233:         static_attribute?('id', options)
234:       end

[Validate]