diff --git a/lib/views/source_view.rb b/lib/views/source_view.rb
index 1f8e89b..d9edf24 100644
--- a/lib/views/source_view.rb
+++ b/lib/views/source_view.rb
@@ -49,34 +49,40 @@ class ToCode < AST::Processor
puts "Missing: " + s.type
s.to_sexp
end
+ def div statement , html
+ "
" + html + "
"
+ end
+ def span statement , html
+ "" + html + ""
+ end
def on_function statement
return_type , name , parameters, kids , receiver = *statement
- str = return_type + " " + name.to_a.first + "("
+ str = return_type + " "
+ str += receiver + "." if receiver
+ str += name.to_a.first + "("
str += process(parameters) + ")
"
str += process(kids) + "end
"
- str
+ div(statement,str)
end
def on_parameters statement
process_all(statement.children).join(",")
end
def on_parameter p
type , name = *p
- type + " " + name
+ span(type,type) + " " + span(name,name)
end
-# str += parameters.children.collect { |p| process(p)}.join(",") + ")
"
-# str += kids.collect { |p| process(p)}.join("
")
-
def on_string s
- "'" + s.first + "'"
+ span(s, "'" + s.first + "'")
end
def on_field_def statement
type , name , value = *statement
- str = type + " " + name
+ str = span(type, type) + " " + span(name,name)
str += " = #{process(value)}" if value
- str
+ div(s,str)
end
def on_return statement
- "return " + process(statement.first )
+ str = "return " + process(statement.first )
+ div(statement,str)
end
def on_false_statements s
on_statements s
@@ -88,9 +94,8 @@ class ToCode < AST::Processor
str = ""
s.children.each do |c|
str += process(c).to_s
- str += "
"
end
- str
+ div(s,str)
end
def on_if_statement statement
branch_type , condition , if_true , if_false = *statement
@@ -98,34 +103,37 @@ class ToCode < AST::Processor
ret = "if_#{branch_type}(" + process(condition) + ")
" + process(if_true)
ret += "else" + "
" + process(if_false) if if_false
ret += "end"
+ div(statement,ret)
end
def on_assignment statement
name , value = *statement
name = name.to_a.first
v = process(value)
- name + " = " + v
+ str = name + " = " + v
+ div(statement,str)
end
def on_call c
name , arguments , receiver = *c
ret = process(name)
- ret = process(receiver.first) + "." + ret if receiver
+ ret += process(receiver.first) + "." + ret if receiver
ret += "("
- ret += process(arguments).join(",")
+ ret += process(arguments).join(",")
ret += ")"
+ span(c,ret)
end
def on_operator_value statement
operator , left_e , right_e = *statement
left_reg = process(left_e)
right_reg = process(right_e)
- left_reg + " " + operator + " " + right_reg
+ span(statement , left_reg + " " + operator + " " + right_reg )
end
def on_arguments args
args.children.collect{|c| process(c)}
end
def on_name name
- name.first
+ span(name,name.first)
end
def on_int i
- i.first.to_s
+ span(i , i.first.to_s)
end
end