Module: Trxl::CaseExpression1
- Defined in:
- lib/trxl/trxl_grammar.rb
Instance Method Summary collapse
Instance Method Details
#eval(env = Environment.new) ⇒ Object
1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 |
# File 'lib/trxl/trxl_grammar.rb', line 1102 def eval(env = Environment.new) case_val = case_exp.eval(env) else_val = else_exp.eval(env) Kernel.eval <<-CASE_STMT lambda do case #{case_val.is_a?(String) ? "'#{case_val}'" : case_val} #{ruby_when_expressions(env)} else #{else_val.is_a?(String) ? "'#{else_val}'" : else_val} end end [] # call this lambda immediately CASE_STMT end |
#ruby_when_expressions(env = Environment.new) ⇒ Object
1115 1116 1117 1118 1119 1120 |
# File 'lib/trxl/trxl_grammar.rb', line 1115 def ruby_when_expressions(env = Environment.new) when_expression_list.eval(env).inject('') do |ruby, e| # possible string values have been wrapped in '' already ruby << "when #{e[:condition]} then #{e[:expression]} " end end |