Module: Tpl

Defined in:
lib/tpl.rb,
lib/tpl/version.rb

Constant Summary collapse

VERSION =
"0.0.1"

Class Method Summary collapse

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

.renderObject



38
39
40
# File 'lib/tpl.rb', line 38

def render
  @parsed.call
end