Class: XMLable::Exports::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/xmlable/exports/base.rb

Overview

Base class contains the base export logic

Direct Known Subclasses

JSONExporter, XMLExporter

Instance Method Summary collapse

Constructor Details

#initialize(element, opts = {}) ⇒ Base

Initialize

Parameters:



13
14
15
16
# File 'lib/xmlable/exports/base.rb', line 13

def initialize(element, opts = {})
  @element = element
  @opts = opts
end

Instance Method Details

#described?(node) ⇒ Boolean

Is the object described by user?

Parameters:

  • node (Nokogiri::XML::Node)

Returns:

  • (Boolean)


36
37
38
# File 'lib/xmlable/exports/base.rb', line 36

def described?(node)
  node.instance_variable_get(:@__handler).described?
end

#empty?(node) ⇒ Boolean

Is this object empty?

Parameters:

  • node (Nokogiri::XML::Node)

Returns:

  • (Boolean)


25
26
27
# 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) ⇒ XMLable::Options::Storage

Merge node’s options

Parameters:

Returns:



73
74
75
# 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) ⇒ XMLable::Options::Storage

Get node’s nested options

Parameters:

  • node (Nokogiri::XML::Node)

Returns:



47
48
49
50
51
# 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) ⇒ XMLable::Options::Storage

Get node’s options

Parameters:

  • node (Nokogiri::XML::Node)

Returns:



60
61
62
63
# 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