msfl_visitors 0.1.0.rc3 → 0.3.0.dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +2 -2
- data/README.md +9 -17
- data/lib/msfl_visitors/nodes/and.rb +0 -17
- data/lib/msfl_visitors/nodes/base.rb +3 -1
- data/lib/msfl_visitors/nodes/binary.rb +0 -7
- data/lib/msfl_visitors/nodes/dataset.rb +7 -0
- data/lib/msfl_visitors/nodes/equal.rb +17 -0
- data/lib/msfl_visitors/nodes/explicit_filter.rb +7 -0
- data/lib/msfl_visitors/nodes/filter.rb +16 -15
- data/lib/msfl_visitors/nodes/foreign.rb +7 -0
- data/lib/msfl_visitors/nodes/given.rb +7 -0
- data/lib/msfl_visitors/nodes/iterator.rb +7 -1
- data/lib/msfl_visitors/nodes/named_value.rb +16 -0
- data/lib/msfl_visitors/nodes/partial.rb +7 -0
- data/lib/msfl_visitors/nodes/set.rb +23 -0
- data/lib/msfl_visitors/nodes.rb +7 -9
- data/lib/msfl_visitors/parsers/msfl_parser.rb +33 -4
- data/lib/msfl_visitors/visitor.rb +165 -6
- data/lib/msfl_visitors.rb +0 -2
- data/msfl_visitors.gemspec +3 -3
- data/spec/nodes/iterator_spec.rb +21 -3
- data/spec/parsers/msfl_parser_spec.rb +61 -4
- data/spec/spec_helper.rb +5 -1
- data/spec/visitors/chewy_term_filter_spec.rb +460 -53
- metadata +11 -24
- data/lib/msfl_visitors/collectors/chewy/term_filter.rb +0 -19
- data/lib/msfl_visitors/collectors.rb +0 -1
- data/lib/msfl_visitors/nodes/binary_and.rb +0 -7
- data/lib/msfl_visitors/nodes/constant_value.rb +0 -11
- data/lib/msfl_visitors/nodes/grouping/close.rb +0 -9
- data/lib/msfl_visitors/nodes/grouping/grouping.rb +0 -24
- data/lib/msfl_visitors/nodes/grouping/open.rb +0 -9
- data/lib/msfl_visitors/nodes/set/close.rb +0 -9
- data/lib/msfl_visitors/nodes/set/delimiter.rb +0 -9
- data/lib/msfl_visitors/nodes/set/open.rb +0 -9
- data/lib/msfl_visitors/nodes/set/set.rb +0 -43
- data/lib/msfl_visitors/renderers/chewy/term_filter.rb +0 -59
- data/spec/renderers/chewy/term_filter_spec.rb +0 -24
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: msfl_visitors
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0.dev
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Courtland Caldwell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msfl
|
@@ -16,20 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 1.1.6
|
19
|
+
version: '1.2'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '1.
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 1.1.6
|
26
|
+
version: '1.2'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: rake
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -115,48 +109,42 @@ files:
|
|
115
109
|
- circle.yml
|
116
110
|
- lib/msfl_visitors.rb
|
117
111
|
- lib/msfl_visitors/ast.rb
|
118
|
-
- lib/msfl_visitors/collectors.rb
|
119
|
-
- lib/msfl_visitors/collectors/chewy/term_filter.rb
|
120
112
|
- lib/msfl_visitors/nodes.rb
|
121
113
|
- lib/msfl_visitors/nodes/and.rb
|
122
114
|
- lib/msfl_visitors/nodes/base.rb
|
123
115
|
- lib/msfl_visitors/nodes/binary.rb
|
124
|
-
- lib/msfl_visitors/nodes/binary_and.rb
|
125
116
|
- lib/msfl_visitors/nodes/boolean.rb
|
126
117
|
- lib/msfl_visitors/nodes/comparison.rb
|
127
|
-
- lib/msfl_visitors/nodes/constant_value.rb
|
128
118
|
- lib/msfl_visitors/nodes/containment.rb
|
119
|
+
- lib/msfl_visitors/nodes/dataset.rb
|
129
120
|
- lib/msfl_visitors/nodes/date.rb
|
130
121
|
- lib/msfl_visitors/nodes/date_time.rb
|
131
122
|
- lib/msfl_visitors/nodes/equal.rb
|
123
|
+
- lib/msfl_visitors/nodes/explicit_filter.rb
|
132
124
|
- lib/msfl_visitors/nodes/field.rb
|
133
125
|
- lib/msfl_visitors/nodes/filter.rb
|
126
|
+
- lib/msfl_visitors/nodes/foreign.rb
|
127
|
+
- lib/msfl_visitors/nodes/given.rb
|
134
128
|
- lib/msfl_visitors/nodes/greater_than.rb
|
135
129
|
- lib/msfl_visitors/nodes/greater_than_equal.rb
|
136
|
-
- lib/msfl_visitors/nodes/grouping/close.rb
|
137
|
-
- lib/msfl_visitors/nodes/grouping/grouping.rb
|
138
|
-
- lib/msfl_visitors/nodes/grouping/open.rb
|
139
130
|
- lib/msfl_visitors/nodes/iterator.rb
|
140
131
|
- lib/msfl_visitors/nodes/less_than.rb
|
141
132
|
- lib/msfl_visitors/nodes/less_than_equal.rb
|
133
|
+
- lib/msfl_visitors/nodes/named_value.rb
|
142
134
|
- lib/msfl_visitors/nodes/number.rb
|
135
|
+
- lib/msfl_visitors/nodes/partial.rb
|
143
136
|
- lib/msfl_visitors/nodes/range_value.rb
|
144
|
-
- lib/msfl_visitors/nodes/set
|
145
|
-
- lib/msfl_visitors/nodes/set/delimiter.rb
|
146
|
-
- lib/msfl_visitors/nodes/set/open.rb
|
147
|
-
- lib/msfl_visitors/nodes/set/set.rb
|
137
|
+
- lib/msfl_visitors/nodes/set.rb
|
148
138
|
- lib/msfl_visitors/nodes/time.rb
|
149
139
|
- lib/msfl_visitors/nodes/value.rb
|
150
140
|
- lib/msfl_visitors/nodes/word.rb
|
151
141
|
- lib/msfl_visitors/parsers/msfl_parser.rb
|
152
|
-
- lib/msfl_visitors/renderers/chewy/term_filter.rb
|
153
142
|
- lib/msfl_visitors/visitor.rb
|
154
143
|
- msfl_visitors.gemspec
|
155
144
|
- simplecov_custom_profiles.rb
|
156
145
|
- spec/ast_spec.rb
|
157
146
|
- spec/nodes/iterator_spec.rb
|
158
147
|
- spec/parsers/msfl_parser_spec.rb
|
159
|
-
- spec/renderers/chewy/term_filter_spec.rb
|
160
148
|
- spec/spec_helper.rb
|
161
149
|
- spec/visitors/chewy_term_filter_spec.rb
|
162
150
|
homepage: https://github.com/Referly/msfl_visitors
|
@@ -187,7 +175,6 @@ test_files:
|
|
187
175
|
- spec/ast_spec.rb
|
188
176
|
- spec/nodes/iterator_spec.rb
|
189
177
|
- spec/parsers/msfl_parser_spec.rb
|
190
|
-
- spec/renderers/chewy/term_filter_spec.rb
|
191
178
|
- spec/spec_helper.rb
|
192
179
|
- spec/visitors/chewy_term_filter_spec.rb
|
193
180
|
has_rdoc:
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'delegate'
|
2
|
-
|
3
|
-
module MSFLVisitors
|
4
|
-
module Collectors
|
5
|
-
module Chewy
|
6
|
-
class TermFilter < SimpleDelegator
|
7
|
-
|
8
|
-
def initialize
|
9
|
-
__setobj__(String.new)
|
10
|
-
end
|
11
|
-
|
12
|
-
def <<(obj)
|
13
|
-
__getobj__ << (obj.to_s)
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
require_relative 'collectors/chewy/term_filter'
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require_relative '../base'
|
2
|
-
require_relative 'close'
|
3
|
-
require_relative 'open'
|
4
|
-
module MSFLVisitors
|
5
|
-
module Nodes
|
6
|
-
module Grouping
|
7
|
-
class Grouping < Base
|
8
|
-
|
9
|
-
attr_accessor :contents
|
10
|
-
|
11
|
-
def accept(visitor)
|
12
|
-
Open.new.accept visitor
|
13
|
-
contents.accept visitor
|
14
|
-
Close.new.accept visitor
|
15
|
-
end
|
16
|
-
|
17
|
-
# @param node [MSFL::Nodes::Base] the node that the grouping surrounds
|
18
|
-
def initialize(node)
|
19
|
-
self.contents = node
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require_relative '../base'
|
2
|
-
module MSFLVisitors
|
3
|
-
module Nodes
|
4
|
-
module Set
|
5
|
-
class Set < Base
|
6
|
-
|
7
|
-
extend Forwardable
|
8
|
-
|
9
|
-
attr_accessor :contents
|
10
|
-
|
11
|
-
def_delegators :contents, :count, :first, :each
|
12
|
-
|
13
|
-
def accept(visitor)
|
14
|
-
nodes = Array.new
|
15
|
-
nodes << Open.new
|
16
|
-
if contents.count > 0
|
17
|
-
contents.each do |item|
|
18
|
-
nodes << item
|
19
|
-
nodes << Delimiter.new
|
20
|
-
end
|
21
|
-
# Remove the last (and therefore extra) delimiter
|
22
|
-
nodes.pop
|
23
|
-
end
|
24
|
-
nodes << Close.new
|
25
|
-
|
26
|
-
nodes.each do |node|
|
27
|
-
node.accept visitor
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
# @param nodes [Array<MSFL::Nodes::Base>] the nodes that the filter surrounds
|
32
|
-
def initialize(nodes)
|
33
|
-
self.contents = Array(nodes)
|
34
|
-
end
|
35
|
-
|
36
|
-
def ==(other)
|
37
|
-
self.class == other.class &&
|
38
|
-
contents == other.contents
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
module MSFLVisitors
|
2
|
-
module Renderers
|
3
|
-
module Chewy
|
4
|
-
class TermFilter
|
5
|
-
BINARY_OPERATORS = {
|
6
|
-
Nodes::GreaterThan => ' > ',
|
7
|
-
Nodes::LessThan => ' < ',
|
8
|
-
Nodes::GreaterThanEqual => ' >= ',
|
9
|
-
Nodes::LessThanEqual => ' <= ',
|
10
|
-
Nodes::Equal => ' == ',
|
11
|
-
}
|
12
|
-
|
13
|
-
def render(node)
|
14
|
-
case node
|
15
|
-
|
16
|
-
when Nodes::Comparison
|
17
|
-
BINARY_OPERATORS[node.class]
|
18
|
-
|
19
|
-
when Nodes::BinaryAnd
|
20
|
-
' & '
|
21
|
-
|
22
|
-
when Nodes::Date, Nodes::Time
|
23
|
-
node.value.iso8601
|
24
|
-
|
25
|
-
when Nodes::Boolean, Nodes::Number
|
26
|
-
node.value
|
27
|
-
|
28
|
-
when Nodes::Field
|
29
|
-
node.value.to_s
|
30
|
-
|
31
|
-
when Nodes::Word
|
32
|
-
%("#{node.value.to_s}")
|
33
|
-
|
34
|
-
when Nodes::Grouping::Close
|
35
|
-
' )'
|
36
|
-
|
37
|
-
when Nodes::Grouping::Open
|
38
|
-
'( '
|
39
|
-
|
40
|
-
when Nodes::Set::Close
|
41
|
-
' ]'
|
42
|
-
|
43
|
-
when Nodes::Set::Delimiter
|
44
|
-
', '
|
45
|
-
|
46
|
-
when Nodes::Set::Open
|
47
|
-
'[ '
|
48
|
-
|
49
|
-
when Nodes::Containment
|
50
|
-
' == '
|
51
|
-
|
52
|
-
else
|
53
|
-
fail ArgumentError.new("Unrecognized node type: #{node.class}")
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe MSFLVisitors::Renderers::Chewy::TermFilter do
|
4
|
-
|
5
|
-
let(:node) { fail ArgumentError, "You must define the node variable in each scope." }
|
6
|
-
|
7
|
-
let(:collector) { String.new }
|
8
|
-
|
9
|
-
let(:renderer) { MSFLVisitors::Renderers::Chewy::TermFilter.new }
|
10
|
-
|
11
|
-
describe "#render" do
|
12
|
-
|
13
|
-
let(:node) { double('Unsupported Type') }
|
14
|
-
|
15
|
-
subject { renderer.render node }
|
16
|
-
|
17
|
-
context "when attempting to render an unsupported type" do
|
18
|
-
|
19
|
-
it "raises an ArgumentError" do
|
20
|
-
expect { subject }.to raise_error ArgumentError
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|