class Metamagic::Renderer
Constants
- DEFAULT_SEPARATOR
- DEFAULT_TAG_TYPES
Attributes
context[R]
separator[W]
site[W]
title_template[W]
Public Class Methods
new(context)
click to toggle source
# File lib/metamagic/renderer.rb, line 32 def initialize(context) @context = context end
register_tag_type(prefix, klass)
click to toggle source
# File lib/metamagic/renderer.rb, line 20 def register_tag_type(prefix, klass) tag_types[prefix.to_sym] = klass end
tag_type_for_key(key)
click to toggle source
# File lib/metamagic/renderer.rb, line 24 def tag_type_for_key(key) prefix = key.split(":").first tag_types[prefix.to_sym] || MetaTag end
tag_types()
click to toggle source
# File lib/metamagic/renderer.rb, line 16 def tag_types @tag_types ||= DEFAULT_TAG_TYPES.dup end
Public Instance Methods
add(hash = {}, enable_templates = false)
click to toggle source
# File lib/metamagic/renderer.rb, line 40 def add(hash = {}, enable_templates = false) raise ArgumentError, "Defining meta properties via arrays has been removed in Metamagic v3.0 and replaced by some pretty helpers. Please see the readme at https://github.com/lassebunk/metamagic for more info." if hash.is_a?(Array) transform_hash(hash).each do |key, value| if enable_templates && is_template?(value) add_template key, value value = nil end klass = self.class.tag_type_for_key(key) tag = if klass.is_a?(Proc) CustomTag.new(self, key, value, klass) else klass.new(self, key, value) end tags << tag unless tags.include?(tag) end end
add_template(key, value)
click to toggle source
# File lib/metamagic/renderer.rb, line 63 def add_template(key, value) templates[key] = value end
has_tag_type?(prefix)
click to toggle source
# File lib/metamagic/renderer.rb, line 71 def has_tag_type?(prefix) self.class.tag_types.has_key?(prefix) end
method_missing(*args)
click to toggle source
# File lib/metamagic/renderer.rb, line 97 def method_missing(*args) context.send(*args) end
render()
click to toggle source
# File lib/metamagic/renderer.rb, line 93 def render tags.sort.map(&:to_html).compact.join("\n").html_safe end
separator()
click to toggle source
# File lib/metamagic/renderer.rb, line 87 def separator @separator ||= DEFAULT_SEPARATOR end
site()
click to toggle source
# File lib/metamagic/renderer.rb, line 81 def site @site or raise "Metamagic site not set. Please use `metamagic site: 'My Site'` to set it." end
template_for(key)
click to toggle source
# File lib/metamagic/renderer.rb, line 67 def template_for(key) templates[key] end
templates()
click to toggle source
# File lib/metamagic/renderer.rb, line 59 def templates @templates ||= {} end
title_template()
click to toggle source
# File lib/metamagic/renderer.rb, line 75 def title_template @title_template ||= ":title" end
Private Instance Methods
is_template?(value)
click to toggle source
# File lib/metamagic/renderer.rb, line 103 def is_template?(value) Array(value).any? do |val| val.is_a?(Proc) || val.is_a?(Symbol) || val =~ /\A:\w+/ end end
transform_hash(hash, path = "")
click to toggle source
Transforms a nested hash into meta property keys.
# File lib/metamagic/renderer.rb, line 112 def transform_hash(hash, path = "") hash.each_with_object({}) do |(k, v), ret| key = path + k.to_s if v.is_a?(Hash) ret.merge! transform_hash(v, "#{key}:") else ret[key] = v end end end