Sha256: b3c11eb2d80c5466bf04a9b120f6292d508da350f5b5ac705a845dbbce220ebe

Contents?: true

Size: 586 Bytes

Versions: 1

Compression:

Stored size: 586 Bytes

Contents

module Crystal
  class Tag < Struct.new(:name, :value)
    def name_key
      name.starts_with?('og:') ? :property : :name
    end

    def value_for_context(context)
      case
      when asset?
        context.send(asset_path_method, value)
      when value.acts_like?(:time)
        value.iso8601
      when value.acts_like?(:date)
        value.strftime('%Y-%m-%d')
      else
        value
      end
    end

    private

    def asset?
      %w{image audio video}.find{|type| name =~ /\b#{type}(:url)?$/}
    end

    def asset_path_method
      "#{asset?}_url"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
crystalmeta-1.0.0 lib/crystal/tag.rb