Class: Syck::Omap

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

Overview

Builtin collection: !omap

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.[](*vals) ⇒ Object



100
101
102
103
104
105
106
# File 'lib/syck/types.rb', line 100

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



107
108
109
# File 'lib/syck/types.rb', line 107

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

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



110
111
112
113
114
115
116
117
118
# File 'lib/syck/types.rb', line 110

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)


119
120
121
# File 'lib/syck/types.rb', line 119

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

#is_complex_yaml?Boolean

Returns:

  • (Boolean)


122
123
124
# File 'lib/syck/types.rb', line 122

def is_complex_yaml?
    true
end

#to_yaml(opts = {}) ⇒ Object



125
126
127
128
129
130
131
132
133
# File 'lib/syck/types.rb', line 125

def to_yaml( opts = {} )
    Syck.quick_emit( self, 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



86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/syck/types.rb', line 86

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 Syck::Error, "Invalid !omap entry: " + val.inspect
            end
        end
    else
        raise Syck::Error, "Invalid !omap: " + val.inspect
    end
    self
end