Class: YAML::Omap

Inherits:
Array show all
Defined in:
lib/yaml/types.rb

Overview

Builtin collection: !omap

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.[](*vals) ⇒ Object



102
103
104
105
106
107
108
# File 'lib/yaml/types.rb', line 102

def self.[]( *vals )
    o = Omap.new
    0.step( vals.length - 1, 2 ) do |i|
        o[vals[i]] = vals[i+1]
    end
    o
end

Instance Method Details

#[](k) ⇒ Object



109
110
111
# File 'lib/yaml/types.rb', line 109

def []( k )
    self.assoc( k ).to_a[1]
end

#[]=(k, *rest) ⇒ Object



112
113
114
115
116
117
118
119
120
# File 'lib/yaml/types.rb', line 112

def []=( k, *rest )
    val, set = rest.reverse
    if ( tmp = self.assoc( k ) ) and not set
        tmp[1] = val
    else
        self << [ k, val ] 
    end
    val
end

#has_key?(k) ⇒ Boolean

Returns:

  • (Boolean)


121
122
123
# File 'lib/yaml/types.rb', line 121

def has_key?( k )
    self.assoc( k ) ? true : false
end

#is_complex_yaml?Boolean

Returns:

  • (Boolean)


124
125
126
# File 'lib/yaml/types.rb', line 124

def is_complex_yaml?
    true
end

#to_yaml(opts = {}) ⇒ Object



127
128
129
130
131
132
133
134
135
# File 'lib/yaml/types.rb', line 127

def to_yaml( opts = {} )
    YAML::quick_emit( self.object_id, opts ) do |out|
        out.seq( taguri, to_yaml_style ) do |seq|
            self.each do |v|
                seq.add( Hash[ *v ] )
            end
        end
    end
end

#yaml_initialize(tag, val) ⇒ Object



88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/yaml/types.rb', line 88

def yaml_initialize( tag, val )
    if Array === val
        val.each do |v|
            if Hash === v
                concat( v.to_a )		# Convert the map to a sequence
            else
                raise YAML::Error, "Invalid !omap entry: " + val.inspect
            end
        end
    else
        raise YAML::Error, "Invalid !omap: " + val.inspect
    end
    self
end