lib/cloud_sesame/query/dsl/block_methods.rb in CloudSesame-0.4.6 vs lib/cloud_sesame/query/dsl/block_methods.rb in CloudSesame-0.5.0

- old
+ new

@@ -1,57 +1,36 @@ module CloudSesame module Query module DSL module BlockMethods - attr_accessor :orphan_node - # CLAUSE: AND # ========================================= def and(options = {}, &block) - block_style_dsl AST::And, options, &block + _block_style_clause AST::And, options, &block end alias_method :all, :and alias_method :and!, :and # CLAUSE: OR # ========================================= def or(options = {}, &block) - block_style_dsl AST::Or, options, &block + _block_style_clause AST::Or, options, &block end alias_method :any, :or alias_method :or!, :or private - def block_style_dsl(klass, options, &block) - node = klass.new dsl_context, options + def _block_style_clause(klass, options, &block) + node = klass.new _context, options if block_given? - extract_caller_from block if on_root_level? - node.instance_eval &block - dsl_scope << node - dsl_return node + _block_domain(block)._eval node, _scope, _return, &block else - chaining_relation_for(node) + Domain::ChainingBlock.new node, _scope, (_return if _scope.is_a?(AST::Root)), _block_domain(nil) end - end - - def chaining_relation_for(node) - AST::BlockChainingRelation.new(dsl_scope, dsl_return, node) - end - - def on_root_level? - dsl_scope.is_a?(AST::Root) - end - - def extract_caller_from(block) - dsl_context[:caller] = block.binding.eval "self" - end - - def method_missing(name, *args, &block) - dsl_caller ? dsl_caller.send(name, *args, &block) : super end end end end