Class: DsLisp::ToRuby
Class Method Summary collapse
Class Method Details
.convert_name(name) ⇒ Object
5 6 7 |
# File 'lib/dslisprb.rb', line 5 def convert_name(name) {:lt => "<", :ht => :>, :plus => :+, :mult => "*", :divide => "/", :minus => "-" }[name] || name[1..-1] end |
.name_convert(name) ⇒ Object
9 10 11 |
# File 'lib/dslisprb.rb', line 9 def name_convert(name) {:< => "lt", :> => "ht", :+ => "plus", :* => "mult" , :/ => "divide", :- => "minus" }[name] || "_" + name.to_s end |
.to_ruby(code) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/dslisprb.rb', line 13 def to_ruby(code) if Array === code # lisp call function_name = code.first if (CommonLispOperators.methods - Class.methods).include?(function_name) CommonLispOperators.send(function_name, code) else strargs = code[1..-1].map{|x| "(#{to_ruby(x)})" }.join(",") "#{to_ruby(code.first)}.call(#{strargs})" end else if code == :nil "nil" elsif code == :T "true" elsif Symbol === code "eval(\"#{name_convert(code).to_s}\")" else code.inspect end end end |