fix register update
This commit is contained in:
parent
08beaa2d93
commit
e8a5a20db1
@ -114,7 +114,7 @@ class Interpreter
|
|||||||
value = object_for( @instruction.register )
|
value = object_for( @instruction.register )
|
||||||
object = object_for( @instruction.array )
|
object = object_for( @instruction.array )
|
||||||
object.internal_object_set( @instruction.index , value )
|
object.internal_object_set( @instruction.index , value )
|
||||||
trigger(:object_changed, @instruction.register )
|
trigger(:object_changed, @instruction.array )
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -12,11 +12,11 @@ module Main
|
|||||||
init_blocks
|
init_blocks
|
||||||
end
|
end
|
||||||
|
|
||||||
def tick
|
|
||||||
@interpreter.tick
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
def marker var
|
||||||
|
return "W" if var.is_a? String
|
||||||
|
var.class.name.split("::").last[0]
|
||||||
|
end
|
||||||
def init_machine
|
def init_machine
|
||||||
machine = Virtual.machine.boot
|
machine = Virtual.machine.boot
|
||||||
code = Ast::ExpressionList.new( [Ast::CallSiteExpression.new(:putstring, [] ,Ast::StringExpression.new("Hello again"))])
|
code = Ast::ExpressionList.new( [Ast::CallSiteExpression.new(:putstring, [] ,Ast::StringExpression.new("Hello again"))])
|
||||||
@ -28,7 +28,11 @@ module Main
|
|||||||
def init_registers
|
def init_registers
|
||||||
page._registers!.clear
|
page._registers!.clear
|
||||||
@interpreter.registers.each do |reg , val|
|
@interpreter.registers.each do |reg , val|
|
||||||
page._registers << RegisterModel.new( :name => reg , :value => val)
|
model = RegisterModel.new( :name => reg , :value => val)
|
||||||
|
page._registers << model
|
||||||
|
@interpreter.register_event(:register_changed, model)
|
||||||
|
@interpreter.register_event(:object_changed, model)
|
||||||
|
model.register_changed( reg , nil , @interpreter.registers[reg])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
def init_classes
|
def init_classes
|
||||||
|
@ -1,10 +1,40 @@
|
|||||||
class RegisterModel < Volt::Model
|
class RegisterModel < Volt::Model
|
||||||
field :name
|
field :name
|
||||||
field :value
|
field :value
|
||||||
|
field :fields
|
||||||
|
|
||||||
def register_changed reg , old , ins
|
def register_changed reg , old , ins
|
||||||
self.last._class_name = "" if( self.length > 0)
|
self.last._class_name = "" if( self.length > 0)
|
||||||
self << { :name => ins.to_s , :class_name => "active" }
|
self << { :name => ins.to_s , :class_name => "active" }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def register_changed reg , old , value
|
||||||
|
reg = reg.symbol unless reg.is_a? Symbol
|
||||||
|
return unless reg == name
|
||||||
|
self.value = value
|
||||||
|
calc_fields
|
||||||
|
end
|
||||||
|
|
||||||
|
def object_changed reg
|
||||||
|
reg = reg.symbol unless reg.is_a? Symbol
|
||||||
|
return unless reg == name
|
||||||
|
puts "Object changed in #{reg}"
|
||||||
|
calc_fields
|
||||||
|
end
|
||||||
|
|
||||||
|
def calc_fields
|
||||||
|
#puts "My id #{objects_id} , #{objects_id.class}"
|
||||||
|
object = Virtual.machine.objects[value]
|
||||||
|
if object and ! object.is_a?(String)
|
||||||
|
self.fields.clear
|
||||||
|
clazz = object.class.name.split("::").last
|
||||||
|
#puts "found #{clazz}"
|
||||||
|
self.fields << clazz
|
||||||
|
object.get_instance_variables.each do |variable|
|
||||||
|
f = object.get_instance_variable(variable)
|
||||||
|
self.fields << f
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
<div class="status-view">
|
<div class="status-view">
|
||||||
<div>
|
<div>
|
||||||
<button e-click="tick">Next</button>
|
<button e-click="@interpreter.tick">Next</button>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h4> Status </h4>
|
<h4> Status </h4>
|
||||||
@ -58,6 +58,11 @@
|
|||||||
<div>
|
<div>
|
||||||
{{ reg.value }}
|
{{ reg.value }}
|
||||||
</div>
|
</div>
|
||||||
|
{{ reg.fields.each do |attribute| }}
|
||||||
|
<div class="col-md-12">
|
||||||
|
{{marker(attribute)}} {{attribute.object_id}}
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user