class Metamagic::Tag
Attributes
context[R]
key[R]
value[R]
Public Class Methods
new(context, key, value)
click to toggle source
# File lib/metamagic/tag.rb, line 5 def initialize(context, key, value) @context, @key, @value = context, key.to_s, value @key = @key.gsub /^[^:]+:/, "" if remove_prefix? end
Public Instance Methods
<=>(other)
click to toggle source
# File lib/metamagic/tag.rb, line 47 def <=>(other) [sort_order, self.class.name] <=> [other.sort_order, other.class.name] end
==(other)
click to toggle source
# File lib/metamagic/tag.rb, line 43 def ==(other) self.class == other.class && self.key == other.key end
interpolated_values()
click to toggle source
# File lib/metamagic/tag.rb, line 26 def interpolated_values @interpolated_values ||= Array(template).map do |template| case template when Proc instance_exec(&template) when Symbol send(template) when String ERB::Util.html_escape(template).gsub(/:\w+/) do |key| ERB::Util.html_escape(send(key[1..-1])) end.html_safe else raise "Unknown template type #{template.class}." end end.flatten.compact.uniq.map { |value| ERB::Util.html_escape(value) } end
method_missing(method, *args, &block)
click to toggle source
# File lib/metamagic/tag.rb, line 51 def method_missing(method, *args, &block) return value if method.to_s == key.gsub(":", "_") # When calling e.g. `og_image`. Used for interpolating values. context.send(method, *args, &block) end
remove_prefix?()
click to toggle source
# File lib/metamagic/tag.rb, line 18 def remove_prefix? true end
sort_order()
click to toggle source
# File lib/metamagic/tag.rb, line 14 def sort_order 1000 end
template()
click to toggle source
# File lib/metamagic/tag.rb, line 22 def template @template ||= template_for(key) || :value end
to_html()
click to toggle source
# File lib/metamagic/tag.rb, line 10 def to_html raise "#{self.class.name}#to_html must be overridden to render tag" end