Class: Seaquel::AST::Expression
- Inherits:
-
Object
- Object
- Seaquel::AST::Expression
show all
- Defined in:
- lib/seaquel/ast/expression.rb
Overview
Base class for all expression-type AST nodes.
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.binop(op, *aliases) ⇒ Object
6
7
8
9
10
11
12
13
14
|
# File 'lib/seaquel/ast/expression.rb', line 6
def self.binop op, *aliases
define_method(op) do |exp|
BinOp.new(op, self, exp)
end
aliases.each do |op_alias|
alias_method(op_alias, op)
end
end
|
.joinop(op, *aliases) ⇒ Object
15
16
17
18
19
20
21
22
23
|
# File 'lib/seaquel/ast/expression.rb', line 15
def self.joinop op, *aliases
define_method(op) do |exp|
JoinOp.new(op, [self, exp])
end
aliases.each do |op_alias|
alias_method(op_alias, op)
end
end
|
.unaryop(op, *aliases) ⇒ Object
24
25
26
27
28
29
30
31
32
|
# File 'lib/seaquel/ast/expression.rb', line 24
def self.unaryop op, *aliases
define_method(op) do
Unary.new(op, self)
end
aliases.each do |op_alias|
alias_method(op_alias, op)
end
end
|
Instance Method Details
#as(name) ⇒ Object
79
80
81
|
# File 'lib/seaquel/ast/expression.rb', line 79
def as name
Alias.new(name, self)
end
|
#asc ⇒ Object
83
84
85
|
# File 'lib/seaquel/ast/expression.rb', line 83
def asc
Order.new(:asc, self)
end
|
#desc ⇒ Object
86
87
88
|
# File 'lib/seaquel/ast/expression.rb', line 86
def desc
Order.new(:desc, self)
end
|
#lisp_inspect(type, *args) ⇒ Object
90
91
92
93
|
# File 'lib/seaquel/ast/expression.rb', line 90
def lisp_inspect type, *args
"(" +
[type.to_s, args.map(&:inspect)].join(' ') + ")"
end
|