Sha256: edfa46a419380c3a14514d837f4a7c5b6c7a1624a76b26e68d14dc184956dd31

Contents?: true

Size: 710 Bytes

Versions: 1

Compression:

Stored size: 710 Bytes

Contents

require 'mustache'

module Juggalo
  class Layout < Mustache
    attr_accessor :regions

    def initialize(template_location)
      @regions={}
      self.template_file = template_location
    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)
      components.map { |c| c.present }.join unless components.nil?
    end

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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
juggalo-0.0.2 lib/juggalo/layout.rb