Module: OM::XML::Container::ClassMethods

Defined in:
lib/om/xml/container.rb

Overview

Class Methods – These methods will be available on classes that include this Module

Instance Method Summary collapse

Instance Method Details

#from_xml(xml = nil, tmpl = self.new) ⇒ Object

Careful! If you call this from a constructor, be sure to provide something 'ie. self' as the @tmpl. Otherwise, you will get an infinite loop!

Parameters:

  • xml (String, File, Nokogiri::XML::Node) (defaults to: nil)
  • tmpl (ActiveFedora::Datastream) (defaults to: self.new)

13
14
15
16
17
18
19
20
21
22
# File 'lib/om/xml/container.rb', line 13

def from_xml(xml=nil, tmpl=self.new) # :nodoc:
  if xml.nil?
    # noop: handled in #ng_xml accessor..  tmpl.ng_xml = self.xml_template
  elsif xml.kind_of? Nokogiri::XML::Node
    tmpl.ng_xml = xml
  else
    tmpl.ng_xml = Nokogiri::XML::Document.parse(xml)
  end
  return tmpl
end

#xml_templateNokogiri::XML::Document

By default, new OM Document instances will create an empty xml document, but if you override self.xml_template to return a different object (e.g. Nokogiri::XML::Document), that will be created instead. You can make this method create the documents however you want as long as it returns a Nokogiri::XML::Document. In the tutorials, we use Nokogiri::XML::Builder in this mehtod and call its .doc method at the end of xml_template in order to return the Nokogiri::XML::Document object. Instead of using Nokogiri::XML::Builder, you could put your template into an actual xml file and have xml_template use Nokogiri::XML::Document.parse to load it. That’s up to you.

Returns:

  • (Nokogiri::XML::Document)

28
29
30
# File 'lib/om/xml/container.rb', line 28

def xml_template
  Nokogiri::XML::Document.parse("")
end