Class YAML::Omap
In: yaml/types.rb
Parent: ::Array

Builtin collection: !omap

Methods

[]   []   []=   has_key?   is_complex_yaml?   to_yaml   yaml_initialize  

Public Class methods

[Source]

# File 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

Public Instance methods

[Source]

# File yaml/types.rb, line 109
        def []( k )
            self.assoc( k ).to_a[1]
        end

[Source]

# File 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

[Source]

# File yaml/types.rb, line 121
        def has_key?( k )
            self.assoc( k ) ? true : false
        end

[Source]

# File yaml/types.rb, line 124
        def is_complex_yaml?
            true
        end

[Source]

# File 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

[Source]

# File 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

[Validate]