Class: DocxManipulator::Relationships
- Inherits:
-
Object
- Object
- DocxManipulator::Relationships
- Defined in:
- lib/docx_manipulator/relationships.rb
Instance Method Summary collapse
- #add_binary_image(id, name, data) ⇒ Object
- #add_image(id, path) ⇒ Object
- #add_node(id, type, target, attributes = {}) ⇒ Object
-
#initialize(source) ⇒ Relationships
constructor
A new instance of Relationships.
- #process(output) ⇒ Object
- #writes_to_files ⇒ Object
Constructor Details
#initialize(source) ⇒ Relationships
Returns a new instance of Relationships.
6 7 8 9 10 |
# File 'lib/docx_manipulator/relationships.rb', line 6 def initialize(source) @relationships = read_relationships(source) @images = [] @binary_images = {} end |
Instance Method Details
#add_binary_image(id, name, data) ⇒ Object
26 27 28 29 30 |
# File 'lib/docx_manipulator/relationships.rb', line 26 def add_binary_image(id, name, data) name = I18n.transliterate(name) @binary_images[name] = data add_node(id, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', "media/#{name}") end |
#add_image(id, path) ⇒ Object
21 22 23 24 |
# File 'lib/docx_manipulator/relationships.rb', line 21 def add_image(id, path) @images << path add_node(id, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', "media/#{I18n.transliterate(File.basename(path))}") end |
#add_node(id, type, target, attributes = {}) ⇒ Object
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/docx_manipulator/relationships.rb', line 32 def add_node(id, type, target, attributes = {}) image_node = Nokogiri::XML::Node.new('Relationship', @relationships) image_node['Id'] = id image_node['Type'] = type image_node['Target'] = target attributes.each do |key, value| image_node[key] = value end @relationships.root << image_node end |
#process(output) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/docx_manipulator/relationships.rb', line 47 def process(output) output.put_next_entry 'word/_rels/document.xml.rels' output.write @relationships.to_s @images.each do |path| output.put_next_entry "word/media/#{I18n.transliterate(File.basename(path))}" File.open(path) do |file| IO.copy_stream file, output end end @binary_images.each do |name, data| output.put_next_entry "word/media/#{I18n.transliterate(name)}" output.write data end end |
#writes_to_files ⇒ Object
43 44 45 |
# File 'lib/docx_manipulator/relationships.rb', line 43 def writes_to_files ['word/_rels/document.xml.rels'] end |