CloudSesame 0.4.6 → 0.5.0

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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +4 -1
  3. data/cloud_sesame.gemspec +2 -2
  4. data/lib/cloud_sesame/domain/base.rb +40 -30
  5. data/lib/cloud_sesame/query/ast/field_array.rb +4 -5
  6. data/lib/cloud_sesame/query/ast/literal.rb +11 -12
  7. data/lib/cloud_sesame/query/ast/multi_expression_operator.rb +4 -9
  8. data/lib/cloud_sesame/query/ast/near.rb +3 -1
  9. data/lib/cloud_sesame/query/ast/not.rb +3 -1
  10. data/lib/cloud_sesame/query/ast/root.rb +1 -1
  11. data/lib/cloud_sesame/query/ast/single_expression_operator.rb +3 -3
  12. data/lib/cloud_sesame/query/builder.rb +20 -12
  13. data/lib/cloud_sesame/query/domain/block.rb +65 -0
  14. data/lib/cloud_sesame/query/domain/chaining_block.rb +44 -0
  15. data/lib/cloud_sesame/query/domain/literal.rb +39 -0
  16. data/lib/cloud_sesame/query/dsl/block_methods.rb +6 -27
  17. data/lib/cloud_sesame/query/dsl/field_accessors.rb +24 -0
  18. data/lib/cloud_sesame/query/dsl/field_array_methods.rb +5 -9
  19. data/lib/cloud_sesame/query/dsl/filter_query_methods.rb +3 -3
  20. data/lib/cloud_sesame/query/dsl/operator_methods.rb +8 -15
  21. data/lib/cloud_sesame/query/dsl/range_methods.rb +4 -4
  22. data/lib/cloud_sesame/query/dsl/response_methods.rb +1 -1
  23. data/lib/cloud_sesame/query/dsl/scope_accessors.rb +28 -0
  24. data/lib/cloud_sesame/query/error/scope_not_defined.rb +8 -0
  25. data/lib/cloud_sesame/query/scope.rb +21 -0
  26. data/lib/cloud_sesame.rb +14 -7
  27. data/spec/cloud_sesame/query/ast/single_expression_operator_spec.rb +1 -1
  28. data/spec/cloud_sesame/query/dsl/block_methods_spec.rb +54 -70
  29. data/spec/cloud_sesame/query/dsl/{field_methods_spec.rb → field_accessors_spec.rb} +1 -1
  30. data/spec/cloud_sesame_spec.rb +35 -22
  31. metadata +30 -34
  32. data/lib/cloud_sesame/query/ast/block_chaining_relation.rb +0 -30
  33. data/lib/cloud_sesame/query/dsl/base.rb +0 -27
  34. data/lib/cloud_sesame/query/dsl/block_chaining_methods.rb +0 -26
  35. data/lib/cloud_sesame/query/dsl/field_methods.rb +0 -16
  36. data/lib/cloud_sesame/query/dsl/scope_methods.rb +0 -33
  37. data/spec/cloud_sesame/query/ast/block_chaining_relation_spec.rb +0 -44
  38. data/spec/cloud_sesame/query/dsl/base_spec.rb +0 -31
  39. data/spec/cloud_sesame/query/dsl/block_chaining_methods_spec.rb +0 -64
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6cf32f340cf6841019d81977531954030a530ed3
4
- data.tar.gz: d7988194d15066773475a1d31727eb5c9f792f0a
3
+ metadata.gz: e496630f0f95249813a64396a44c5afb138ac417
4
+ data.tar.gz: 8b1ea78470d4452d2328fc3f64b7966064028e3e
5
5
  SHA512:
6
- metadata.gz: 7982d45b231fb2bc993ebabe4f80bd0cab1339e5bdd752ea09ba844e211461167308109a9f5125e13e6d3b8ab544507ee65e5be77976a0e610218ea7cb243933
7
- data.tar.gz: c7b726fe0702ebe5ed7238dfab3e7799346e672feaec162893430c02495d6ec1c6e738e0ffbaf3827c1717cf6981023d94a6bbdb93aff67c4f8fccdb239aeaf0
6
+ metadata.gz: a9fda75e99cc51ab852b0b08603d661c6ae9b554af033c6dbd1ecace4768a9f3d2067ff5ad31d138be426095d4222b697d2436c6e998fb31879932d97c3b5f3a
7
+ data.tar.gz: 398c9345b3d76df8114c2d83077749ed8923f22f4a8f21112b58fed691ca3a8b58d1e430923481e08632434ac3711723a5ae1437ecf77e2630e52e5b1e6da34c
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- CloudSesame (0.4.6)
4
+ CloudSesame (0.5.0)
5
5
  activesupport (~> 3.2)
