class PureDocx::XmlGenerators::Image
Attributes
align[R]
height[R]
image_name[R]
image_path[R]
in_header[R]
rels_id[R]
size_constructor[R]
width[R]
Public Class Methods
new(image_path, rels_constructor, arguments = {})
click to toggle source
Calls superclass method
PureDocx::XmlGenerators::Base::new
# File lib/puredocx/xml_generators/image.rb, line 13 def initialize(image_path, rels_constructor, arguments = {}) super(nil, rels_constructor) @image_path = image_path @image_name = File.basename(image_path) ensure_file! @width = arguments[:width] @height = arguments[:height] @in_header = arguments[:in_header] @align = arguments[:align] @rels_id = "rId#{appropriated_rels_size}" @size_constructor = PureDocx::Constructors::ImageSize.new( user_params: [width, height], real_params: FastImage.size(image_path) ) end
Public Instance Methods
params()
click to toggle source
# File lib/puredocx/xml_generators/image.rb, line 34 def params align_params = { horizontal: '', vertical: '' } align_params.merge! prepare_align_params(align) if align { '{WIDTH}' => size_constructor.prepare_size[:width], '{HEIGHT}' => size_constructor.prepare_size[:height], '{RID}' => rels_id, '{NAME}' => image_name, '{UNIQUE_NAME}' => uniq_name(image_name), '{HORIZONTAL_ALIGN}' => align_params[:horizontal], '{VERTICAL_ALIGN}' => align_params[:vertical] } end
template()
click to toggle source
# File lib/puredocx/xml_generators/image.rb, line 48 def template return File.read(DocArchive.template_path('float_image.xml')) if align&.any? File.read(DocArchive.template_path('image.xml')) end
xml()
click to toggle source
Calls superclass method
PureDocx::XmlGenerators::Base#xml
# File lib/puredocx/xml_generators/image.rb, line 29 def xml add_image_rels super end
Private Instance Methods
add_image_rels()
click to toggle source
# File lib/puredocx/xml_generators/image.rb, line 63 def add_image_rels return rels_constructor.prepare_header_rels!(image_path, uniq_name(image_name)) if in_header? rels_constructor.prepare_word_rels!(image_path, uniq_name(image_name)) end
appropriated_rels_size()
click to toggle source
# File lib/puredocx/xml_generators/image.rb, line 72 def appropriated_rels_size rels_constructor.rels[(in_header? && :header_rels) || :word_rels].size end
ensure_file!()
click to toggle source
# File lib/puredocx/xml_generators/image.rb, line 59 def ensure_file! raise ImageReadingError, "The #{image_name} not found!" unless File.exist?(image_path) end
in_header?()
click to toggle source
# File lib/puredocx/xml_generators/image.rb, line 68 def in_header? in_header end
prepare_align_params(align_params)
click to toggle source
# File lib/puredocx/xml_generators/image.rb, line 76 def prepare_align_params(align_params) align = { horizontal: :left, vertical: :top } align_params.each do |item| align[:horizontal] = item if %i[right left].include? item align[:vertical] = item if %i[bottom top].include? item end align end
uniq_name(image_name)
click to toggle source
# File lib/puredocx/xml_generators/image.rb, line 55 def uniq_name(image_name) "image_#{SecureRandom.uuid}#{File.extname(image_name)}" end