Sha256: 88447033e6b80e6dafd08b660d19bc6bc08f5ef0ec0a5dfa4c2aaee9c4f8f8db

Contents?: true

Size: 1.76 KB

Versions: 19

Compression:

Stored size: 1.76 KB

Contents

require_relative "template_support"

module Onebox
  class Layout < Mustache
    include TemplateSupport

    VERSION = "1.0.0"

    attr_reader :cache
    attr_reader :record
    attr_reader :view

    def initialize(name, record, cache)
      @cache = cache
      @record = Onebox::Helpers.symbolize_keys(record)

      # Fix any relative paths
      if @record[:image] && @record[:image] =~ /^\/[^\/]/
        @record[:image] = "#{uri.scheme}://#{uri.host}/#{@record[:image]}"
      end

      @md5 = Digest::MD5.new
      @view = View.new(name, record)
      @template_name = "_layout"
      @template_path = load_paths.last
    end

    def to_html
      result = cache.fetch(checksum) { render(details) }
      cache[checksum] = result if cache.respond_to?(:key?)
      result
    end

    private

    def uri
      @uri = URI(link)
    end


    def checksum
      @md5.hexdigest("#{VERSION}:#{link}")
    end

    def link
      record[:link]
    end

    def domain
      return record[:domain] if record[:domain]
      URI(link || '').host
    end

    def repository_path
      record[:repository_path]
    end

    def twitter_label1
      record[:twitter_label1]
    end

    def twitter_data1
      record[:twitter_data1]
    end

    def twitter_label2
      record[:twitter_label2]
    end

    def twitter_data2
      record[:twitter_data2]
    end

    def details
      {
        link: record[:link],
        title: record[:title],
        domain: domain,
        repository_path: repository_path,
        twitter_label1: record[:twitter_label1],
        twitter_data1: record[:twitter_data1],
        twitter_label2: record[:twitter_label2],
        twitter_data2: record[:twitter_data2],
        subname: view.template_name,
        view: view.to_html
      }
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
onebox-1.5.50 lib/onebox/layout.rb
onebox-1.5.49 lib/onebox/layout.rb
onebox-1.5.48 lib/onebox/layout.rb
onebox-1.5.47 lib/onebox/layout.rb
onebox-1.5.45 lib/onebox/layout.rb
onebox-1.5.44 lib/onebox/layout.rb
onebox-1.5.43 lib/onebox/layout.rb
onebox-1.5.42 lib/onebox/layout.rb
onebox-1.5.41 lib/onebox/layout.rb
onebox-1.5.40 lib/onebox/layout.rb
onebox-1.5.39 lib/onebox/layout.rb
onebox-1.5.38 lib/onebox/layout.rb
onebox-1.5.37 lib/onebox/layout.rb
onebox-1.5.36 lib/onebox/layout.rb
onebox-1.5.35 lib/onebox/layout.rb
onebox-1.5.34 lib/onebox/layout.rb
onebox-1.5.33 lib/onebox/layout.rb
onebox-1.5.32 lib/onebox/layout.rb
onebox-1.5.31 lib/onebox/layout.rb