raw source int the source view

This commit is contained in:
Torsten Ruger 2015-10-29 16:49:14 +02:00
parent 3477de8c81
commit 4bf8ac5345
7 changed files with 42 additions and 17 deletions

View File

@ -17,14 +17,14 @@ $susy: (
margin: 10px; margin: 10px;
} }
.file_view { .source_view {
@include span(4); @include span(4);
margin-left: span(1); margin-left: span(1);
} }
.source_view { @include span(8); } .instruction_view { @include span(6); }
.label_view { .labels_view {
@include span(3); @include span(3);
margin-right: span(1); margin-right: span(1);
height: 200px; height: 200px;

View File

@ -15,7 +15,7 @@ require "base/list_view"
# each seperate view is in it's own class. # each seperate view is in it's own class.
require "views/switch_view" require "views/switch_view"
require "views/status_view" require "views/status_view"
require "views/file_view" require "views/source_view"
require "views/blocks_view" require "views/blocks_view"
require "views/instruction_view" require "views/instruction_view"
require "views/registers_view" require "views/registers_view"
@ -27,11 +27,11 @@ class MainView < ListView
machine = Register.machine.boot machine = Register.machine.boot
code = s(:statements, s(:class, :Foo, s(:derives, nil), code = s(:statements, s(:class, :Foo, s(:derives, nil),
s(:statements, s(:class_field, :Integer, :x)))) s(:statements, s(:class_field, :Integer, :x))))
Soml::Compiler.compile( code ) Soml.compile( code )
machine.collect machine.collect
@interpreter = Interpreter::Interpreter.new @interpreter = Interpreter::Interpreter.new
super( [SwitchView.new(@interpreter) , super( [SwitchView.new(@interpreter) ,
FileView.new , SourceView.new(@interpreter) ,
BlocksView.new(@interpreter) , BlocksView.new(@interpreter) ,
InstructionView.new(@interpreter) , InstructionView.new(@interpreter) ,
StatusView.new(@interpreter) , StatusView.new(@interpreter) ,

View File

@ -12,7 +12,7 @@ class BlocksView < ListView
def draw def draw
super() super()
wrap_element div("div.label_view") << div("h4" , "Method + Block " ) << div("h4.method" , @method_name) wrap_element div("div.labels_view") << div("h4" , "Method + Block " ) << div("h4.method" , @method_name)
return @element return @element
end end

View File

@ -1,8 +0,0 @@
class FileView < ElementView
def draw
@element = div(".file_view") << div("h4" ,"Future")
end
end

View File

@ -24,7 +24,7 @@ class InstructionView < ListView
def draw def draw
super() super()
wrap_node_with @elements.first , div wrap_node_with @elements.first , div
wrap_element div(".source_view") << div("h4" ,"Register Machine Instruction") wrap_element div(".instruction_view") << div("h4" ,"Register Machine Instruction")
@element @element
end end
@ -38,4 +38,5 @@ class InstructionView < ListView
return "" unless @interpreter.instruction return "" unless @interpreter.instruction
@interpreter.instruction.to_s @interpreter.instruction.to_s
end end
end end

32
lib/views/source_view.rb Normal file
View File

@ -0,0 +1,32 @@
class SourceView < ElementView
def initialize interpreter
@interpreter = interpreter
@interpreter.register_event(:instruction_changed, self)
end
def draw
@text = div
@element = div(".source_view") << div("h4" ,"Future") << @text
@element
end
def instruction_changed
@text.text = source
end
def source
i = @interpreter.instruction
return "" unless i
case i.source
when AST::Node
i.source.to_s
when String
"String " + i.source
else
raise i.source.class.name
end
end
end

View File

@ -64,7 +64,7 @@ class SelectView < ElementView
promise.then do |response| promise.then do |response|
code = decode( response.text) code = decode( response.text)
machine = Register.machine.boot machine = Register.machine.boot
Soml::Compiler.compile( code ) Soml.compile( code )
machine.collect machine.collect
@interpreter.start machine.init @interpreter.start machine.init
end end