diff --git a/lib/sof/array.rb b/lib/sof/array.rb index 64193614..1ee03944 100644 --- a/lib/sof/array.rb +++ b/lib/sof/array.rb @@ -10,10 +10,26 @@ module Sof end def out io , level = 0 super - long_out(io , level) + short = true + children.each do |c| + short = false unless c.is_a?(SimpleNode) + end + if(short and children.length < 7 ) + short_out(io,level) + else + long_out(io , level) + end end private + def short_out(io,level) + io.write("[") + @children.each_with_index do |child , i| + child.out(io , level + 1) + io.write ", " unless (i+1) == children.length + end + io.write("]") + end def long_out io , level indent = " " * level @children.each_with_index do |child , i| diff --git a/test/sof.rb b/test/sof.rb index d86b296b..dd33cc7f 100644 --- a/test/sof.rb +++ b/test/sof.rb @@ -32,11 +32,11 @@ class BasicSof < MiniTest::Test object = ObjectWithAttributes.new object.extra = [:sym , 123] @out = Sof::Writer.write(object) - check "#{OBJECT_STRING}\n :extra -:sym\n -123" + check "#{OBJECT_STRING}\n :extra [:sym, 123]" end def test_simple_array @out = Sof::Writer.write([true, 1234]) - check "-true\n-1234" + check "[true, 1234]" end def test_array_object @out = Sof::Writer.write([true, 1234 , ObjectWithAttributes.new]) @@ -44,15 +44,15 @@ class BasicSof < MiniTest::Test end def test_array_array @out = Sof::Writer.write([true, 1 , [true , 12 ]]) - check "-true\n-1\n--true\n -12" + check "-true\n-1\n-[true, 12]" end def test_array_array_reverse @out = Sof::Writer.write([ [true , 12 ], true, 1]) - check "--true\n -12\n-true\n-1" + check "-[true, 12]\n-true\n-1" end def test_array_array_array @out = Sof::Writer.write([true, 1 , [true , 12 , [true , 123 ]]]) - check "-true\n-1\n--true\n -12\n --true\n -123" + check "-true\n-1\n--true\n -12\n -[true, 123]" end def test_array_array_object @out = Sof::Writer.write([true, 1 , [true , 12 , ObjectWithAttributes.new]]) @@ -78,7 +78,7 @@ class BasicSof < MiniTest::Test ar = [true, 1 ] ar << ar @out = Sof::Writer.write(ar) - check "&1 -true\n-1\n-*1" + check "&1 [true, 1, *1]" end def test_object_recursive object = ObjectWithAttributes.new