class Sablon::Parser::MailMerge::ComplexField
Public Class Methods
new(nodes)
click to toggle source
Calls superclass method
Sablon::Parser::MailMerge::MergeField::new
# File lib/sablon/parser/mail_merge.rb, line 45 def initialize(nodes) super() @nodes = nodes @raw_expression = @nodes.flat_map {|n| n.search(".//w:instrText").map(&:content) }.join end
Public Instance Methods
ancestors(*args)
click to toggle source
# File lib/sablon/parser/mail_merge.rb, line 70 def ancestors(*args) @nodes.first.ancestors(*args) end
end_node()
click to toggle source
# File lib/sablon/parser/mail_merge.rb, line 78 def end_node @nodes.last end
remove()
click to toggle source
removes only the merge field in question
# File lib/sablon/parser/mail_merge.rb, line 61 def remove remove_or_decrement_ref(*@nodes) end
remove_parent(selector)
click to toggle source
# File lib/sablon/parser/mail_merge.rb, line 65 def remove_parent(selector) node = @nodes.first remove_or_decrement_ref(node.ancestors(selector).first) end
replace(content, env)
click to toggle source
# File lib/sablon/parser/mail_merge.rb, line 55 def replace(content, env) replace_field_display(pattern_node, content, env) (@nodes - [pattern_node]).each(&:remove) end
start_node()
click to toggle source
# File lib/sablon/parser/mail_merge.rb, line 74 def start_node @nodes.first end
valid?()
click to toggle source
# File lib/sablon/parser/mail_merge.rb, line 51 def valid? separate_node && get_display_node(pattern_node) && expression end
Private Instance Methods
pattern_node()
click to toggle source
# File lib/sablon/parser/mail_merge.rb, line 84 def pattern_node separate_node.next_element end
separate_node()
click to toggle source
# File lib/sablon/parser/mail_merge.rb, line 88 def separate_node @nodes.detect {|n| !n.search(".//w:fldChar[@w:fldCharType='separate']").empty? } end