Sha256: 0a456096dc1507058e69f7bc228c4b04aaacbfcd9f2db9ac378eb4f464be3fe2
Contents?: true
Size: 1.09 KB
Versions: 2
Compression:
Stored size: 1.09 KB
Contents
require 'erb/view/version' require 'erb' require 'pathname' module Erb def root=(path) @root = Pathname.new(path).expand_path end def root @root ||= Pathname.new(__FILE__).join('../../lib/templates') end module_function :root, :root= module View def self.included(base) base.extend(ClassMethods) end module ClassMethods def template(name = nil) if name @template = name else @template end end def exposes(keys = nil) @exposes ||= [] if keys @exposes.concat(Array(keys)) else @exposes end end end def initialize self.class.exposes.each do |method| next if respond_to?(method) define_singleton_method(method) do @data.fetch(method) end end end def render(data = {}) @data = data erb(self.class.template.to_s).result(binding) end private def erb(template) ERB.new(File.read(root.join("#{template}.erb"))) end def root Erb.root end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
erb-view-0.2.0 | lib/erb/view.rb |
erb-view-0.1.0 | lib/erb/view.rb |