diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2009-09-27 20:36:23 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2009-09-27 20:36:23 -0700 |
commit | 620ede3207d55689288ea08619f744975138736c (patch) | |
tree | 12ef45406eaa2db2c506460e2635db77dec0927e /lib | |
parent | 4cb2ba04833af82a4618f2ebd03372bddc2047f5 (diff) | |
download | psych-620ede3207d55689288ea08619f744975138736c.zip |
adding alias nodes
Diffstat (limited to 'lib')
-rw-r--r-- | lib/psych.rb | 1 | ||||
-rw-r--r-- | lib/psych/nodes/alias.rb | 15 | ||||
-rw-r--r-- | lib/psych/tree_builder.rb | 6 |
3 files changed, 22 insertions, 0 deletions
diff --git a/lib/psych.rb b/lib/psych.rb index aaec4a7..df5486a 100644 --- a/lib/psych.rb +++ b/lib/psych.rb @@ -4,6 +4,7 @@ require 'psych/nodes/document' require 'psych/nodes/sequence' require 'psych/nodes/scalar' require 'psych/nodes/mapping' +require 'psych/nodes/alias' require 'psych/handler' require 'psych/tree_builder' diff --git a/lib/psych/nodes/alias.rb b/lib/psych/nodes/alias.rb new file mode 100644 index 0000000..b697cc1 --- /dev/null +++ b/lib/psych/nodes/alias.rb @@ -0,0 +1,15 @@ +module Psych + module Nodes + ### + # This class represents a {YAML Alias}[http://yaml.org/spec/1.1/#alias]. + # It points to an +anchor+ + class Alias < Psych::Nodes::Node + # The anchor this alias links to + attr_accessor :anchor + + def initialize anchor + @anchor = anchor + end + end + end +end diff --git a/lib/psych/tree_builder.rb b/lib/psych/tree_builder.rb index 6a10354..d9c7c5d 100644 --- a/lib/psych/tree_builder.rb +++ b/lib/psych/tree_builder.rb @@ -30,6 +30,7 @@ module Psych end def end_#{node.downcase}(*args) + super @stack.pop end } @@ -44,5 +45,10 @@ module Psych super @stack.last.children << Nodes::Scalar.new(*args) end + + def alias(*args) + super + @stack.last.children << Nodes::Alias.new(*args) + end end end |