diff options
-rw-r--r-- | lib/evendoors/particle.rb | 4 | ||||
-rw-r--r-- | lib/evendoors/room.rb | 17 | ||||
-rw-r--r-- | spec/room_spec.rb | 12 |
3 files changed, 17 insertions, 16 deletions
diff --git a/lib/evendoors/particle.rb b/lib/evendoors/particle.rb index f532be1..f4c4ab7 100644 --- a/lib/evendoors/particle.rb +++ b/lib/evendoors/particle.rb @@ -26,8 +26,8 @@ module EvenDoors @door = o['door'] @action = o['action'] @payload = o['payload']||{} - @src = EvenDoors::Spin.spin.resolve o['src'] if o['src'] - @dst = EvenDoors::Spin.spin.resolve o['dst'] if o['dst'] + @src = EvenDoors::Spin.spin.search_down o['src'] if o['src'] + @dst = EvenDoors::Spin.spin.search_down o['dst'] if o['dst'] o['dsts'].each do |dst| add_dsts dst end if o['dsts'] set_link_fields *o['link_fields'] if o['link_fields'] o['merged'].each do |merged| merge! Particle.json_create(merged) end if o['merged'] diff --git a/lib/evendoors/room.rb b/lib/evendoors/room.rb index eaa8ace..90b824c 100644 --- a/lib/evendoors/room.rb +++ b/lib/evendoors/room.rb @@ -42,17 +42,14 @@ module EvenDoors @spin = ( @parent.nil? ? self : @parent.spin ) end # - def resolve search - return self if search==path - if (search=~/^#{path}\/(\w+)\/?/)==0 - if spot = @spots[$1] - return spot if spot.path==search # needed as Door doesn't implement #resolve - return spot.resolve search - else - nil - end + def search_down spath + return self if spath==path + return nil if (spath=~/^#{path}\/(\w+)\/?/)!=0 + if spot = @spots[$1] + return spot if spot.path==spath # needed as Door doesn't implement #search_down + return spot.search_down spath end - (@parent ? @parent.resolve(search) : nil ) + nil end # def try_links p diff --git a/spec/room_spec.rb b/spec/room_spec.rb index 379de32..badea97 100644 --- a/spec/room_spec.rb +++ b/spec/room_spec.rb @@ -30,7 +30,7 @@ describe EvenDoors::Room do d0.stop.should be_true end # - it "parent, spin and resolve should be ok" do + it "parent, spin and search_down should be ok" do EvenDoors::Spin.spin = nil s = EvenDoors::Spin.new 'dom0' r0 = EvenDoors::Room.new 'r0', s @@ -45,9 +45,13 @@ describe EvenDoors::Room do r1.spin.should be s r2.spin.should be s r3.spin.should be s - r2.resolve('dom0/r0/r1/r2').should be r2 - r3.resolve('dom0/r0/r1/r2').should be r2 - r1.resolve('dom0/r0/r1/r2').should be r2 + s.search_down('dom0/r0/r1/r2').should be r2 + r0.search_down('dom0/r0/r1/r2').should be r2 + r1.search_down('dom0/r0/r1/r2').should be r2 + r2.search_down('dom0/r0/r1/r2').should be r2 + r1.search_down('dom0/r0/r1/r9').should be nil + r3.search_down('dom0/r0/r1/r2').should be nil + r4.search_down('dom0/r0/r1/r2').should be nil end # it "route error: no source" do |