132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
# File 'lib/rjq/module_loader.rb', line 132
def evaluate(node)
case node
when AST::Literal
Value.deep_copy(node.value)
when AST::StringLiteral
raise CompileError, 'Module metadata must be constant' unless node.value.is_a?(String)
node.value
when AST::ArrayLiteral
expression = node.instance_variable_get(:@expression)
expression ? evaluate_sequence(expression) : []
when AST::ObjectLiteral
evaluate_object_literal(node)
when AST::UnaryOp
evaluate_unary(node)
else
raise CompileError, 'Module metadata must be constant'
end
end
|