Module: Tpl
- Defined in:
- lib/tpl.rb,
lib/tpl/version.rb
Constant Summary collapse
- VERSION =
"0.0.1"
Class Method Summary collapse
- .build_proc(lines, vars) ⇒ Object
- .declaring_local_variables(vars) ⇒ Object
- .parse(template, vars = {}) ⇒ Object
- .parsing_lines(lines) ⇒ Object
- .render ⇒ Object
Class Method Details
.build_proc(lines, vars) ⇒ Object
14 15 16 17 18 19 |
# File 'lib/tpl.rb', line 14 def build_proc(lines, vars) @output = "Proc.new do \n output = \"\" \n " declaring_local_variables(vars) parsing_lines(lines) @output << "output \n end" end |
.declaring_local_variables(vars) ⇒ Object
21 22 23 24 25 26 |
# File 'lib/tpl.rb', line 21 def declaring_local_variables(vars) vars.each do |x, y| value = y.is_a?(String) ? "\"#{y}\"" : y @output << "#{x} = #{value}\n" end end |
.parse(template, vars = {}) ⇒ Object
5 6 7 8 9 10 11 12 |
# File 'lib/tpl.rb', line 5 def parse(template, vars = {}) context = vars.fetch(:context, self) lines = template.end_with?(".ate") ? File.read(template) : template lines = lines.split("\n") built = build_proc(lines, vars) @parsed = context.instance_eval(built) self end |
.parsing_lines(lines) ⇒ Object
28 29 30 31 32 33 34 35 36 |
# File 'lib/tpl.rb', line 28 def parsing_lines(lines) lines.each do |line| if line =~ /^\s*(%)(.*?)$/ @output << "#{line.gsub(/^\s*%(.*?)$/, '\1') } \n" else @output << "output << %Q|#{line.gsub(/\{\{([^\r\n]*)\}\}/, '#{\1}')}\n| \n " end end end |
.render ⇒ Object
38 39 40 |
# File 'lib/tpl.rb', line 38 def render @parsed.call end |