1
0

Faster Tagz

This commit is contained in:
2013-12-15 04:06:34 +07:00
parent 47d5ab67a0
commit e031b29205
9 changed files with 167 additions and 150 deletions
+22 -20
View File
@@ -2,30 +2,32 @@ module Workbench
module Wrappers
class Tagz < Base
def initialize path
@tpl = File.read(path)
@context = Context.new
require path
if path.end_with?('small.rb')
@tpl = TagzTemplates::Small.new
else
@tpl = TagzTemplates::Big.new
end
end
def render context, args = {}
@context.with_args(args).instance_eval(tpl)
end
class Context
include ::Tagz
def with_args args
@args = args
self
end
def method_missing method, *args
if @args.key?(method)
@args[method]
else
super
end
end
@tpl.with_args(args).render
end
end
end
end
module TagzTemplates
class Base
include Tagz
def with_args args
args.each do |key, val|
instance_variable_set(:"@#{key}", val)
end
self
end
end
end