Class: OpenXml::Builder
- Inherits:
-
Object
- Object
- OpenXml::Builder
- Defined in:
- lib/openxml/builder.rb,
lib/openxml/builder/element.rb
Defined Under Namespace
Classes: Element
Instance Attribute Summary collapse
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
Instance Method Summary collapse
- #[](ns) ⇒ Object
-
#initialize(options = {}) {|_self| ... } ⇒ Builder
constructor
A new instance of Builder.
- #method_missing(tag_name, *args) ⇒ Object
- #to_s(args = {}) ⇒ Object (also: #to_xml)
Constructor Details
#initialize(options = {}) {|_self| ... } ⇒ Builder
Returns a new instance of Builder.
13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/openxml/builder.rb', line 13 def initialize(={}) @to_s_options = { with_xml: true } @ns = nil @document = Ox::Document.new( encoding: "UTF-8", version: "1.0", standalone: [:standalone]) @parent = @document yield self if block_given? end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(tag_name, *args) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/openxml/builder.rb', line 41 def method_missing(tag_name, *args) new_element = OpenXml::Builder::Element.new(tag_name) attributes = (args) attributes.each do |key, value| new_element[key] = value end new_element.namespace = @ns @ns = nil if block_given? begin was_current = @parent @parent = new_element yield self ensure @parent = was_current end elsif value = args.first new_element << value.to_s end @parent << new_element.__getobj__ end |
Instance Attribute Details
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
11 12 13 |
# File 'lib/openxml/builder.rb', line 11 def parent @parent end |
Instance Method Details
#[](ns) ⇒ Object
36 37 38 39 |
# File 'lib/openxml/builder.rb', line 36 def [](ns) @ns = ns.to_sym if ns return self end |
#to_s(args = {}) ⇒ Object Also known as: to_xml
25 26 27 28 29 30 31 32 33 |
# File 'lib/openxml/builder.rb', line 25 def to_s(args={}) = @to_s_options # Unless we would like to debug the files, # don't add whitespace during generation. = .merge(indent: -1) unless args[:debug] Ox.dump(@document, ).strip end |