class Htmltoword::Renderer

Public Class Methods

new(context, filename, options) click to toggle source
# File lib/htmltoword/renderer.rb, line 9
def initialize(context, filename, options)
  @word_template = options[:word_template].presence
  @disposition = options.fetch(:disposition, 'attachment')
  @use_extras = options.fetch(:extras, false)
  @file_name = file_name(filename, options)
  @context = context
  define_template(filename, options)
  @content = options[:content] || @context.render_to_string(options)
end
send_file(context, filename, options = {}) click to toggle source
# File lib/htmltoword/renderer.rb, line 4
def send_file(context, filename, options = {})
  new(context, filename, options).send_file
end

Public Instance Methods

send_file() click to toggle source
# File lib/htmltoword/renderer.rb, line 19
def send_file
  document = Htmltoword::Document.create(@content, @word_template, @use_extras)
  @context.send_data(document, filename: @file_name, type: Mime::DOCX, disposition: @disposition)
end

Private Instance Methods

define_template(filename, options) click to toggle source
# File lib/htmltoword/renderer.rb, line 26
def define_template(filename, options)
  if options[:template] == @context.action_name
    if filename =~ %r{^([^\/]+)/(.+)$}
      options[:prefixes] ||= []
      options[:prefixes].unshift $1
      options[:template] = $2
    else
      options[:template] = filename
    end
  end
end
file_name(filename, options) click to toggle source
# File lib/htmltoword/renderer.rb, line 38
def file_name(filename, options)
  name = options[:filename].presence || filename
  name =~ /\.docx$/ ? name : "#{name}.docx"
end