module Middleman::OGP::Helper
Public Class Methods
og_tag(key, obj = nil, prefix = 'og', &block)
click to toggle source
# File lib/middleman-ogp/extension.rb, line 135 def self.og_tag(key, obj = nil, prefix = 'og', &block) # rubocop:disable Metrics/MethodLength case key when String, Symbol key = [key] when Hash prefix = obj if obj obj = key key = [] end case obj when Hash obj.map do |k, v| og_tag(k.to_s.empty? ? key.dup : (key.dup << k.to_s), v, prefix, &block) end.join("\n") when Array obj.map do |v| og_tag(key, v, prefix, &block) end.join("\n") else if obj.respond_to?(:value) value = obj.value raise 'Unknown value' unless value.is_a?(Hash) value.map do |k, v| og_tag(k.to_s.empty? ? key.dup : (key.dup << k.to_s), v, prefix, &block) end.join("\n") else name = [prefix].concat(key).join(':') value = obj.to_s if Middleman::OGP::Helper.image_base_url && name == 'og:image' && !%r{^https?://}.match(value) value = URI.join(Middleman::OGP::Helper.image_base_url, value) end block.call name, value end end end