Class: ReTemplate::Text

Inherits:
ReTemplate show all
Defined in:
lib/re_template/text.rb

Direct Known Subclasses

Html::SubTemplate

Instance Attribute Summary

Attributes inherited from ReTemplate

#expressions, #nodes

Instance Method Summary collapse

Methods inherited from ReTemplate

#add_text_expressions

Instance Method Details

#parse!(string) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/re_template/text.rb', line 2

def parse! string
  self.nodes = [string]
  expressions.each_key do |expression|
    self.nodes = self.nodes.map do |node|
      if node.kind_of? String
        result = []
        rest = node
        while match = expression.match(rest)
          result << match.pre_match
          result << expression
          rest = match.post_match
        end
        result << rest
        result.reject{|x| x == ''}
      else
        # It's not a string, so leave it alone
        node
      end
    end.flatten
  end
end

#render(values) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/re_template/text.rb', line 24

def render values
  result = ''
  nodes.each do |node|
    if node.kind_of? String
      result << node
    else
      result << values[expressions[node]]
    end
  end
  result
end