diff --git a/lib/views/classes_view.rb b/lib/views/classes_view.rb index f8c5f9c..7c2aacc 100644 --- a/lib/views/classes_view.rb +++ b/lib/views/classes_view.rb @@ -35,7 +35,7 @@ end class ClassView < RefView def initialize clazz - super(clazz.name , clazz.object_id , 20 ) + super(clazz.name , clazz , 20 ) end def ref_text diff --git a/lib/views/object_view.rb b/lib/views/object_view.rb index 52b0543..8bcee44 100644 --- a/lib/views/object_view.rb +++ b/lib/views/object_view.rb @@ -4,8 +4,8 @@ class ObjectView < ListView # z is the z-index - def initialize object_id , interpreter = nil , z = nil - @object_id = object_id + def initialize object , interpreter = nil , z = nil + @object = object @z = z @interpreter = interpreter @interpreter.register_event(:object_changed, self) if interpreter @@ -14,26 +14,24 @@ class ObjectView < ListView def draw @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 end def object_changed reg , at #puts "Object changed in #{reg} , at #{at}" for_object = @interpreter.get_register( reg ) - return unless for_object == @object_id + return unless for_object == @object #puts "Object changed #{for_object} , at #{at}" - object = Register.machine.objects[@object_id] - raise "error #{@object_id} , #{at}" unless object and ! object.is_a?(String) - variable = object.get_instance_variables.get(at) + variable = @object.get_instance_variables.get(at) if(variable) - f = object.get_instance_variable(variable) + f = @object.get_instance_variable(variable) else - variable = (at - object.class.get_length_index).to_s - f = object.internal_object_get(at) + variable = (at - @object.class.get_length_index).to_s + f = @object.internal_object_get(at) end #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] ) replace_at(at , view) else @@ -41,24 +39,23 @@ class ObjectView < ListView end end - def class_header(id) - object = Register.machine.objects[id] - clazz = object.class.name.split("::").last - [clazz, id].join " : " + def class_header + clazz = @object.class.name.split("::").last + [clazz, @object.object_id].join " : " end def content_elements - object = Register.machine.objects[@object_id] fields = [ConstantView.new("li" , "-------------------------")] + object = @object if object and ! object.is_a?(String) object.get_instance_variables.each do |variable| f = object.get_instance_variable(variable) - fields << RefView.new( variable , oid(f) , @z ) + fields << RefView.new( variable , f , @z ) end if( object.is_a?(Parfait::Indexed) ) index = 1 object.each do | o| - fields << RefView.new( index.to_s , oid(o) , @z ) + fields << RefView.new( index.to_s , o , @z ) index += 1 end end @@ -66,8 +63,4 @@ class ObjectView < ListView fields end - def oid o - return o if o.is_a? Fixnum - return o.object_id - end end diff --git a/lib/views/ref_view.rb b/lib/views/ref_view.rb index 8228768..06607e5 100644 --- a/lib/views/ref_view.rb +++ b/lib/views/ref_view.rb @@ -22,7 +22,7 @@ class RefView < ListView end def ref_text - "#{@name} : #{marker(@value)}" + "#{@name} : #{marker()}" end def add_hover @@ -31,21 +31,21 @@ class RefView < ListView end def is_object?( ) - has = Register.machine.objects[@value] - return false unless has - ! is_label? + return false if @value.is_a?(Fixnum) + return false unless @value + ! is_label? end def is_string?() - Register.machine.objects[@value].is_a? String + @value.is_a? String end def is_label? - Register.machine.objects[@value].is_a?(Register::Label) + @value.is_a?(Register::Label) end def is_nil?() - Register.machine.objects[@value].nil? + @value.nil? end def hover @@ -54,13 +54,13 @@ class RefView < ListView @element.off("hover") end - def marker id + def marker if is_string? str = @value elsif is_object? - var = Register.machine.objects[id] + var = @value str = var.class.name.split("::").last[0,2] - str + " : #{id.to_s}" + str + " : #{@value.object_id}" elsif is_label? str = "Label" else diff --git a/lib/views/registers_view.rb b/lib/views/registers_view.rb index 821e523..ab484e9 100644 --- a/lib/views/registers_view.rb +++ b/lib/views/registers_view.rb @@ -24,7 +24,7 @@ class RegistersView < ListView def register_changed reg , old , value reg = reg.symbol unless reg.is_a? Symbol index = reg.to_s[1 .. -1 ].to_i - has = Register.machine.objects[value] + has = Register.machine.objects[value.object_id] if( has ) if has.is_a?(Register::Label) swap = ValueView.new "Label: #{has.name}" @@ -38,12 +38,6 @@ class RegistersView < ListView # @elements[index].style["z-index"] = -index end - def is_object?( id ) - has = Register.machine.objects[id] - return false unless has - has.is_a?(Register::Label) ? false : true - end - end class ValueView < ElementView diff --git a/lib/views/source_view.rb b/lib/views/source_view.rb index e9ff3b5..e1ac882 100644 --- a/lib/views/source_view.rb +++ b/lib/views/source_view.rb @@ -36,24 +36,23 @@ class SourceView < ElementView def update_method i = @interpreter.instruction - case i - when Register::Label - if i.name.include?(".") - 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 ) + if i.is_a?(Register::FunctionReturn) + object = @interpreter.get_register( i.register ) + #puts "Object #{object}" link = object.internal_object_get( i.index ) - method = link.method - @element.at_css(".source").text = method.name + #puts "Link #{link}" + 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 return end + @element.at_css(".source").text = i.name @text.inner_html = HtmlConverter.new.process( method.source ) end