fix vool method updating

a start, should do code too
This commit is contained in:
Torsten Ruger 2018-04-18 20:09:22 +03:00
parent e90597c332
commit 315be69851
2 changed files with 22 additions and 36 deletions

View File

@ -18,11 +18,11 @@ body
margin-left: 1%
.vool_view
width: 18%
width: 14%
margin-left: 1%
.mom_view
width: 20%
width: 24%
margin-left: 1%
.risc_view

View File

@ -17,45 +17,31 @@ class VoolView < ElementView
def instruction_changed
i = @interpreter.instruction
return "" unless i
update_method
case i.source
when Mom::Instruction
@ticker.text = i.source.class.name
# if e = @text.at_css("#i#{id}")
# if (old = @text.at_css(".fade_in"))
# old.remove_class("fade_in")
# end
# e.add_class "fade_in"
# end
when String
@ticker.text = i.source
when Risc::Instruction
@ticker.text = i.source.to_s
else
raise "Unrecognized source #{i.source.class.name} for #{i}"
end
end
def update_method
i = @interpreter.instruction
if i.is_a?(Risc::FunctionReturn)
link = @interpreter.get_register( i.register )
#puts "Link #{link}"
puts "Link #{link}:#{link.source}"
raise "No link method" unless link
i = link
end
return unless (i.is_a? Risc::Label)
return unless i.is_method
puts i.name
return
cl_t_name , method_name = *i.name.split(".")
class_name = cl_t_name.split(" ").last.split("_").first
clazz = Parfait.object_space.get_class_by_name class_name
raise "No class for #{cl_name} , #{i.name}" unless clazz
type = clazz.instance_type
method = type.get_method( method_name )
@element.at_css(".source").text = i.name
@text.inner_html = HtmlConverter.new.process( method.source )
method = nil
case i.source
when Mom::Instruction
if(i.source.is_a?(Mom::SimpleCall))
method = i.source.method
end
#TODO, give mom a source
when Parfait::TypedMethod
method = i.source
when String
return
else
raise "Unrecognized source #{i.source.class.name} for #{i}"
end
update_method(method) if method
end
def update_method(method)
@text.inner_html = method.name
end
end