fix to use objects instead of ids
This commit is contained in:
parent
cfc5163fb6
commit
30eed9274e
@ -35,7 +35,7 @@ end
|
|||||||
|
|
||||||
class ClassView < RefView
|
class ClassView < RefView
|
||||||
def initialize clazz
|
def initialize clazz
|
||||||
super(clazz.name , clazz.object_id , 20 )
|
super(clazz.name , clazz , 20 )
|
||||||
end
|
end
|
||||||
|
|
||||||
def ref_text
|
def ref_text
|
||||||
|
@ -4,8 +4,8 @@ class ObjectView < ListView
|
|||||||
|
|
||||||
# z is the z-index
|
# z is the z-index
|
||||||
|
|
||||||
def initialize object_id , interpreter = nil , z = nil
|
def initialize object , interpreter = nil , z = nil
|
||||||
@object_id = object_id
|
@object = object
|
||||||
@z = z
|
@z = z
|
||||||
@interpreter = interpreter
|
@interpreter = interpreter
|
||||||
@interpreter.register_event(:object_changed, self) if interpreter
|
@interpreter.register_event(:object_changed, self) if interpreter
|
||||||
@ -14,26 +14,24 @@ class ObjectView < ListView
|
|||||||
|
|
||||||
def draw
|
def draw
|
||||||
@element = super(@interpreter ? "ul.nav!" : "ul")
|
@element = super(@interpreter ? "ul.nav!" : "ul")
|
||||||
prepend_element div( "li" ) << div("span" , class_header(@object_id) )
|
prepend_element div( "li" ) << div("span" , class_header )
|
||||||
return @element
|
return @element
|
||||||
end
|
end
|
||||||
|
|
||||||
def object_changed reg , at
|
def object_changed reg , at
|
||||||
#puts "Object changed in #{reg} , at #{at}"
|
#puts "Object changed in #{reg} , at #{at}"
|
||||||
for_object = @interpreter.get_register( reg )
|
for_object = @interpreter.get_register( reg )
|
||||||
return unless for_object == @object_id
|
return unless for_object == @object
|
||||||
#puts "Object changed #{for_object} , at #{at}"
|
#puts "Object changed #{for_object} , at #{at}"
|
||||||
object = Register.machine.objects[@object_id]
|
variable = @object.get_instance_variables.get(at)
|
||||||
raise "error #{@object_id} , #{at}" unless object and ! object.is_a?(String)
|
|
||||||
variable = object.get_instance_variables.get(at)
|
|
||||||
if(variable)
|
if(variable)
|
||||||
f = object.get_instance_variable(variable)
|
f = @object.get_instance_variable(variable)
|
||||||
else
|
else
|
||||||
variable = (at - object.class.get_length_index).to_s
|
variable = (at - @object.class.get_length_index).to_s
|
||||||
f = object.internal_object_get(at)
|
f = @object.internal_object_get(at)
|
||||||
end
|
end
|
||||||
#puts "got var name #{variable}#{variable.class} for #{at}, #{f}"
|
#puts "got var name #{variable}#{variable.class} for #{at}, #{f}"
|
||||||
view = RefView.new( variable , oid(f) , @z )
|
view = RefView.new( variable , f , @z )
|
||||||
if( @children[at] )
|
if( @children[at] )
|
||||||
replace_at(at , view)
|
replace_at(at , view)
|
||||||
else
|
else
|
||||||
@ -41,24 +39,23 @@ class ObjectView < ListView
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def class_header(id)
|
def class_header
|
||||||
object = Register.machine.objects[id]
|
clazz = @object.class.name.split("::").last
|
||||||
clazz = object.class.name.split("::").last
|
[clazz, @object.object_id].join " : "
|
||||||
[clazz, id].join " : "
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def content_elements
|
def content_elements
|
||||||
object = Register.machine.objects[@object_id]
|
|
||||||
fields = [ConstantView.new("li" , "-------------------------")]
|
fields = [ConstantView.new("li" , "-------------------------")]
|
||||||
|
object = @object
|
||||||
if object and ! object.is_a?(String)
|
if object and ! object.is_a?(String)
|
||||||
object.get_instance_variables.each do |variable|
|
object.get_instance_variables.each do |variable|
|
||||||
f = object.get_instance_variable(variable)
|
f = object.get_instance_variable(variable)
|
||||||
fields << RefView.new( variable , oid(f) , @z )
|
fields << RefView.new( variable , f , @z )
|
||||||
end
|
end
|
||||||
if( object.is_a?(Parfait::Indexed) )
|
if( object.is_a?(Parfait::Indexed) )
|
||||||
index = 1
|
index = 1
|
||||||
object.each do | o|
|
object.each do | o|
|
||||||
fields << RefView.new( index.to_s , oid(o) , @z )
|
fields << RefView.new( index.to_s , o , @z )
|
||||||
index += 1
|
index += 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -66,8 +63,4 @@ class ObjectView < ListView
|
|||||||
fields
|
fields
|
||||||
end
|
end
|
||||||
|
|
||||||
def oid o
|
|
||||||
return o if o.is_a? Fixnum
|
|
||||||
return o.object_id
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
@ -22,7 +22,7 @@ class RefView < ListView
|
|||||||
end
|
end
|
||||||
|
|
||||||
def ref_text
|
def ref_text
|
||||||
"#{@name} : #{marker(@value)}"
|
"#{@name} : #{marker()}"
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_hover
|
def add_hover
|
||||||
@ -31,21 +31,21 @@ class RefView < ListView
|
|||||||
end
|
end
|
||||||
|
|
||||||
def is_object?( )
|
def is_object?( )
|
||||||
has = Register.machine.objects[@value]
|
return false if @value.is_a?(Fixnum)
|
||||||
return false unless has
|
return false unless @value
|
||||||
! is_label?
|
! is_label?
|
||||||
end
|
end
|
||||||
|
|
||||||
def is_string?()
|
def is_string?()
|
||||||
Register.machine.objects[@value].is_a? String
|
@value.is_a? String
|
||||||
end
|
end
|
||||||
|
|
||||||
def is_label?
|
def is_label?
|
||||||
Register.machine.objects[@value].is_a?(Register::Label)
|
@value.is_a?(Register::Label)
|
||||||
end
|
end
|
||||||
|
|
||||||
def is_nil?()
|
def is_nil?()
|
||||||
Register.machine.objects[@value].nil?
|
@value.nil?
|
||||||
end
|
end
|
||||||
|
|
||||||
def hover
|
def hover
|
||||||
@ -54,13 +54,13 @@ class RefView < ListView
|
|||||||
@element.off("hover")
|
@element.off("hover")
|
||||||
end
|
end
|
||||||
|
|
||||||
def marker id
|
def marker
|
||||||
if is_string?
|
if is_string?
|
||||||
str = @value
|
str = @value
|
||||||
elsif is_object?
|
elsif is_object?
|
||||||
var = Register.machine.objects[id]
|
var = @value
|
||||||
str = var.class.name.split("::").last[0,2]
|
str = var.class.name.split("::").last[0,2]
|
||||||
str + " : #{id.to_s}"
|
str + " : #{@value.object_id}"
|
||||||
elsif is_label?
|
elsif is_label?
|
||||||
str = "Label"
|
str = "Label"
|
||||||
else
|
else
|
||||||
|
@ -24,7 +24,7 @@ class RegistersView < ListView
|
|||||||
def register_changed reg , old , value
|
def register_changed reg , old , value
|
||||||
reg = reg.symbol unless reg.is_a? Symbol
|
reg = reg.symbol unless reg.is_a? Symbol
|
||||||
index = reg.to_s[1 .. -1 ].to_i
|
index = reg.to_s[1 .. -1 ].to_i
|
||||||
has = Register.machine.objects[value]
|
has = Register.machine.objects[value.object_id]
|
||||||
if( has )
|
if( has )
|
||||||
if has.is_a?(Register::Label)
|
if has.is_a?(Register::Label)
|
||||||
swap = ValueView.new "Label: #{has.name}"
|
swap = ValueView.new "Label: #{has.name}"
|
||||||
@ -38,12 +38,6 @@ class RegistersView < ListView
|
|||||||
# @elements[index].style["z-index"] = -index
|
# @elements[index].style["z-index"] = -index
|
||||||
end
|
end
|
||||||
|
|
||||||
def is_object?( id )
|
|
||||||
has = Register.machine.objects[id]
|
|
||||||
return false unless has
|
|
||||||
has.is_a?(Register::Label) ? false : true
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
class ValueView < ElementView
|
class ValueView < ElementView
|
||||||
|
@ -36,24 +36,23 @@ class SourceView < ElementView
|
|||||||
|
|
||||||
def update_method
|
def update_method
|
||||||
i = @interpreter.instruction
|
i = @interpreter.instruction
|
||||||
case i
|
if i.is_a?(Register::FunctionReturn)
|
||||||
when Register::Label
|
object = @interpreter.get_register( i.register )
|
||||||
if i.name.include?(".")
|
#puts "Object #{object}"
|
||||||
cl_name , method_name = *i.name.split(".")
|
|
||||||
clazz = Register.machine.space.get_class_by_name cl_name
|
|
||||||
method = clazz.get_instance_method( method_name)
|
|
||||||
else
|
|
||||||
return
|
|
||||||
end
|
|
||||||
@element.at_css(".source").text = i.name
|
|
||||||
when Register::FunctionReturn
|
|
||||||
object = @interpreter.object_for( i.register )
|
|
||||||
link = object.internal_object_get( i.index )
|
link = object.internal_object_get( i.index )
|
||||||
method = link.method
|
#puts "Link #{link}"
|
||||||
@element.at_css(".source").text = method.name
|
raise "No link method" unless link
|
||||||
|
i = link
|
||||||
|
end
|
||||||
|
return unless (i.is_a? Register::Label)
|
||||||
|
if i.is_method
|
||||||
|
cl_name , method_name = *i.name.split(".")
|
||||||
|
clazz = Register.machine.space.get_class_by_name cl_name
|
||||||
|
method = clazz.get_instance_method( method_name)
|
||||||
else
|
else
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
@element.at_css(".source").text = i.name
|
||||||
@text.inner_html = HtmlConverter.new.process( method.source )
|
@text.inner_html = HtmlConverter.new.process( method.source )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user