class Docxgen::Generator
Attributes
doc[R]
Public Class Methods
new(document)
click to toggle source
# File lib/docxgen/generator.rb, line 10 def initialize(document) @doc = Docx::Document.open(document) @errors = [] @rendered = false end
Public Instance Methods
errors()
click to toggle source
# File lib/docxgen/generator.rb, line 36 def errors raise "Wasn't rendered" unless @rendered @errors end
render(data, remove_missing: true)
click to toggle source
# File lib/docxgen/generator.rb, line 16 def render(data, remove_missing: true) raise "Already rendered" if @rendered variables = JSON.parse(data.to_json, symbolize_names: true) paragraphs = @doc.paragraphs + collect_table_paragraphs paragraphs.each do |p| p.each_text_run do |tr| _, sub_errors = Templates::Parser.tr_substitute!(tr, variables, remove_missing: remove_missing) @errors.push(*sub_errors) end end @rendered = true valid? end
save(to)
click to toggle source
# File lib/docxgen/generator.rb, line 46 def save(to) raise "Wasn't rendered" unless @rendered @doc.save(to) end
stream()
click to toggle source
# File lib/docxgen/generator.rb, line 52 def stream raise "Wasn't rendered" unless @rendered @doc.stream end
valid?()
click to toggle source
# File lib/docxgen/generator.rb, line 42 def valid? errors.size.zero? end
Private Instance Methods
collect_table_paragraphs()
click to toggle source
# File lib/docxgen/generator.rb, line 60 def collect_table_paragraphs # TODO: Refactor, maybe? @doc .tables .map(&:rows).flatten .map(&:cells).flatten .map(&:paragraphs).flatten end