Class: WsdlMapper::Dom::Directory

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/wsdl_mapper/dom/directory.rb

Instance Method Summary collapse

Constructor Details

#initialize(on_nil: nil, &block) ⇒ Directory

Returns a new instance of Directory.



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/wsdl_mapper/dom/directory.rb', line 8

def initialize(on_nil: nil, &block)
  if block
    @data = Hash.new do |h, k|
      h[k] = Hash.new do |h2, k2|
        h2[k2] = block[WsdlMapper::Dom::Name.get(k, k2)]
      end
    end
  else
    @data = {}
  end
  @on_nil = on_nil
end

Instance Method Details

#clearObject



21
22
23
# File 'lib/wsdl_mapper/dom/directory.rb', line 21

def clear
  @data.clear
end

#each(&block) ⇒ Object



51
52
53
54
55
56
57
58
59
60
# File 'lib/wsdl_mapper/dom/directory.rb', line 51

def each(&block)
  enum = Enumerator.new do |y|
    @data.each do |ns, data|
      data.each do |name, value|
        y << [WsdlMapper::Dom::Name.get(ns, name), value]
      end
    end
  end
  block_given? ? enum.each(&block) : enum.each
end

#each_value(&block) ⇒ Object



62
63
64
65
66
67
68
69
70
71
# File 'lib/wsdl_mapper/dom/directory.rb', line 62

def each_value(&block)
  enum = Enumerator.new do |y|
    @data.each do |_, data|
      data.each do |_, value|
        y << value
      end
    end
  end
  block_given? ? enum.each(&block) : enum.each
end

#get(name) ⇒ Object Also known as: []

Parameters:

Returns:

  • (Object)


27
28
29
30
31
# File 'lib/wsdl_mapper/dom/directory.rb', line 27

def get(name)
  hsh = @data[name.ns]
  hsh && hsh[name.name] ||
    on_nil(name)
end

#has_key?(name) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
41
# File 'lib/wsdl_mapper/dom/directory.rb', line 38

def has_key?(name)
  hsh = @data[name.ns]
  !!(hsh && hsh[name.name])
end

#on_nil(name) ⇒ Object



34
35
36
# File 'lib/wsdl_mapper/dom/directory.rb', line 34

def on_nil(name)
  @on_nil && raise(@on_nil.new(name))
end

#set(name, value) ⇒ Object Also known as: []=

Parameters:



45
46
47
48
# File 'lib/wsdl_mapper/dom/directory.rb', line 45

def set(name, value)
  @data[name.ns] ||= {}
  @data[name.ns][name.name] = value
end