summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/yaml/basenode.rb4
-rw-r--r--lib/yaml/tag.rb9
-rw-r--r--lib/yaml/types.rb79
3 files changed, 51 insertions, 41 deletions
diff --git a/lib/yaml/basenode.rb b/lib/yaml/basenode.rb
index 7072b1dcd6..d24f6172e9 100644
--- a/lib/yaml/basenode.rb
+++ b/lib/yaml/basenode.rb
@@ -148,7 +148,7 @@ module YAML
if pred
case pred
when /^\.=/
- pred = $'
+ pred = $' # '
match_nodes.reject! { |n|
n.last.value != pred
}
@@ -187,7 +187,7 @@ module YAML
v = @value.detect { |k,v| k.transform == key.first }
v[1] if v
elsif Array === @value
- @value.[]( *k )
+ @value.[]( *key )
end
end
diff --git a/lib/yaml/tag.rb b/lib/yaml/tag.rb
index 0e25e1f85a..e51677230f 100644
--- a/lib/yaml/tag.rb
+++ b/lib/yaml/tag.rb
@@ -55,13 +55,14 @@ class Module # :nodoc: all
# in YAML. See YAML::tag_class for detailed information on typing and
# taguris.
def yaml_as( tag, sc = true )
- class_eval <<-"end;"
- attr_accessor :taguri
+ verbose, $VERBOSE = $VERBOSE, nil
+ class_eval <<-"end;", __FILE__, __LINE__+1
+ attr_writer :taguri
def taguri
if respond_to? :to_yaml_type
YAML::tagurize( to_yaml_type[1..-1] )
else
- return @taguri if @taguri
+ return @taguri if defined?(@taguri) and @taguri
tag = #{ tag.dump }
if self.class.yaml_tag_subclasses? and self.class != YAML::tagged_classes[tag]
tag = "\#{ tag }:\#{ self.class.yaml_tag_class_name }"
@@ -72,6 +73,8 @@ class Module # :nodoc: all
def self.yaml_tag_subclasses?; #{ sc ? 'true' : 'false' }; end
end;
YAML::tag_class tag, self
+ ensure
+ $VERBOSE = verbose
end
# Transforms the subclass name into a name suitable for display
# in a subclassed tag.
diff --git a/lib/yaml/types.rb b/lib/yaml/types.rb
index c890f22bfa..05113f216d 100644
--- a/lib/yaml/types.rb
+++ b/lib/yaml/types.rb
@@ -1,45 +1,52 @@
+# -*- mode: ruby; ruby-indent-level: 4 -*- vim: sw=4
#
# Classes required by the full core typeset
#
module YAML
- #
- # Default private type
- #
- class PrivateType
+ #
+ # Default private type
+ #
+ class PrivateType
def self.tag_subclasses?; false; end
- attr_accessor :type_id, :value
- def initialize( type, val )
- @type_id = type; @value = val
+ attr_accessor :type_id, :value
+ verbose, $VERBOSE = $VERBOSE, nil
+ def initialize( type, val )
+ @type_id = type; @value = val
@value.taguri = "x-private:#{ @type_id }"
- end
- def to_yaml( opts = {} )
+ end
+ def to_yaml( opts = {} )
@value.to_yaml( opts )
- end
- end
+ end
+ ensure
+ $VERBOSE = verbose
+ end
#
# Default domain type
#
class DomainType
def self.tag_subclasses?; false; end
- attr_accessor :domain, :type_id, :value
- def initialize( domain, type, val )
- @domain = domain; @type_id = type; @value = val
+ attr_accessor :domain, :type_id, :value
+ verbose, $VERBOSE = $VERBOSE, nil
+ def initialize( domain, type, val )
+ @domain = domain; @type_id = type; @value = val
@value.taguri = "tag:#{ @domain }:#{ @type_id }"
- end
- def to_yaml( opts = {} )
+ end
+ def to_yaml( opts = {} )
@value.to_yaml( opts )
- end
- end
+ end
+ ensure
+ $VERBOSE = verbose
+ end
#
# Unresolved objects
#
class Object
def self.tag_subclasses?; false; end
- def to_yaml( opts = {} )
+ def to_yaml( opts = {} )
YAML::quick_emit( object_id, opts ) do |out|
out.map( "tag:ruby.yaml.org,2002:object:#{ @class }", to_yaml_style ) do |map|
@ivars.each do |k,v|
@@ -47,31 +54,31 @@ module YAML
end
end
end
- end
- end
+ end
+ end
- #
- # YAML Hash class to support comments and defaults
- #
- class SpecialHash < ::Hash
- attr_accessor :default
+ #
+ # YAML Hash class to support comments and defaults
+ #
+ class SpecialHash < ::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_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
+ end
#
# Builtin collection: !omap