fix references (again)
quite tricky logic, but now outputting at lowest level, as intended
This commit is contained in:
parent
4853f944ef
commit
224bd84b01
@ -44,7 +44,8 @@ module Sof
|
|||||||
occurence = @members.objects[object.object_id]
|
occurence = @members.objects[object.object_id]
|
||||||
raise "no object #{object}" unless occurence
|
raise "no object #{object}" unless occurence
|
||||||
#puts "#{level} ? #{occurence.level} : ref #{occurence.referenced}"
|
#puts "#{level} ? #{occurence.level} : ref #{occurence.referenced}"
|
||||||
if( occurence.referenced and (occurence.level <= level) )
|
if( occurence.referenced )
|
||||||
|
return SimpleNode.new("*#{occurence.referenced}") unless (level == occurence.level )
|
||||||
#puts "ref #{occurence.referenced} level #{level} at #{occurence.level}"
|
#puts "ref #{occurence.referenced} level #{level} at #{occurence.level}"
|
||||||
if( occurence.written.nil? )
|
if( occurence.written.nil? )
|
||||||
occurence.written = true
|
occurence.written = true
|
||||||
|
@ -23,3 +23,13 @@ module Checker
|
|||||||
assert_equal should , out
|
assert_equal should , out
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class ObjectWithAttributes
|
||||||
|
def initialize
|
||||||
|
@name = "some name"
|
||||||
|
@number = 1234
|
||||||
|
end
|
||||||
|
attr_accessor :extra , :volotile
|
||||||
|
end
|
||||||
|
OBJECT_STRING = "ObjectWithAttributes(:name => 'some name', :number => 1234)"
|
||||||
|
Sof::Volotile.add(ObjectWithAttributes , [:volotile])
|
||||||
|
@ -1,12 +1,4 @@
|
|||||||
class ObjectWithAttributes
|
require_relative "helper"
|
||||||
def initialize
|
|
||||||
@name = "some name"
|
|
||||||
@number = 1234
|
|
||||||
end
|
|
||||||
attr_accessor :extra , :volotile
|
|
||||||
end
|
|
||||||
OBJECT_STRING = "ObjectWithAttributes(:name => 'some name', :number => 1234)"
|
|
||||||
Sof::Volotile.add(ObjectWithAttributes , [:volotile])
|
|
||||||
|
|
||||||
class ObjectSof < MiniTest::Test
|
class ObjectSof < MiniTest::Test
|
||||||
include Checker
|
include Checker
|
||||||
@ -63,6 +55,6 @@ class ObjectSof < MiniTest::Test
|
|||||||
object.extra = ObjectWithAttributes
|
object.extra = ObjectWithAttributes
|
||||||
ar = [object , ObjectWithAttributes]
|
ar = [object , ObjectWithAttributes]
|
||||||
@out = ar
|
@out = ar
|
||||||
check "-ObjectWithAttributes(:name => 'some name', :number => 1234, :extra => &1 ObjectWithAttributes)\n-*1"
|
check "-ObjectWithAttributes(:name => 'some name', :number => 1234, :extra => *1)\n-&1 ObjectWithAttributes"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -22,4 +22,14 @@ class TestRefs < MiniTest::Test
|
|||||||
check "-&1 {}
|
check "-&1 {}
|
||||||
-*1"
|
-*1"
|
||||||
end
|
end
|
||||||
|
def test_bigger
|
||||||
|
@out = [ { :one => @array , :two => [{ :three => @array}] } ]
|
||||||
|
check "--:one => &1 []\n -:two => -{:three => *1}"
|
||||||
|
end
|
||||||
|
def test_object
|
||||||
|
object = ObjectWithAttributes.new
|
||||||
|
object.extra = [object]
|
||||||
|
@out = [ {:one => object} , object ]
|
||||||
|
check "-{:one => *1}\n-&1 ObjectWithAttributes(:name => 'some name', :number => 1234)\n :extra [*1]"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user