class Riddl::Wrapper::Description::HashBase

Attributes

content[R]
hash[R]
hash_base[R]
name[R]

Public Class Methods

new(layer,name,type,content=nil) click to toggle source

{{{

# File lib/ruby/riddl/wrapper/description/message_and_transformation.rb, line 7
def initialize(layer,name,type,content=nil)
  @name = name
  @hash = nil
  if layer.nil?
    @content = content
  else
    @content = layer.find("des:#{type}[@name='#{name}']").first.to_doc
    @content.root.find("@name").delete_all!
    @content.register_namespace 'des', Riddl::Wrapper::DESCRIPTION
  end
  update_hash!
end

Public Instance Methods

traverse?(other) click to toggle source
# File lib/ruby/riddl/wrapper/description/message_and_transformation.rb, line 34
def traverse?(other)
  if other.name.nil?
    false
  else
    paths = self.hash_base.find("//des:parameter").map{ |e| e.path + "/@name" }
    hb2 = XML::Smart::string(other.hash_base.serialize)
    hb2.register_namespace 'des', Riddl::Wrapper::DESCRIPTION
    hb2.unformated = true

    paths.each do |p|
      (hb2.find(p).first.value = '*') rescue nil
    end

    self.hash_base.serialize.hash == hb2.serialize.hash
  end
end
update_hash!() click to toggle source
# File lib/ruby/riddl/wrapper/description/message_and_transformation.rb, line 19
def update_hash!
  # TODO too simple
  hb = @content.root.to_doc
  hb.register_namespace 'des', Riddl::Wrapper::DESCRIPTION
  hb.unformated = true
  hb.find("//comment()").delete_all!
  hb.find("//des:parameter/*").delete_all!
  hb.find("//text()").delete_all!
  hb.find("//des:header/*").delete_all!
  hb.find("//des:parameter/@handler").delete_all!
  # hb.find("//des:parameter/@mimetype").each { |e| e.value = '' }
  hb.root.namespaces.delete_all!
  @hash_base = hb
  @hash      = hb.serialize.hash
end