6
6
  aws-sdk (~> 2)
7
7
 
@@ -82,3 +82,6 @@ DEPENDENCIES
82
82
  pry (~> 0)
83
83
  rspec (~> 3)
84
84
  ruby-prof
85
+
86
+ BUNDLED WITH
87
+ 1.11.2
data/cloud_sesame.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'CloudSesame'
3
- s.version = '0.4.6'
4
- s.date = '2016-01-20'
3
+ s.version = '0.5.0'
4
+ s.date = '2016-02-01'
5
5
  s.summary = "AWS CloudSearch Query DSL"
6
6
  s.description = "AWS CloudSearch Query DSL"
7
7
  s.authors = ['Scott Chu', 'Emily Fan', 'Greg Ward', 'David McHoull',
@@ -3,11 +3,14 @@ module CloudSesame
3
3
  class Base
4
4
  extend Forwardable
5
5
 
6
- attr_reader :searchable, :result
7
-
8
6
  def_delegator :client, :config
9
7
 
10
- DEFINITIONS = {}
8
+ attr_accessor :_caller
9
+ attr_reader :searchable
10
+
11
+ def self.definitions
12
+ @definitions ||= {}
13
+ end
11
14
 
12
15
  def initialize(searchable)
13
16
  @searchable = searchable
@@ -27,29 +30,28 @@ module CloudSesame
27
30
 
28
31
  # DEFAULT CONTEXT METHODS
29
32
  # =========================================
33
+
30
34
  def default_size(value)
31
35
  (context[:page] ||= {})[:size] = value
32
36
  end
33
37
 
34
- def field(name, options = {})
35
- field_name = (options[:as] || name)
36
- add_query field_name, options.delete(:query)
37
- add_facet field_name, options.delete(:facet)
38
-
39
- add_field_expression name.to_sym, options
40
- end
41
-
42
38
  def define_sloppiness(value)
43
39
  (context[:query] ||= {})[:sloppiness] = value.to_i
44
40
  end
45
41
 
46
- def define_fuzziness(proc = nil, &block)
47
- block = proc unless block_given?
42
+ def define_fuzziness(&block)
48
43
  (context[:query] ||= {})[:fuzziness] = Query::Node::Fuzziness.new(&block)
49
44
  end
50
45
 
46
+ # TODO
51
47
  def default_scope(proc, &block)
52
- scope :default, proc, &block
48
+ end
49
+
50
+ def field(name, options = {})
51
+ field_name = (options[:as] || name)
52
+ add_query field_name, options.delete(:query)
53
+ add_facet field_name, options.delete(:facet)
54
+ add_field name.to_sym, options
53
55
  end
54
56
 
55
57
  def scope(name, proc = nil, &block)
@@ -59,48 +61,56 @@ module CloudSesame
59
61
 
60
62
  private
61
63
 
62
- def ensure_hash(options)
64
+ def to_hash(options)
63
65
  options.is_a?(Hash) ? options : {}
64
66
  end
65
67
 
66
68
  def add_query(name, options)
67
- ((context[:query_options] ||= {})[:fields] ||= {})[name] = ensure_hash(options) if options
69
+ ((context[:query_options] ||= {})[:fields] ||= {})[name] = to_hash(options) if options
68
70
  end
69
71
 
70
72
  def add_facet(name, options)
71
- (context[:facet] ||= {})[name] = ensure_hash(options) if options
73
+ (context[:facet] ||= {})[name] = to_hash(options) if options
72
74
  end
73
75
 
74
- def add_field_expression(name, options)
75
- overriding_field_expression name, options
76
- create_default_field_expression name, options
77
- create_field_expression_writer name, options
76
+ def add_field(name, options)
77
+ replace_existing_field name, options
78
+ create_default_literal name, options
79
+ create_field_accessor name
80
+ (context[:filter_query][:fields] ||= {})[name] = options
78
81
  end
79
82
 
80
- def overriding_field_expression(name, options)
83
+ def replace_existing_field(name, options)
81
84
  fields = ((context[:filter_query] ||= {})[:fields] ||= {})
82
85
  if (as = options[:as]) && (existing = fields.delete(as))
83
86
  options.merge! existing
84
87
  end
85
88
  end
86
89
 
87
- def create_default_field_expression(name, options)
90
+ def create_default_literal(name, options)
88
91
  if (block = options.delete(:default))
89
- (context[:filter_query][:default] ||= []) << block
92
+ caller = block.binding.eval "self"
93
+ node = Query::Domain::Literal.new(name, options, caller)._eval(&block)
94
+ filter_query_defaults << node
90
95
  end
91
96
  end
92
97
 
93
- def create_field_expression_writer(name, options)
94
- (context[:filter_query][:fields] ||= {})[name] = options
95
- Query::DSL::FieldMethods.send(:define_method, name) do |*values|
96
- literal name, *values
98
+ def filter_query_defaults
99
+ context[:filter_query][:defaults] ||= []
100
+ end
101
+
102
+ def create_field_accessor(name)
103
+ Query::DSL::FieldAccessors.send(:define_method, name) do |*values, &block|
104
+ literal name, *values, &block
97
105
  end
98
106
  end
99
107
 
100
108
  def method_missing(name, *args, &block)
101
109
  builder.send(name, *args, &block)
102
- # rescue NoMethodError
103
- # super
110
+ rescue NoMethodError => e
111
+ _caller.send(name, *args, &block) if _caller
112
+ rescue NoMethodError => e
113
+ super
104
114
  end
105
115
 
106
116
  end
@@ -4,8 +4,8 @@ module CloudSesame
4
4
  class FieldArray < Array
5
5
  include DSL::FieldArrayMethods
6
6
 
7
- attr_accessor :dsl_return
8
- attr_reader :field, :dsl_scope, :dsl_context
7
+ attr_accessor :_scope, :_return
8
+ attr_reader :field
9
9
 
10
10
  def field=(field)
11
11
  parents.clear
@@ -16,9 +16,8 @@ module CloudSesame
16
16
  @parents ||= []
17
17
  end
18
18
 
19
- def dsl_scope=(dsl_scope)
20
- @dsl_context = dsl_scope.context
21
- @dsl_scope = dsl_scope
19
+ def _context
20
+ _scope && _scope.context
22
21
  end
23
22
 
24
23
  def compile
@@ -9,18 +9,21 @@ module CloudSesame
9
9
  attr_accessor :field
10
10
  attr_reader :options, :value
11
11
 
12
- def initialize(field, value, options = {}, &block)
13
- @field = field
14
- @value = Value.parse value if value
15
- @value = Value.parse(ValueEvaluator.new.instance_exec &block) if block_given?
12
+ def initialize(field, value = nil, options = {})
13
+ @field, @options = field, options
14
+ self.value = value
15
+ end
16
16
 
17
- @options = options
18
- is_included
17
+ def value=(value)
18
+ if value
19
+ @value = Value.parse value
20
+ is_included
21
+ end
19
22
  end
20
23
 
21
24
  def is_for(field, options = {})
22
25
  @field = field
23
- @options = options.merge @options
26
+ @options.merge! options
24
27
  end
25
28
 
26
29
  def is_included
@@ -36,7 +39,7 @@ module CloudSesame
36
39
  end
37
40
 
38
41
  def compile(detailed = false)
39
- detailed ? detailed_format : standard_format
42
+ (detailed ? detailed_format : standard_format) if value
40
43
  end
41
44
 
42
45
  private
@@ -57,10 +60,6 @@ module CloudSesame
57
60
  "'#{ data.gsub(SINGLE_QUATE) { ESCAPE_QUATE } }'"
58
61
  end
59
62
 
60
- class ValueEvaluator
61
- include DSL::RangeMethods
62
- end
63
-
64
63
  end
65
64
  end
66
65
  end
@@ -2,20 +2,15 @@ module CloudSesame
2
2
  module Query
3
3
  module AST
4
4
  class MultiExpressionOperator < Operator
5
- include DSL::Base
6
- include DSL::BlockMethods
7
- include DSL::FieldMethods
8
- include DSL::FilterQueryMethods
9
- include DSL::OperatorMethods
10
- include DSL::RangeMethods
11
- include DSL::ScopeMethods
12
5
 
13
6
  def children
14
7
  @children ||= create_children
15
8
  end
16
9
 
17
10
  def compile
18
- "(#{ symbol }#{ boost } #{ children.compile })" unless children.empty?
11
+ if !children.empty? && (compiled = children.compile) && !compiled.empty?
12
+ "(#{ symbol }#{ boost } #{ compiled })"
13
+ end
19
14
  end
20
15
 
21
16
  def <<(object)
@@ -30,7 +25,7 @@ module CloudSesame
30
25
 
31
26
  def create_children
32
27
  array = FieldArray.new
33
- array.dsl_scope = dsl_scope
28
+ array._scope = self
34
29
  array
35
30
  end
36
31
 
@@ -6,7 +6,9 @@ module CloudSesame
6
6
  SYMBOL = :near
7
7
 
8
8
  def compile(detailed = nil)
9
- "(#{ symbol }#{ boost }#{ distance } #{ child.compile operator_detailed })" if child
9
+ if child && (compiled = child.compile operator_detailed) && !compiled.empty?
10
+ "(#{ symbol }#{ boost }#{ distance } #{ compiled })"
11
+ end
10
12
  end
11
13
 
12
14
  def distance
@@ -10,7 +10,9 @@ module CloudSesame
10
10
  end
11
11
 
12
12
  def compile
13
- "(#{ symbol }#{ boost } #{ child.compile })" if child
13
+ if child && (compiled = child.compile) && !compiled.empty?
14
+ "(#{ symbol }#{ boost } #{ compiled })"
15
+ end
14
16
  end
15
17
 
16
18
  end
@@ -16,7 +16,7 @@ module CloudSesame
16
16
 
17
17
  def create_children
18
18
  array = FieldArray.new(context[:defaults] || [])
19
- array.dsl_scope = dsl_scope
19
+ array._scope = self
20
20
  array
21
21
  end
22
22
 
@@ -2,8 +2,6 @@ module CloudSesame
2
2
  module Query
3
3
  module AST
4
4
  class SingleExpressionOperator < Operator
5
- include DSL::Base
6
- include DSL::BlockMethods
7
5
 
8
6
  DETAILED = false
9
7
 
@@ -22,7 +20,9 @@ module CloudSesame
22
20
  end
23
21
 
24
22
  def compile(detailed = nil)
25
- "(#{ symbol }#{ boost } #{ child.compile operator_detailed })" if child
23
+ if child && (compiled = child.compile operator_detailed) && !compiled.empty?
24
+ "(#{ symbol }#{ boost } #{ compiled })"
25
+ end
26
26
  end
27
27
 
28
28
  def operator_detailed
@@ -1,20 +1,17 @@
1
1
  module CloudSesame
2
2
  module Query
3
3
  class Builder
4
- include DSL::Base
5
- include DSL::PageMethods
6
4
  include DSL::QueryMethods
7
- include DSL::ReturnMethods
8
- include DSL::SortMethods
9
-
10
- # # Filter Query DSL
5
+ include DSL::ResponseMethods
11
6
  include DSL::BlockMethods
12
- include DSL::FieldMethods
7
+ include DSL::FieldAccessors
13
8
  include DSL::FilterQueryMethods
14
- include DSL::ScopeMethods
15
- include DSL::ResponseMethods
9
+ include DSL::ScopeAccessors
10
+ include DSL::PageMethods
11
+ include DSL::SortMethods
12
+ include DSL::ReturnMethods
16
13
 
17
- attr_reader :context, :searchable
14
+ attr_reader :context
18
15
 
19
16
  def initialize(context, searchable)
20
17
  @context = Context.new.duplicate context
@@ -35,11 +32,22 @@ module CloudSesame
35
32
 
36
33
  private
37
34
 
38
- def dsl_scope
35
+ def _block_domain(block)
36
+ if block
37
+ caller = block.binding.eval("self")
38
+ Domain::Block.new caller, _context
39
+ end
40
+ end
41
+
42
+ def _scope
39
43
  request.filter_query.root
40
44
  end
41
45
 
42
- def dsl_return(node = nil)
46
+ def _context
47
+ _scope.context
48
+ end
49
+
50
+ def _return
43
51
  self
44
52
  end
45
53
 
@@ -0,0 +1,65 @@
1
+ module CloudSesame
2
+ module Query
3
+ module Domain
4
+ class Block
5
+ include DSL::BlockMethods
6
+ include DSL::FieldAccessors
7
+ include DSL::ScopeAccessors
8
+ include DSL::OperatorMethods
9
+ include DSL::RangeMethods
10
+ include DSL::FilterQueryMethods
11
+
12
+ attr_reader :_caller, :_context, :_scopes
13
+
14
+ def initialize(_caller, _context)
15
+ @_caller = _caller
16
+ @_context = _context
17
+ @_scopes = []
18
+
19
+ @_caller.instance_variables.each do |name|
20
+ value = @_caller.instance_variable_get name
21
+ instance_variable_set name, value
22
+ end
23
+
24
+ end
25
+
26
+ def _eval(node, _scope, _return = _scope, &block)
27
+ _scopes.push node
28
+
29
+ # must build the subtree before push (<<) to it's
30
+ # parents (_scope) in order for the parent properly
31
+ # propagate message down to all the children.
32
+ # ===============================================
33
+ instance_eval &block
34
+ _scope << node
35
+
36
+ _scopes.pop
37
+ _scope.is_a?(AST::Root) ? _return : node
38
+ end
39
+
40
+ def _scope
41
+ _scopes[-1]
42
+ end
43
+
44
+ def _return
45
+ _scope
46
+ end
47
+
48
+ def _block_domain(block)
49
+ self
50
+ end
51
+
52
+ private
53
+
54
+ # ACCESS CALLER'S METHODS
55
+ # =========================================
56
+ def method_missing(name, *args, &block)
57
+ _caller.send(name, *args, &block)
58
+ rescue NoMethodError
59
+ super
60
+ end
61
+
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,44 @@
1
+ module CloudSesame
2
+ module Query
3
+ module Domain
4
+ class ChainingBlock
5
+
6
+ attr_reader :_orphan_node, :_scope, :_return
7
+
8
+ def initialize(_orphan_node, _scope, _return, _block_domain)
9
+ @_orphan_node = _orphan_node
10
+ @_scope = _scope
11
+ @_return = _return
12
+ @_block_domain = _block_domain
13
+ end
14
+
15
+ # CLAUSE: NOT
16
+ # =========================================
17
+
18
+ def not(options = {}, &block)
19
+ raise missing_block unless block_given?
20
+
21
+ node = AST::Not.new _scope.context, options
22
+ _block_domain(block)._eval _orphan_node, node, &block
23
+ _scope << node
24
+
25
+ _return || node
26
+ end
27
+
28
+ private
29
+
30
+ def _block_domain(block)
31
+ @_block_domain ||= (
32
+ caller = block.binding.eval("self")
33
+ Domain::Block.new caller, _scope.context
34
+ )
35
+ end
36
+
37
+ def missing_block
38
+ Error::InvalidSyntax.new("#{ orphan_node.class::SYMBOL }.not requires a block")
39
+ end
40
+
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,39 @@
1
+ module CloudSesame
2
+ module Query
3
+ module Domain
4
+ class Literal
5
+ include DSL::RangeMethods
6
+
7
+ attr_reader :_name, :_options, :_caller
8
+
9
+ def initialize(_name, _options, _caller)
10
+ @_name = _name
11
+ @_options = _options
12
+ @_caller = _caller
13
+
14
+ _caller.instance_variables.each do |name|
15
+ value = _caller.instance_variable_get name
16
+ instance_variable_set name, value
17
+ end
18
+ end
19
+
20
+ def _eval(&block)
21
+ if block_given? && (_value = instance_exec &block)
22
+ AST::Literal.new _name, _value, _options
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ # ACCESS CALLER'S METHODS
29
+ # =========================================
30
+ def method_missing(name, *args, &block)
31
+ _caller.send(name, *args, &block)
32
+ rescue NoMethodError
33
+ super
34
+ end
35
+
36
+ end
37
+ end
38
+ end
39
+ end
@@ -3,12 +3,10 @@ module CloudSesame
3
3
  module DSL
4
4
  module BlockMethods
5
5
 
6
- attr_accessor :orphan_node
7
-
8
6
  # CLAUSE: AND
9
7
  # =========================================
10
8
  def and(options = {}, &block)
11
- block_style_dsl AST::And, options, &block
9
+ _block_style_clause AST::And, options, &block
12
10
  end
13
11
 
14
12
  alias_method :all, :and
@@ -17,7 +15,7 @@ module CloudSesame
17
15
  # CLAUSE: OR
18
16
  # =========================================
19
17
  def or(options = {}, &block)
20
- block_style_dsl AST::Or, options, &block
18
+ _block_style_clause AST::Or, options, &block
21
19
  end
22
20
 
23
21
  alias_method :any, :or
@@ -25,34 +23,15 @@ module CloudSesame
25
23
 
26
24
  private
27
25
 
28
- def block_style_dsl(klass, options, &block)
29
- node = klass.new dsl_context, options
26
+ def _block_style_clause(klass, options, &block)
27
+ node = klass.new _context, options
30
28
  if block_given?
31
- extract_caller_from block if on_root_level?
32
- node.instance_eval &block
33
- dsl_scope << node
34
- dsl_return node
29
+ _block_domain(block)._eval node, _scope, _return, &block
35
30
  else
36
- chaining_relation_for(node)
31
+ Domain::ChainingBlock.new node, _scope, (_return if _scope.is_a?(AST::Root)), _block_domain(nil)
37
32
  end
38
33
  end
39
34
 
40
- def chaining_relation_for(node)
41
- AST::BlockChainingRelation.new(dsl_scope, dsl_return, node)
42
- end
43
-
44
- def on_root_level?
45
- dsl_scope.is_a?(AST::Root)
46
- end
47
-
48
- def extract_caller_from(block)
49
- dsl_context[:caller] = block.binding.eval "self"
50
- end
51
-
52
- def method_missing(name, *args, &block)
53
- dsl_caller ? dsl_caller.send(name, *args, &block) : super
54
- end
55
-
56
35
  end
57
36
  end
58
37
  end
@@ -0,0 +1,24 @@
1
+ module CloudSesame
2
+ module Query
3
+ module DSL
4
+ module FieldAccessors
5
+
6
+ def literal(name, *values, &block)
7
+ name = name.to_sym
8
+
9
+ if block_given?
10
+ caller = block.binding.eval "self"
11
+ options = _scope.context[:fields][name]
12
+ node = Domain::Literal.new(name, options, caller)._eval(&block)
13
+ values << node
14
+ end
15
+
16
+ _scope.children.field = name
17
+ _scope.children._return = _return
18
+ _scope.children.insert values
19
+ end
20
+
21
+ end
22
+ end
23
+ end
24
+ end
@@ -38,10 +38,10 @@ module CloudSesame
38
38
 
39
39
  def insert(values = [])
40
40
  values.each do |value|
41
- dsl_scope << create_parents(build_literal(value))
41
+ _scope << create_parents(build_literal(value))
42
42
  end
43
43
  parents.clear unless values.empty?
44
- dsl_return != dsl_scope ? dsl_return : self
44
+ _return != _scope ? _return : self
45
45
  end
46
46
 
47
47
  private
@@ -52,7 +52,7 @@ module CloudSesame
52
52
 
53
53
  def create_parents(child)
54
54
  parents.compact.each do |parent|
55
- node = parent[:klass].new dsl_context, parent[:options]
55
+ node = parent[:klass].new _context, parent[:options]
56
56
  node << child
57
57
  child = node
58
58
  end
@@ -61,17 +61,13 @@ module CloudSesame
61
61
 
62
62
  def build_literal(value)
63
63
  if value.kind_of?(AST::SingleExpressionOperator) || value.is_a?(AST::Literal)
64
- value.is_for field, field_options
64
+ value.is_for field, _context[:fields][field]
65
65
  value
66
66
  else
67
- AST::Literal.new field, value, field_options
67
+ AST::Literal.new field, value, _context[:fields][field]
68
68
  end
69
69
  end
70
70
 
71
- def field_options
72
- dsl_context[:fields][field]
73
- end
74
-
75
71
  end
76
72
  end
77
73
  end