class Sablon::Parser::MailMerge::MergeField

Constants

KEY_PATTERN

Attributes

block_reference_count[RW]

Public Class Methods

new() click to toggle source
# File lib/sablon/parser/mail_merge.rb, line 8
def initialize
  @block_reference_count = 0
end

Public Instance Methods

expression() click to toggle source
# File lib/sablon/parser/mail_merge.rb, line 16
def expression
  $1 if @raw_expression =~ KEY_PATTERN
end
valid?() click to toggle source
# File lib/sablon/parser/mail_merge.rb, line 12
def valid?
  expression
end

Private Instance Methods

get_display_node(node) click to toggle source
# File lib/sablon/parser/mail_merge.rb, line 39
def get_display_node(node)
  node.search(".//w:t").first
end
remove_or_decrement_ref(*nodes) click to toggle source

removes all nodes associated with the merge field if the reference count is less than or equal to 1

# File lib/sablon/parser/mail_merge.rb, line 24
def remove_or_decrement_ref(*nodes)
  if @block_reference_count > 1
    @block_reference_count -= 1
  else
    nodes.each(&:remove)
  end
end
replace_field_display(node, content, env) click to toggle source
# File lib/sablon/parser/mail_merge.rb, line 32
def replace_field_display(node, content, env)
  paragraph = node.ancestors(".//w:p").first
  display_node = get_display_node(node)
  content.append_to(paragraph, display_node, env)
  display_node.remove
end