diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-05-15 19:29:24 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-05-15 19:29:24 -0700 |
commit | 144ead9a1d2d3318e9647b57b94e8cb37d333df5 (patch) | |
tree | cac03b7be1102b38441e585a7aa993ae637172d6 | |
parent | 9335d12727be550d9e0e155ed1c1b0fb41fd2b9f (diff) | |
download | psych-144ead9a1d2d3318e9647b57b94e8cb37d333df5.zip |
using factory methods for node creation
-rw-r--r-- | lib/psych/visitors/json_tree.rb | 22 | ||||
-rw-r--r-- | lib/psych/visitors/yaml_tree.rb | 8 |
2 files changed, 20 insertions, 10 deletions
diff --git a/lib/psych/visitors/json_tree.rb b/lib/psych/visitors/json_tree.rb index 0440dc7..774b043 100644 --- a/lib/psych/visitors/json_tree.rb +++ b/lib/psych/visitors/json_tree.rb @@ -1,16 +1,26 @@ module Psych module Visitors class JSONTree < YAMLTree - def visit_Symbol o - append create_scalar o.to_s - end - def visit_NilClass o - scalar = Nodes::Scalar.new( + scalar = create_scalar( 'null', nil, nil, true, false, Nodes::Scalar::PLAIN) append scalar end + def visit_Integer o + append create_scalar(o.to_s, nil, nil, true, false, Nodes::Scalar::PLAIN) + end + + def visit_Float o + return super if o.nan? || o.infinite? + visit_Integer o + end + + def visit_String o + append create_scalar o.to_s + end + alias :visit_Symbol :visit_String + private def create_document doc = super @@ -26,7 +36,7 @@ module Psych end def create_scalar value, anchor = nil, tag = nil, plain = false, quoted = true, style = Nodes::Scalar::ANY - super(value, anchor, tag, false, true, style) + super end def create_sequence anchor = nil, tag = nil, implicit = true, style = Nodes::Sequence::FLOW diff --git a/lib/psych/visitors/yaml_tree.rb b/lib/psych/visitors/yaml_tree.rb index 4c8ba29..608da6d 100644 --- a/lib/psych/visitors/yaml_tree.rb +++ b/lib/psych/visitors/yaml_tree.rb @@ -151,7 +151,7 @@ module Psych end def visit_Integer o - append Nodes::Scalar.new o.to_s + append create_scalar o.to_s end alias :visit_TrueClass :visit_Integer alias :visit_FalseClass :visit_Integer @@ -159,11 +159,11 @@ module Psych def visit_Float o if o.nan? - append Nodes::Scalar.new '.nan' + append create_scalar '.nan' elsif o.infinite? - append Nodes::Scalar.new(o.infinite? > 0 ? '.inf' : '-.inf') + append create_scalar(o.infinite? > 0 ? '.inf' : '-.inf') else - append Nodes::Scalar.new o.to_s + append create_scalar o.to_s end end |