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.
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