1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* ext/psych/lib/psych/streaming.rb: refactor streaming methods to a

module.
* ext/psych/lib/psych/stream.rb: extracted streaming specific methods
  to a module.
* ext/psych/lib/psych/json/stream.rb: JSON stream inherits from
  JSONTree and includes streaming methods.
* ext/psych/lib/psych/visitors/json_tree.rb: JSON does not support
  object references, so remove object reference testing when building
  JSON trees.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30936 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
tenderlove 2011-02-21 18:09:38 +00:00
parent 10ec858f40
commit 4ed82ae5cb
6 changed files with 46 additions and 19 deletions

View file

@ -1,3 +1,15 @@
Tue Feb 22 03:04:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
* ext/psych/lib/psych/streaming.rb: refactor streaming methods to a
module.
* ext/psych/lib/psych/stream.rb: extracted streaming specific methods
to a module.
* ext/psych/lib/psych/json/stream.rb: JSON stream inherits from
JSONTree and includes streaming methods.
* ext/psych/lib/psych/visitors/json_tree.rb: JSON does not support
object references, so remove object reference testing when building
JSON trees.
Tue Feb 22 02:41:51 2011 Aaron Patterson <aaron@tenderlovemaking.com>
* ext/psych/lib/psych/visitors/yaml_tree.rb (accept): use Hash#key?

View file

@ -1,5 +1,6 @@
require 'psych.so'
require 'psych/nodes'
require 'psych/streaming'
require 'psych/visitors'
require 'psych/handler'
require 'psych/tree_builder'

View file

@ -3,8 +3,9 @@ require 'psych/json/yaml_events'
module Psych
module JSON
class Stream < Psych::Stream
class Stream < Psych::Visitors::JSONTree
include Psych::JSON::RubyEvents
include Psych::Streaming
class Emitter < Psych::Stream::Emitter # :nodoc:
include Psych::JSON::YAMLEvents

View file

@ -31,23 +31,6 @@ module Psych
end
end
###
# Create a new streaming emitter. Emitter will print to +io+. See
# Psych::Stream for an example.
def initialize io
super({}, self.class.const_get(:Emitter).new(io))
end
###
# Start streaming using +encoding+
def start encoding = Nodes::Stream::UTF8
super.tap { yield self if block_given? }
ensure
finish if block_given?
end
private
def register target, obj
end
include Psych::Streaming
end
end

View file

@ -0,0 +1,22 @@
module Psych
module Streaming
###
# Create a new streaming emitter. Emitter will print to +io+. See
# Psych::Stream for an example.
def initialize io
super({}, self.class.const_get(:Emitter).new(io))
end
###
# Start streaming using +encoding+
def start encoding = Nodes::Stream::UTF8
super.tap { yield self if block_given? }
ensure
finish if block_given?
end
private
def register target, obj
end
end
end

View file

@ -8,6 +8,14 @@ module Psych
def initialize options = {}, emitter = Psych::JSON::TreeBuilder.new
super
end
def accept target
if target.respond_to?(:encode_with)
dump_coder target
else
send(@dispatch_cache[target.class], target)
end
end
end
end
end