class XMLable::Exports::Base

Base class contains the base export logic

Public Class Methods

new(element, opts = {}) click to toggle source

Initialize

@param [XMLable::Mixins::Object] element @param [Hash] opts

# File lib/xmlable/exports/base.rb, line 13
def initialize(element, opts = {})
  @element = element
  @opts = opts
end

Public Instance Methods

described?(node) click to toggle source

Is the object described by user?

@param [Nokogiri::XML::Node] node

@return [Boolean]

# File lib/xmlable/exports/base.rb, line 36
def described?(node)
  node.instance_variable_get(:@__handler).described?
end
empty?(node) click to toggle source

Is this object empty?

@param [Nokogiri::XML::Node] node

@return [Boolean]

# File lib/xmlable/exports/base.rb, line 25
def empty?(node)
  node.instance_variable_get(:@__element).__empty?
end
node_merged_opts(node, opts = Options::Storage.new) click to toggle source

Merge node's options

@param [Nokogiri::XML::Node] node @param [XMLable::Options::Storage] opts

@return [XMLable::Options::Storage]

# File lib/xmlable/exports/base.rb, line 73
def node_merged_opts(node, opts = Options::Storage.new)
  opts.merge_opts(node_options(node))
end
node_nested_options(node) click to toggle source

Get node's nested options

@param [Nokogiri::XML::Node] node

@return [XMLable::Options::Storage]

# File lib/xmlable/exports/base.rb, line 47
def node_nested_options(node)
  return Options::Storage.new unless node
  parent = node.respond_to?(:parent) ? node.parent : nil
  node_nested_options(parent).merge_opts(node_options(node))
end
node_options(node) click to toggle source

Get node's options

@param [Nokogiri::XML::Node] node

@return [XMLable::Options::Storage]

# File lib/xmlable/exports/base.rb, line 60
def node_options(node)
  h = node.instance_variable_get(:@__handler)
  h && h.options? ? h.options : Options::Storage.new
end