From 8e40ad6074f9eb5958735878e44aa2ca9fcdda1c Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Sat, 26 Sep 2009 21:55:50 -0700 Subject: implicit start and end document --- ext/psych/parser.c | 5 +++++ lib/psych/parser/handler.rb | 5 +++++ test/psych/test_parser.rb | 14 ++++++++++++-- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/ext/psych/parser.c b/ext/psych/parser.c index a9b0667..2efdb09 100644 --- a/ext/psych/parser.c +++ b/ext/psych/parser.c @@ -60,6 +60,11 @@ static VALUE parse_string(VALUE self, VALUE string) ); } break; + case YAML_DOCUMENT_END_EVENT: + rb_funcall(handler, rb_intern("end_document"), 1, + event.data.document_end.implicit == 1 ? Qtrue : Qfalse + ); + break; case YAML_STREAM_END_EVENT: rb_funcall(handler, rb_intern("end_stream"), 0); done = 1; diff --git a/lib/psych/parser/handler.rb b/lib/psych/parser/handler.rb index 211ebf1..5b330a0 100644 --- a/lib/psych/parser/handler.rb +++ b/lib/psych/parser/handler.rb @@ -14,6 +14,11 @@ module Psych def start_document version = [], tag_directives = [], implicit = true end + ### + # Called with the document ends. + def end_document implicit = true + end + ### # Called when the YAML stream ends def end_stream diff --git a/test/psych/test_parser.rb b/test/psych/test_parser.rb index 187bace..13d4376 100644 --- a/test/psych/test_parser.rb +++ b/test/psych/test_parser.rb @@ -33,9 +33,19 @@ module Psych assert_called :start_stream end - def test_start_document_implicit + def test_end_document_implicit + @parser.parse("\"foo\"\n") + assert_called :end_document, [true] + end + + def test_end_document_explicit @parser.parse("\"foo\"\n") - assert_called :start_document, [[], [], true] + assert_called :end_document, [true] + end + + def test_start_document_implicit + @parser.parse("\"foo\"\n...") + assert_called :end_document, [false] end def test_start_document_version -- cgit v1.2.3