Sha256: ebd3cba420c001f0c2712189517ba275ffd3bfb3aa1d6e3d8e6634e6ca342a19

Contents?: true

Size: 1.43 KB

Versions: 33

Compression:

Stored size: 1.43 KB

Contents

module Ddr::Structures
  #
  # Wraps a Nokogiri (XML) 'div' node
  #
  class Div < SimpleDelegator

    def id
      self['ID']
    end

    def label
      self['LABEL']
    end

    def order
      self['ORDER']
    end

    def orderlabel
      self['ORDERLABEL']
    end

    def type
      self['TYPE']
    end

    def divs
      xpath('xmlns:div').map { |node| Div.new(node) }
    end

    def fptrs
      xpath('xmlns:fptr').map { |node| Fptr.new(node) }
    end

    def mptrs
      xpath('xmlns:mptr').map { |node| Mptr.new(node) }
    end

    def <=>(other)
      order.to_i <=> other.order.to_i
    end

    def dereferenced_hash
      contents = []
      contents.concat(divs.map { |div| div.dereferenced_hash }) unless divs.empty?
      contents.concat(fptrs.map { |fptr| fptr.dereferenced_hash }) unless fptrs.empty?
      contents.concat(mptrs.map { |mptr| mptr.dereferenced_hash }) unless mptrs.empty?
      dh = { id: id, label: label, order: order, orderlabel: orderlabel, type: type }.compact
      dh[:contents] = contents unless contents.empty?
      dh
    end

    def self.build(args)
      node = Nokogiri::XML::Node.new('div', args[:document])
      node['ID'] = args[:id] if args[:id]
      node['LABEL'] = args[:label] if args[:label]
      node['ORDER'] = args[:order] if args[:order]
      node['ORDERLABEL'] = args[:orderlabel] if args[:orderlabel]
      node['TYPE'] = args[:type] if args[:type]
      node
    end

  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
ddr-core-1.11.0 lib/ddr/structures/div.rb
ddr-core-1.10.0 lib/ddr/structures/div.rb
ddr-core-1.9.0 lib/ddr/structures/div.rb
ddr-core-1.8.0 lib/ddr/structures/div.rb
ddr-core-1.7.0 lib/ddr/structures/div.rb
ddr-core-1.6.6 lib/ddr/structures/div.rb
ddr-core-1.6.5 lib/ddr/structures/div.rb
ddr-core-1.6.4 lib/ddr/structures/div.rb
ddr-core-1.6.3 lib/ddr/structures/div.rb
ddr-core-1.6.2 lib/ddr/structures/div.rb
ddr-core-1.6.1 lib/ddr/structures/div.rb
ddr-core-1.6.0 lib/ddr/structures/div.rb
ddr-core-1.5.5 lib/ddr/structures/div.rb
ddr-core-1.5.4 lib/ddr/structures/div.rb
ddr-core-1.5.2 lib/ddr/structures/div.rb
ddr-core-1.5.3 lib/ddr/structures/div.rb
ddr-core-1.5.1 lib/ddr/structures/div.rb
ddr-core-1.4.4 lib/ddr/structures/div.rb
ddr-core-1.4.3 lib/ddr/structures/div.rb
ddr-core-1.4.2 lib/ddr/structures/div.rb