Permalink
Browse files

* ext/psych/lib/psych.rb (load, parse): stop parsing or loading after

  the first document has been parsed.

* test/psych/test_stream.rb: pertinent tests.
  • Loading branch information...
1 parent 34d3b22 commit f506d5e4762b74536a5821392f06ec1c24e89536 @tenderlove tenderlove committed Mar 8, 2012
Showing with 21 additions and 2 deletions.
  1. +7 −0 CHANGELOG.rdoc
  2. +4 −2 lib/psych.rb
  3. +10 −0 test/psych/test_stream.rb
View
@@ -1,3 +1,10 @@
+Fri Mar 9 06:29:22 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb (load, parse): stop parsing or loading after
+ the first document has been parsed.
+
+ * test/psych/test_stream.rb: pertinent tests.
+
Fri Mar 9 06:17:05 2012 Aaron Patterson <aaron@tenderlovemaking.com>
* ext/psych/lib/psych.rb (parse_stream, load_stream): if a block is
View
@@ -148,8 +148,10 @@ def self.load yaml, filename = nil
#
# See Psych::Nodes for more information about YAML AST.
def self.parse yaml, filename = nil
- children = parse_stream(yaml, filename).children
- children.empty? ? false : children.first.children.first
+ parse_stream(yaml, filename) do |node|
+ return node
+ end
+ false
end
###
View
@@ -2,6 +2,16 @@
module Psych
class TestStream < TestCase
+ def test_parse_partial
+ rb = Psych.parse("--- foo\n...\n--- `").to_ruby
+ assert_equal 'foo', rb
+ end
+
+ def test_load_partial
+ rb = Psych.load("--- foo\n...\n--- `")
+ assert_equal 'foo', rb
+ end
+
def test_parse_stream_yields_documents
list = []
Psych.parse_stream("--- foo\n...\n--- bar") do |doc|

0 comments on commit f506d5e

Please sign in to comment.