Class: GitlabZOQL::Visitor
- Inherits:
-
Object
- Object
- GitlabZOQL::Visitor
- Defined in:
- lib/gitlab-zoql/visitor.rb
Instance Method Summary collapse
-
#initialize ⇒ Visitor
constructor
A new instance of Visitor.
- #visit(node) ⇒ Object
- #visit_And(o) ⇒ Object
- #visit_Column(o) ⇒ Object
- #visit_DateTime(o) ⇒ Object
- #visit_DirectSelect(o) ⇒ Object
- #visit_Equals(o) ⇒ Object
- #visit_False(_o) ⇒ Object
- #visit_Float(o) ⇒ Object
- #visit_FromClause(o) ⇒ Object
- #visit_Greater(o) ⇒ Object
- #visit_GreaterOrEquals(o) ⇒ Object
- #visit_Identifier(o) ⇒ Object
- #visit_Integer(o) ⇒ Object
- #visit_Less(o) ⇒ Object
- #visit_LessOrEquals(o) ⇒ Object
- #visit_Literal(o) ⇒ Object
- #visit_Not(o) ⇒ Object
- #visit_Null(_o) ⇒ Object
- #visit_Or(o) ⇒ Object
- #visit_Select(o) ⇒ Object
- #visit_SelectList(o) ⇒ Object
- #visit_String(o) ⇒ Object
- #visit_Table(o) ⇒ Object
- #visit_TableExpression(o) ⇒ Object
- #visit_True(_o) ⇒ Object
- #visit_WhereClause(o) ⇒ Object
Constructor Details
#initialize ⇒ Visitor
Returns a new instance of Visitor.
5 6 7 |
# File 'lib/gitlab-zoql/visitor.rb', line 5 def initialize @negated = false end |
Instance Method Details
#visit(node) ⇒ Object
9 10 11 |
# File 'lib/gitlab-zoql/visitor.rb', line 9 def visit(node) node.accept(self) end |
#visit_And(o) ⇒ Object
46 47 48 |
# File 'lib/gitlab-zoql/visitor.rb', line 46 def visit_And(o) search_condition('AND', o) end |
#visit_Column(o) ⇒ Object
78 79 80 |
# File 'lib/gitlab-zoql/visitor.rb', line 78 def visit_Column(o) o.name end |
#visit_DateTime(o) ⇒ Object
82 83 84 |
# File 'lib/gitlab-zoql/visitor.rb', line 82 def visit_DateTime(o) "'%s'" % escape(o.value.strftime('%Y-%m-%d %H:%M:%S')) end |
#visit_DirectSelect(o) ⇒ Object
13 14 15 16 17 |
# File 'lib/gitlab-zoql/visitor.rb', line 13 def visit_DirectSelect(o) [ o.query_expression ].compact.collect { |e| visit(e) }.join(' ') end |
#visit_Equals(o) ⇒ Object
66 67 68 69 70 71 72 |
# File 'lib/gitlab-zoql/visitor.rb', line 66 def visit_Equals(o) if @negated comparison('!=', o) else comparison('=', o) end end |
#visit_False(_o) ⇒ Object
114 115 116 |
# File 'lib/gitlab-zoql/visitor.rb', line 114 def visit_False(_o) 'FALSE' end |
#visit_Float(o) ⇒ Object
90 91 92 |
# File 'lib/gitlab-zoql/visitor.rb', line 90 def visit_Float(o) o.value.to_s end |
#visit_FromClause(o) ⇒ Object
34 35 36 |
# File 'lib/gitlab-zoql/visitor.rb', line 34 def visit_FromClause(o) "FROM #{arrayize(o.tables)}" end |
#visit_Greater(o) ⇒ Object
58 59 60 |
# File 'lib/gitlab-zoql/visitor.rb', line 58 def visit_Greater(o) comparison('>', o) end |
#visit_GreaterOrEquals(o) ⇒ Object
50 51 52 |
# File 'lib/gitlab-zoql/visitor.rb', line 50 def visit_GreaterOrEquals(o) comparison('>=', o) end |
#visit_Identifier(o) ⇒ Object
102 103 104 |
# File 'lib/gitlab-zoql/visitor.rb', line 102 def visit_Identifier(o) o.name end |
#visit_Integer(o) ⇒ Object
94 95 96 |
# File 'lib/gitlab-zoql/visitor.rb', line 94 def visit_Integer(o) o.value.to_s end |
#visit_Less(o) ⇒ Object
62 63 64 |
# File 'lib/gitlab-zoql/visitor.rb', line 62 def visit_Less(o) comparison('<', o) end |
#visit_LessOrEquals(o) ⇒ Object
54 55 56 |
# File 'lib/gitlab-zoql/visitor.rb', line 54 def visit_LessOrEquals(o) comparison('<=', o) end |
#visit_Literal(o) ⇒ Object
98 99 100 |
# File 'lib/gitlab-zoql/visitor.rb', line 98 def visit_Literal(o) quote(o.value) end |
#visit_Not(o) ⇒ Object
106 107 108 |
# File 'lib/gitlab-zoql/visitor.rb', line 106 def visit_Not(o) negate { visit(o.value) } end |
#visit_Null(_o) ⇒ Object
118 119 120 |
# File 'lib/gitlab-zoql/visitor.rb', line 118 def visit_Null(_o) 'NULL' end |
#visit_Or(o) ⇒ Object
42 43 44 |
# File 'lib/gitlab-zoql/visitor.rb', line 42 def visit_Or(o) search_condition('OR', o) end |
#visit_Select(o) ⇒ Object
19 20 21 |
# File 'lib/gitlab-zoql/visitor.rb', line 19 def visit_Select(o) "SELECT #{visit_all([o.list, o.table_expression].compact).join(' ')}" end |
#visit_SelectList(o) ⇒ Object
23 24 25 |
# File 'lib/gitlab-zoql/visitor.rb', line 23 def visit_SelectList(o) arrayize(o.columns) end |
#visit_String(o) ⇒ Object
86 87 88 |
# File 'lib/gitlab-zoql/visitor.rb', line 86 def visit_String(o) '%s' % escape(o.value) end |
#visit_Table(o) ⇒ Object
74 75 76 |
# File 'lib/gitlab-zoql/visitor.rb', line 74 def visit_Table(o) o.name end |
#visit_TableExpression(o) ⇒ Object
27 28 29 30 31 32 |
# File 'lib/gitlab-zoql/visitor.rb', line 27 def visit_TableExpression(o) [ o.from_clause, o.where_clause ].compact.collect { |e| visit(e) }.join(' ') end |
#visit_True(_o) ⇒ Object
110 111 112 |
# File 'lib/gitlab-zoql/visitor.rb', line 110 def visit_True(_o) 'TRUE' end |
#visit_WhereClause(o) ⇒ Object
38 39 40 |
# File 'lib/gitlab-zoql/visitor.rb', line 38 def visit_WhereClause(o) "WHERE #{visit(o.search_condition)}" end |