msfl_visitors 0.1.0.rc3 → 0.3.0.dev

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +2 -2
  4. data/README.md +9 -17
  5. data/lib/msfl_visitors/nodes/and.rb +0 -17
  6. data/lib/msfl_visitors/nodes/base.rb +3 -1
  7. data/lib/msfl_visitors/nodes/binary.rb +0 -7
  8. data/lib/msfl_visitors/nodes/dataset.rb +7 -0
  9. data/lib/msfl_visitors/nodes/equal.rb +17 -0
  10. data/lib/msfl_visitors/nodes/explicit_filter.rb +7 -0
  11. data/lib/msfl_visitors/nodes/filter.rb +16 -15
  12. data/lib/msfl_visitors/nodes/foreign.rb +7 -0
  13. data/lib/msfl_visitors/nodes/given.rb +7 -0
  14. data/lib/msfl_visitors/nodes/iterator.rb +7 -1
  15. data/lib/msfl_visitors/nodes/named_value.rb +16 -0
  16. data/lib/msfl_visitors/nodes/partial.rb +7 -0
  17. data/lib/msfl_visitors/nodes/set.rb +23 -0
  18. data/lib/msfl_visitors/nodes.rb +7 -9
  19. data/lib/msfl_visitors/parsers/msfl_parser.rb +33 -4
  20. data/lib/msfl_visitors/visitor.rb +165 -6
  21. data/lib/msfl_visitors.rb +0 -2
  22. data/msfl_visitors.gemspec +3 -3
  23. data/spec/nodes/iterator_spec.rb +21 -3
  24. data/spec/parsers/msfl_parser_spec.rb +61 -4
  25. data/spec/spec_helper.rb +5 -1
  26. data/spec/visitors/chewy_term_filter_spec.rb +460 -53
  27. metadata +11 -24
  28. data/lib/msfl_visitors/collectors/chewy/term_filter.rb +0 -19
  29. data/lib/msfl_visitors/collectors.rb +0 -1
  30. data/lib/msfl_visitors/nodes/binary_and.rb +0 -7
  31. data/lib/msfl_visitors/nodes/constant_value.rb +0 -11
  32. data/lib/msfl_visitors/nodes/grouping/close.rb +0 -9
  33. data/lib/msfl_visitors/nodes/grouping/grouping.rb +0 -24
  34. data/lib/msfl_visitors/nodes/grouping/open.rb +0 -9
  35. data/lib/msfl_visitors/nodes/set/close.rb +0 -9
  36. data/lib/msfl_visitors/nodes/set/delimiter.rb +0 -9
  37. data/lib/msfl_visitors/nodes/set/open.rb +0 -9
  38. data/lib/msfl_visitors/nodes/set/set.rb +0 -43
  39. data/lib/msfl_visitors/renderers/chewy/term_filter.rb +0 -59
  40. 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.1.0.rc3
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 00:00:00.000000000 Z
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.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.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/close.rb
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,7 +0,0 @@
1
- require_relative 'constant_value'
2
- module MSFLVisitors
3
- module Nodes
4
- class BinaryAnd < ConstantValue
5
- end
6
- end
7
- end
@@ -1,11 +0,0 @@
1
- require_relative 'base'
2
- module MSFLVisitors
3
- module Nodes
4
- class ConstantValue < Base
5
-
6
- def accept(visitor)
7
- visitor.visit self
8
- end
9
- end
10
- end
11
- end
@@ -1,9 +0,0 @@
1
- require_relative '../constant_value'
2
- module MSFLVisitors
3
- module Nodes
4
- module Grouping
5
- class Close < ConstantValue
6
- end
7
- end
8
- end
9
- end
@@ -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,9 +0,0 @@
1
- require_relative '../constant_value'
2
- module MSFLVisitors
3
- module Nodes
4
- module Grouping
5
- class Open < ConstantValue
6
- end
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- require_relative '../constant_value'
2
- module MSFLVisitors
3
- module Nodes
4
- module Set
5
- class Close < ConstantValue
6
- end
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- require_relative '../constant_value'
2
- module MSFLVisitors
3
- module Nodes
4
- module Set
5
- class Delimiter < ConstantValue
6
- end
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- require_relative '../constant_value'
2
- module MSFLVisitors
3
- module Nodes
4
- module Set
5
- class Open < ConstantValue
6
- end
7
- end
8
- end
9
- 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