class Docx::DocumentReplacer

Attributes

doc[R]
observer[R]

Public Class Methods

new(str, data_provider, opts = {}) click to toggle source
# File lib/docx/document_replacer.rb, line 9
def initialize(str, data_provider, opts = {})
  @doc = REXML::Document.new(str)
  @observer = Docx::PlaceholderObserver.new(data_provider)
  walk_node(doc.root)
  @observer.end_of_document
  convert_newlines if opts.fetch(:convert_newlines){ true }
end

Public Instance Methods

replaced() click to toggle source
# File lib/docx/document_replacer.rb, line 17
def replaced
  doc.to_s
end

Private Instance Methods

convert_newlines() click to toggle source
# File lib/docx/document_replacer.rb, line 34
def convert_newlines
  NewlineReplacer.new(doc).replace
end
walk_node(node) click to toggle source
# File lib/docx/document_replacer.rb, line 24
def walk_node(node)
  if node.is_a?(REXML::Element)
    node.children.each do |n|
      walk_node(n)
    end
  elsif node.is_a?(REXML::Text)
    observer.next_node(node)
  end
end