Class: Caracal::Document
- Inherits:
-
Object
- Object
- Caracal::Document
- Includes:
- Core::CustomProperties, Core::FileName, Core::Fonts, Core::IFrames, Core::Ignorables, Core::Images, Core::ListStyles, Core::Lists, Core::Namespaces, Core::PageBreaks, Core::PageNumbers, Core::PageSettings, Core::Relationships, Core::Rules, Core::Styles, Core::Tables, Core::Text
- Defined in:
- lib/caracal/document.rb
Class Method Summary collapse
-
.render(f_name = nil, &block) ⇒ Object
This method renders a new Word document and returns it as a a string.
-
.save(f_name = nil, &block) ⇒ Object
This method renders a new Word document and saves it to the file system.
Instance Method Summary collapse
-
#contents ⇒ Object
This method returns an array of models which constitute the set of instructions for producing the document content.
-
#initialize(name = nil, &block) ⇒ Document
constructor
This method instantiates a new word document.
-
#render ⇒ Object
This method renders the word document instance into a string buffer.
Methods included from Core::Text
Methods included from Core::Tables
Methods included from Core::Rules
Methods included from Core::PageBreaks
Methods included from Core::Lists
Methods included from Core::Images
Methods included from Core::IFrames
Methods included from Core::ListStyles
Methods included from Core::Styles
Methods included from Core::PageNumbers
Methods included from Core::PageSettings
Methods included from Core::Fonts
Methods included from Core::Relationships
Methods included from Core::Namespaces
Methods included from Core::Ignorables
Methods included from Core::FileName
Methods included from Core::CustomProperties
Constructor Details
#initialize(name = nil, &block) ⇒ Document
This method instantiates a new word document.
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/caracal/document.rb', line 100 def initialize(name = nil, &block) file_name(name) page_size page_margins top: 1440, bottom: 1440, left: 1440, right: 1440 page_numbers [:font, :list_style, :namespace, :relationship, :style].each do |method| collection = self.class.send("default_#{ method }s") collection.each do |item| send(method, item) end end if block_given? (block.arity < 1) ? instance_eval(&block) : block[self] end end |
Class Method Details
.render(f_name = nil, &block) ⇒ Object
This method renders a new Word document and returns it as a a string.
74 75 76 77 78 79 80 |
# File 'lib/caracal/document.rb', line 74 def self.render(f_name = nil, &block) docx = new(f_name, &block) buffer = docx.render buffer.rewind buffer.sysread end |
.save(f_name = nil, &block) ⇒ Object
This method renders a new Word document and saves it to the file system.
85 86 87 88 89 90 |
# File 'lib/caracal/document.rb', line 85 def self.save(f_name = nil, &block) docx = new(f_name, &block) buffer = docx.render File.open("./#{ docx.name }", 'wb') { |f| f.write(buffer.string) } end |
Instance Method Details
#contents ⇒ Object
This method returns an array of models which constitute the set of instructions for producing the document content.
125 126 127 |
# File 'lib/caracal/document.rb', line 125 def contents @contents ||= [] end |
#render ⇒ Object
This method renders the word document instance into a string buffer. Order is important!
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/caracal/document.rb', line 135 def render buffer = ::Zip::OutputStream.write_buffer do |zip| render_package_relationships(zip) render_content_types(zip) render_app(zip) render_core(zip) render_custom(zip) render_fonts(zip) (zip) render_settings(zip) render_styles(zip) render_document(zip) render_relationships(zip) # Must go here: Depends on document renderer render_media(zip) # Must go here: Depends on document renderer render_numbering(zip) # Must go here: Depends on document renderer end end |