Class: Goldendocx::Parts::Media

Inherits:
Object
  • Object
show all
Defined in:
lib/goldendocx/parts/media.rb

Constant Summary collapse

BASE64_PNG_PATTERN =
%r{
  ^data:image/png;base64,
  (?<data>(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?)$
}x

Instance Method Summary collapse

Constructor Details

#initialize(name, data) ⇒ Media

Returns a new instance of Media.



12
13
14
15
# File 'lib/goldendocx/parts/media.rb', line 12

def initialize(name, data)
  @name = name
  @data = data
end

Instance Method Details

#input_streamObject



25
26
27
28
29
# File 'lib/goldendocx/parts/media.rb', line 25

def input_stream
  return StringIO.new(BASE64_PNG_PATTERN.match(@data)['data'].unpack1('m'), 'rb') if base64_png_data?

  @data
end

#targetObject



17
18
19
# File 'lib/goldendocx/parts/media.rb', line 17

def target
  "media/#{@name}"
end

#typeObject



21
22
23
# File 'lib/goldendocx/parts/media.rb', line 21

def type
  'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'
end

#write_to(zos) ⇒ Object



31
32
33
34
# File 'lib/goldendocx/parts/media.rb', line 31

def write_to(zos)
  zos.put_next_entry "word/#{target}"
  zos.write input_stream.read
end