module ODFWriter::Nested
Nested: provide data to nestable items
Public Instance Methods
add_bookmark(name, options={}, &block)
click to toggle source
# File lib/odf_writer/nested.rb, line 42 def add_bookmark(name, options={}, &block) options.merge!(:name => name) @bookmarks << Bookmark.new(options, &block) end
add_field(name, options={}, &block)
click to toggle source
# File lib/odf_writer/nested.rb, line 31 def add_field(name, options={}, &block) options.merge!(:name => name) @fields << Field.new(options, &block) end
Also aliased as: add_column
add_image(name, options={}, &block)
click to toggle source
# File lib/odf_writer/nested.rb, line 47 def add_image(name, options={}, &block) options.merge!(:name => name) @images << Image.new(options, &block) end
add_section(name, options={}) { |sec| ... }
click to toggle source
# File lib/odf_writer/nested.rb, line 59 def add_section(name, options={}) options.merge!(:name => name) sec = Section.new(options) @sections << sec yield(sec) end
add_table(name, options={}) { |tab| ... }
click to toggle source
# File lib/odf_writer/nested.rb, line 52 def add_table(name, options={}) options.merge!(:name => name) tab = Table.new(options) @tables << tab yield(tab) end
add_text(name, options={}, &block)
click to toggle source
# File lib/odf_writer/nested.rb, line 37 def add_text(name, options={}, &block) options.merge!(:name => name) @texts << Text.new(options, &block) end
items(item, field, procedure)
click to toggle source
items: get item collection form item
# File lib/odf_writer/nested.rb, line 104 def items(item, field, procedure) #################################################################################### # call proc before other alternatives #################################################################################### return arrify(procedure.call(item, field)) if procedure #################################################################################### # item class dependend call #################################################################################### return arrify(hash_value(item, field)) if item.is_a?(Hash) #################################################################################### # field class dependend call #################################################################################### case field when String, Symbol if item.respond_to?(field.to_s.to_sym) arrify(item.send(field.to_s.to_sym)) elsif item.respond_to?(field.downcase.to_sym) arrify(item.send(field.downcase.to_sym)) else [] end else [] end #case end
populate(tree, options={})
click to toggle source
populate
# File lib/odf_writer/nested.rb, line 69 def populate(tree, options={}) tree.to_h.each do |key, names| case key when :fields names.each do |name| add_field(name, options) end #def when :texts names.each do |name| add_text(name, options) end #def when :bookmarks names.each do |name| add_bookmark(name, options) end #def when :images names.each do |name| add_image(name, options) end #def when :tables names.each do |name, table_tree| add_table(name, options){|table| table.populate(table_tree, options)} end #def when :sections names.each do |name, section_tree| add_section(name, options){|section| section.populate(section_tree, options)} end #def end #case end #each end
Private Instance Methods
arrify(obj)
click to toggle source
# File lib/odf_writer/nested.rb, line 148 def arrify(obj) return obj if obj.is_a?(Array) return [obj] if obj.is_a?(Hash) return obj.to_a if obj.respond_to?(:to_a) return [obj] end
hash_value(hash, key)
click to toggle source
private
# File lib/odf_writer/nested.rb, line 143 def hash_value(hash, key) hash[key.to_s] || hash[key.to_sym] || hash[key.to_s.underscore] || hash[key.to_s.underscore.to_sym] end