module XMLable::Mixins::DocumentStorage::ClassMethods

Public Instance Methods

__document_handler() click to toggle source

Get document's handler

@api private

@return [XMLable::Handlers::Document]

# File lib/xmlable/mixins/document_storage.rb, line 109
def __document_handler
  @__document_handler ||= Handlers::Document.new(self)
end
__nokogiri_export_options() click to toggle source

Nokogiri's options for exporting

@api private

@return [Nokogiri::XML::ParseOptions]

# File lib/xmlable/mixins/document_storage.rb, line 98
def __nokogiri_export_options
  @__nokogiri_export_options ||= Options::NokogiriExport.new
end
__nokogiri_parse_options() click to toggle source

Nokogiri's options for parsing

@api private

@return [Nokogiri::XML::ParseOptions]

# File lib/xmlable/mixins/document_storage.rb, line 87
def __nokogiri_parse_options
  @__nokogiri_parse_options ||= Nokogiri::XML::ParseOptions.new.recover
end
document(opts = {}) click to toggle source

Define document params

@param [Hash] opts

# File lib/xmlable/mixins/document_storage.rb, line 57
def document(opts = {})
  opt(opts) if opts.size > 0
end
from_xml(xml, _opts = {}) click to toggle source

Initialize document from XML

@param [Nokogiri::XML::Document, String] xml @param [Hash] _opts

@return [XMLable::Document]

# File lib/xmlable/mixins/document_storage.rb, line 121
def from_xml(xml, _opts = {})
  xml = '' unless xml
  if xml.is_a?(String)
    doc = Nokogiri::XML(xml) do |config|
      config.options  = __nokogiri_parse_options.to_i
    end
  elsif xml.is?(Nokogiri::XML::Document)
    doc = xml
  else raise "Don't know how to parse '#{xml.class}'"
  end
  __document_handler.from_xml_document(doc)
end
nokogiri_export(*args) click to toggle source

Set the Nokogiri's export params

# File lib/xmlable/mixins/document_storage.rb, line 73
def nokogiri_export(*args)
  __nokogiri_export_options.tap do |opts|
    opts.merge!(args.pop) if args.last.is_a?(Hash)
    args.each { |opt| opts.save_with.send(opt) if opts.save_with.respond_to?(opt) }
  end
end
nokogiri_parse(*args) click to toggle source

Set the Nokogiri's parsing params

# File lib/xmlable/mixins/document_storage.rb, line 64
def nokogiri_parse(*args)
  args.each do |opt|
    __nokogiri_parse_options.send(opt) if __nokogiri_parse_options.respond_to?(opt)
  end
end