Class: Sablon::Parser::MailMerge::ComplexField

Inherits:
MergeField
  • Object
show all
Defined in:
lib/sablon/parser/mail_merge.rb

Constant Summary

Constants inherited from MergeField

MergeField::KEY_PATTERN

Instance Method Summary collapse

Methods inherited from MergeField

#expression

Constructor Details

#initialize(nodes) ⇒ ComplexField

Returns a new instance of ComplexField.



29
30
31
32
# File 'lib/sablon/parser/mail_merge.rb', line 29

def initialize(nodes)
  @nodes = nodes
  @raw_expression = @nodes.flat_map {|n| n.search(".//w:instrText").map(&:content) }.join
end

Instance Method Details

#ancestors(*args) ⇒ Object



47
48
49
# File 'lib/sablon/parser/mail_merge.rb', line 47

def ancestors(*args)
  @nodes.first.ancestors(*args)
end

#end_nodeObject



55
56
57
# File 'lib/sablon/parser/mail_merge.rb', line 55

def end_node
  @nodes.last
end

#removeObject



43
44
45
# File 'lib/sablon/parser/mail_merge.rb', line 43

def remove
  @nodes.each(&:remove)
end

#replace(content) ⇒ Object



38
39
40
41
# File 'lib/sablon/parser/mail_merge.rb', line 38

def replace(content)
  replace_field_display(pattern_node, content)
  (@nodes - [pattern_node]).each(&:remove)
end

#start_nodeObject



51
52
53
# File 'lib/sablon/parser/mail_merge.rb', line 51

def start_node
  @nodes.first
end

#valid?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/sablon/parser/mail_merge.rb', line 34

def valid?
  separate_node && get_display_node(pattern_node) && expression
end