summaryrefslogtreecommitdiff
path: root/lib/yaml/types.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/yaml/types.rb')
-rw-r--r--lib/yaml/types.rb196
1 files changed, 0 insertions, 196 deletions
diff --git a/lib/yaml/types.rb b/lib/yaml/types.rb
deleted file mode 100644
index f7772cb3a0..0000000000
--- a/lib/yaml/types.rb
+++ /dev/null
@@ -1,196 +0,0 @@
-#
-# Classes required by the full core typeset
-#
-
-module YAML
-
- #
- # Default private type
- #
- class PrivateType
- attr_accessor :type_id, :value
- def initialize( type, val )
- @type_id = type; @value = val
- end
- def to_yaml( opts = {} )
- YAML::quick_emit( self.object_id, opts ) { |out|
- out << " !!#{@type_id}"
- value.to_yaml( :Emitter => out )
- }
- end
- end
-
- #
- # Default domain type
- #
- class DomainType
- attr_accessor :domain, :type_id, :value
- def initialize( domain, type, val )
- @domain = domain; @type_id = type; @value = val
- end
- def to_yaml_type
- dom = @domain.dup
- if dom =~ /\.yaml\.org,2002$/
- dom = $`
- end
- "#{dom}/#{@type_id}"
- end
- def to_yaml( opts = {} )
- YAML::quick_emit( self.object_id, opts ) { |out|
- out << " !#{to_yaml_type} "
- value.to_yaml( :Emitter => out )
- }
- end
- end
-
- #
- # YAML Hash class to support comments and defaults
- #
- class SpecialHash < Object::Hash
- attr_accessor :default
- def inspect
- self.default.to_s
- end
- def to_s
- self.default.to_s
- end
- def update( h )
- if YAML::SpecialHash === h
- @default = h.default if h.default
- end
- super( h )
- end
- def to_yaml( opts = {} )
- opts[:DefaultKey] = self.default
- super( opts )
- end
- end
-
- #
- # Builtin collection: !omap
- #
- class Omap < Array
- def self.[]( *vals )
- o = Omap.new
- 0.step( vals.length - 1, 2 ) { |i|
- o[vals[i]] = vals[i+1]
- }
- o
- end
- def []( k )
- self.assoc( k ).to_a[1]
- end
- 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
- def has_key?( k )
- self.assoc( k ) ? true : false
- end
- def is_complex_yaml?
- true
- end
- def to_yaml( opts = {} )
- YAML::quick_emit( self.object_id, opts ) { |out|
- out.seq( "!omap" ) { |seq|
- self.each { |v|
- seq.add( Hash[ *v ] )
- }
- }
- }
- end
- end
-
- YAML.add_builtin_type( "omap" ) { |type, val|
- if Array === val
- p = Omap.new
- val.each { |v|
- if Hash === v
- p.concat( v.to_a ) # Convert the map to a sequence
- else
- raise YAML::Error, "Invalid !omap entry: " + val.inspect
- end
- }
- else
- raise YAML::Error, "Invalid !omap: " + val.inspect
- end
- p
- }
-
- #
- # Builtin collection: !pairs
- #
- class Pairs < Array
- def self.[]( *vals )
- p = Pairs.new
- 0.step( vals.length - 1, 2 ) { |i|
- p[vals[i]] = vals[i+1]
- }
- p
- end
- def []( k )
- self.assoc( k ).to_a
- end
- def []=( k, val )
- self << [ k, val ]
- val
- end
- def has_key?( k )
- self.assoc( k ) ? true : false
- end
- def is_complex_yaml?
- true
- end
- def to_yaml( opts = {} )
- YAML::quick_emit( self.object_id, opts ) { |out|
- out.seq( "!pairs" ) { |seq|
- self.each { |v|
- seq.add( Hash[ *v ] )
- }
- }
- }
- end
- end
-
- YAML.add_builtin_type( "pairs" ) { |type, val|
- if Array === val
- p = Pairs.new
- val.each { |v|
- if Hash === v
- p.concat( v.to_a ) # Convert the map to a sequence
- else
- raise YAML::Error, "Invalid !pairs entry: " + val.inspect
- end
- }
- else
- raise YAML::Error, "Invalid !pairs: " + val.inspect
- end
- p
- }
-
- #
- # Builtin collection: !set
- #
- class Set < Hash
- def to_yaml_type
- "!set"
- end
- end
-
- YAML.add_builtin_type( 'set' ) { |type, val|
- if Array === val
- val = Set[ *val ]
- elsif Hash === val
- Set[ val ]
- else
- raise YAML::Error, "Invalid map explicitly tagged !map: " + val.inspect
- end
- val
- }
-
-end