Ht is a project mainly written in Ruby, based on the MIT license.
Cascading Hash Templates for Ruby
= HT
Simple templating for ruby hashes
= Example Usage
cascade = HT::Cascade.new(:my_cascade) do
base do |data|
set_value :d, "abc"
end
layer :path_share do |data|
set :a, data[:a] # set => set_value
s :b, data[:b] # s => set_value
end
layer :path_1_mid, :path_share do |data|
set_value :a, data[:b]
end
layer :path_2_mid, :path_share do |data|
set_value get_value(:a), :a
set_value get(:b), :b # get => get_value
end
layer :path_1_all, :path_1_mid do |data|
set_value :b, data[:a]
set_value :c, get_value(:a) + g(:b) # g => get_value
end
layer :path_2_all, :path_2_mid do |data|
set_value :c, data[:a] * data[:b]
end
end
>> builder = HT::Builder.new
=> #<HT::Builder ...>
>> data = {:a => 1, :b => 2}
{:a => 1, :b => 2}
>> builder.run(cascade, data, :path_1_all)
=> {:d=>"abc", :a=>2, :b=>1, :c=>3}
>> builder.run(cascade, data, :path_1_mid)
=> {:d=>"abc", :a=>2, :b=>2}
>> builder.run(cascade, data, :path_2_all)
=> {:d=>"abc", :a=>1, :b=>2, 1=>:a, 2=>:b, :c=>2}
>> builder.run(cascade, data, :path_2_mid)
=> {:d=>"abc", :a=>1, :b=>2, 1=>:a, 2=>:b}
>> builder.run(cascade, data, :path_share)
=> {:d=>"abc", :a=>1, :b=>2}
>> builder.run(cascade, data, :base)
=> {:d => "abc"}
== Contributing to HT
== Roadmap
Cascade Improvements
Build Process Improvements
== Copyright
Copyright (c) 2010 Jordan West. See LICENSE.txt for further details.