class Haml::Buffer
this hack looks at active-record object's :html_schema_type field and adds itemscope, itemid and itemtype to element example:
> <article class=“post” itemscope itemtype=“schema.org/BlogPosting” itemid=“1”>¶ ↑
> <section itemscope itemtype=“schema.org/Blog”>¶ ↑
%section[Mida(:Blog), :sexjokes]
> <section itemscope itemtype=“schema.org/Blog/SexJokes”>¶ ↑
according to “Extension Mechanism” at schema.org/docs/extension.html
%span Hello
> <span itemprop=“title”>Hello</span>¶ ↑
Public Instance Methods
parse_object_ref(ref)
click to toggle source
this methods calls then you pass %tag[object1, object2] ref argument is array
# File lib/green_monkey/ext/haml.rb, line 24 def parse_object_ref(ref) options = {} ref.each do |obj| next if obj == "local-variable" if self.class.respond_to?(:merge_attrs) self.class.merge_attrs(options, process_object_ref(obj)) else Haml::AttributeBuilder.merge_attributes!(options, process_object_ref(obj)) end end options end
process_object_ref(obj)
click to toggle source
# File lib/green_monkey/ext/haml.rb, line 37 def process_object_ref(obj) return {} if !obj if obj.is_a?(Symbol) # symbol => "itemprop" attribute return {'itemprop' => obj.to_s} elsif obj.kind_of?(Mida::Vocabulary) # Mida::Vocabulary => itemprop and itemtype return {'itemscope' => true, 'itemtype' => obj.itemtype.source} elsif obj.is_a?(String) return {'class' => obj} else options = {} options['class'] = obj.respond_to?(:haml_object_ref) ? obj.haml_object_ref : underscore(obj.class) options['id'] = "#{options['class']}_#{obj.id || 'new'}" if obj.respond_to?(:id) # my hack for microdata attributes if obj.respond_to?(:html_schema_type) options['itemscope'] = true options['itemid'] = obj.has_attribute?(:slug) ? obj.slug : obj.id if obj.html_schema_type.kind_of?(Mida::Vocabulary) options['itemtype'] = obj.html_schema_type.itemtype.source else #raise "No vocabulary found (#{obj.html_schema_type})" unless Mida::Vocabulary.find(obj.html_schema_type) options['itemtype'] = obj.html_schema_type end end return options end end