Class: Syck::Pairs

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

Overview

Builtin collection: !pairs

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.[](*vals) ⇒ Object


155
156
157
158
159
160
161
# File 'lib/syck/types.rb', line 155

def self.[]( *vals )
    p = Pairs.new
    0.step( vals.length - 1, 2 ) { |i|
        p[vals[i]] = vals[i+1]
    }
    p
end

Instance Method Details

#[](k) ⇒ Object


162
163
164
# File 'lib/syck/types.rb', line 162

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

#[]=(k, val) ⇒ Object


165
166
167
168
# File 'lib/syck/types.rb', line 165

def []=( k, val )
    self << [ k, val ]
    val
end

#has_key?(k) ⇒ Boolean


169
170
171
# File 'lib/syck/types.rb', line 169

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

#is_complex_yaml?Boolean


172
173
174
# File 'lib/syck/types.rb', line 172

def is_complex_yaml?
    true
end

#to_yaml(opts = {}) ⇒ Object


175
176
177
178
179
180
181
182
183
# File 'lib/syck/types.rb', line 175

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


141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/syck/types.rb', line 141

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