class ODFWriter::Text

Text: replace text items

Constants

DELIMITERS

constants

Public Instance Methods

replace!(content, item = nil) click to toggle source

replace!

# File lib/odf_writer/text.rb, line 43
def replace!(content, item = nil)

  return unless node = find_text_node(content)
  
  text = value(item)
  
  @parser = Parser::Default.new(text, node, 
    :doc                 => content,
    :remove_classes      => @remove_classes,
    :remove_class_prefix => @remove_class_prefix,
    :remove_class_suffix => @remove_class_suffix
  )
  
  @parser.paragraphs.each do |p|
    node.before(p)
  end
  
  node.remove
  
end

Private Instance Methods

find_text_node(doc) click to toggle source

find_text_node

# File lib/odf_writer/text.rb, line 74
def find_text_node(doc)
  texts = doc.xpath(".//text:p[text()='#{placeholder}']")
  if texts.empty?
    texts = doc.xpath(".//text:p/text:span[text()='#{placeholder}']")
    if texts.empty?
      texts = nil
    else
      texts = texts.first.parent
    end
  else
    texts = texts.first
  end
  
  texts
end
placeholder() click to toggle source

placeholder

# File lib/odf_writer/text.rb, line 93
def placeholder
  "#{DELIMITERS[0]}#{@name.to_s.upcase}#{DELIMITERS[1]}"
end