aboutsummaryrefslogtreecommitdiffstats
path: root/ext/psych
diff options
context:
space:
mode:
Diffstat (limited to 'ext/psych')
-rw-r--r--ext/psych/lib/psych/coder.rb11
1 files changed, 10 insertions, 1 deletions
diff --git a/ext/psych/lib/psych/coder.rb b/ext/psych/lib/psych/coder.rb
index 79e46dab1b..eff0cc3dcb 100644
--- a/ext/psych/lib/psych/coder.rb
+++ b/ext/psych/lib/psych/coder.rb
@@ -7,7 +7,7 @@ module Psych
# called, respectively.
class Coder
attr_accessor :tag, :style, :implicit
- attr_reader :type, :map, :scalar, :seq
+ attr_reader :type, :scalar, :seq
def initialize tag
@map = {}
@@ -19,6 +19,14 @@ module Psych
@scalar = nil
end
+ # Emit a map. The coder will be yielded to the block.
+ def map tag = @tag, style = @style
+ @tag = tag
+ @style = style
+ yield self if block_given?
+ @map
+ end
+
# Emit a scalar with +value+ and +tag+
def represent_scalar tag, value
self.tag = tag
@@ -53,6 +61,7 @@ module Psych
@type = :map
@map[k] = v
end
+ alias :add :[]=
def [] k
@type = :map