getting basics to work

This commit is contained in:
Torsten Ruger 2016-12-25 17:49:09 +02:00
parent 0aafeeeb22
commit cc6a050250
3 changed files with 20 additions and 12 deletions

View File

@ -39,7 +39,10 @@ class MainView < ListView
def initialize def initialize
machine = Register.machine.boot machine = Register.machine.boot
code = s(:statements, s(:return, s(:operator_value, :+, s(:int, 5), s(:int, 7)))) code = s(:statements, s(:call,
s(:name, :set_internal_byte),
s(:arguments, s(:int, 1), s(:int, 104)),
s(:receiver, s(:string, "Hello"))))
Typed.compile( code ) Typed.compile( code )
machine.collect machine.collect
@interpreter = Register::Interpreter.new @interpreter = Register::Interpreter.new

View File

@ -29,6 +29,8 @@ class SourceView < ElementView
end end
when String when String
@ticker.text = i.source @ticker.text = i.source
when Typed::Code
@ticker.text = i.source.to_s
else else
raise i.source.class.name raise i.source.class.name
end end
@ -45,14 +47,14 @@ class SourceView < ElementView
i = link i = link
end end
return unless (i.is_a? Register::Label) return unless (i.is_a? Register::Label)
if i.is_method return unless i.is_method
cl_name , method_name = *i.name.split(".") puts i.name
clazz = Register.machine.space.get_class_by_name cl_name.split(" ").last cl_t_name , method_name = *i.name.split(".")
raise "No class for #{cl_name} , #{i.name}" unless clazz class_name = cl_t_name.split(" ").last.split("_").first
method = clazz.get_instance_method( method_name) clazz = Register.machine.space.get_class_by_name class_name
else raise "No class for #{cl_name} , #{i.name}" unless clazz
return type = clazz.instance_type
end method = type.get_instance_method( method_name )
@element.at_css(".source").text = i.name @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

View File

@ -28,7 +28,7 @@ class SelectView < ElementView
end end
def get_codes def get_codes
@codes = ["1", "2"] @codes = ["set_internal_byte"]
add_selection add_selection
end end
@ -41,7 +41,7 @@ class SelectView < ElementView
list << code list << code
end end
Promise.new.then{ Promise.new.then{
select(@codes.first) select(@codes.first)
} }
@element.at_css(".code_list") << list @element.at_css(".code_list") << list
end end
@ -49,7 +49,10 @@ class SelectView < ElementView
def select code def select code
@interpreter.set_state :stopped @interpreter.set_state :stopped
@element.at_css(".selected").text = code @element.at_css(".selected").text = code
input = s(:statements, s(:return, s(:operator_value, :+, s(:int, 5), s(:int, 7)))) input = s(:statements, s(:call,
s(:name, :set_internal_byte),
s(:arguments, s(:int, 1), s(:int, 104)),
s(:receiver, s(:string, "Hello"))))
machine = Register.machine.boot machine = Register.machine.boot
#do_clean_compile #do_clean_compile