# File kwartz.rb, line 2421 def translate_expr(expr_node, code='', level=0) node = expr_node case tkn = node.token when :variable code << '$' super(node, code, level) #when '[]', '{}' # right = node.right # if right.token == :string && right.left =~ /\A\w+\z/ then # translate_expr(node.left, code, level) # code << '.' # code << right.left # else # super(node, code, level) # end when '.+' code << '"' code << _translate_strcat(node) code << '"' when '!=' if node.left.token == :null then translate_expr(node.right, code, level) elsif node.right.token == :null then translate_expr(node.left, code, level) else super(node, code, level) end when '==' if node.left.token == :null then node.token = '!' node.left = node.right node.right = nil elsif node.right.token == :null then node.token = '!' node.right = nil end super(node, code, level) when :empty, :notempty ## s==empty => (!s || s==''), s!=empty => (s && s!='') flag = (tkn == :empty) str_node = ExprNode.new(:string, '', nil) l_node = flag ? ExprNode.new('!', node.left, nil) : node.left r_node = ExprNode.new(flag ? '==' : '!=', node.left, str_node) node2 = ExprNode.new(flag ? '||' : '&&', l_node, r_node) code << encode('(') translate_expr(node2, code, level) code << encode(')') when :null msg = "velocity cannot support keyword 'null'." raise TranslationError.new(msg) else super(node, code, level) end return code end