Sha256: c0c0947b2c01a5150ed254fbb4fc73554126d0f3c41264406f4937d4a553598c

Contents?: true

Size: 1005 Bytes

Versions: 2

Compression:

Stored size: 1005 Bytes

Contents

require 'mustache'

module Alephant
  module Preview
    module Template
      class Base < Mustache
        attr_accessor :regions

        def initialize(regions, template_location)
          @regions = regions
          self.template_file = template_location
        end

        def static_host
          ENV['STATIC_HOST'] || 'localhost:8000'
        end

        def method_missing(name, *args, &block)
          return super unless respond_to? name.to_s
          region @regions[name.to_s]
        end

        def respond_to?(method)
          valid_regions.include? method.to_s
        end

        def region(components)
          if components.is_a?(Array)
            components.join
          else
            components
          end
        end

        def valid_regions
          template.tokens.find_all do |token|
            token.is_a?(Array) && token[0] == :mustache
          end.map do |token|
            token[2][2][0].to_s
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
alephant-preview-0.6.1 lib/alephant/preview/template/base.rb
alephant-preview-0.6.0 lib/alephant/preview/template/base.rb