Sha256: 5564fa52a9bd6a8edf7c2a3e7450a9bd9c95a25bcc5871dfb55279d5f5b0b00b

Contents?: true

Size: 970 Bytes

Versions: 17

Compression:

Stored size: 970 Bytes

Contents

module CloudSesame
	module Query
		module Domain
			class ChainingBlock

				attr_reader :_orphan_node, :_scope, :_return

				def initialize(_orphan_node, _scope, _return, _block_domain)
					@_orphan_node = _orphan_node
					@_scope = _scope
					@_return = _return
					@_block_domain = _block_domain
				end

				# CLAUSE: NOT
				# =========================================

				def not(options = {}, &block)
					raise missing_block unless block_given?

					node = AST::Not.new _scope.context, options
					_block_domain(block)._eval _orphan_node, node, &block
					_scope << node

					_return || node
				end

				private

				def _block_domain(block)
					unless @_block_domain && @_block_domain._caller
						caller = block.binding.eval("self")
						@_block_domain._caller = caller
					end
					@_block_domain
				end

				def missing_block
					Error::InvalidSyntax.new("#{ orphan_node.class::SYMBOL }.not requires a block")
				end

			end
		end
	end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
CloudSesame-1.0.1 lib/cloud_sesame/query/domain/chaining_block.rb
CloudSesame-1.0.0 lib/cloud_sesame/query/domain/chaining_block.rb
CloudSesame-0.9.4 lib/cloud_sesame/query/domain/chaining_block.rb
CloudSesame-0.9.3 lib/cloud_sesame/query/domain/chaining_block.rb
CloudSesame-0.9.2 lib/cloud_sesame/query/domain/chaining_block.rb
CloudSesame-0.9.1 lib/cloud_sesame/query/domain/chaining_block.rb
CloudSesame-0.9.0 lib/cloud_sesame/query/domain/chaining_block.rb
CloudSesame-0.8.3 lib/cloud_sesame/query/domain/chaining_block.rb
CloudSesame-0.8.2 lib/cloud_sesame/query/domain/chaining_block.rb
CloudSesame-0.8.1 lib/cloud_sesame/query/domain/chaining_block.rb
CloudSesame-0.8.0 lib/cloud_sesame/query/domain/chaining_block.rb
CloudSesame-0.7.13 lib/cloud_sesame/query/domain/chaining_block.rb
CloudSesame-0.7.12 lib/cloud_sesame/query/domain/chaining_block.rb
CloudSesame-0.7.11 lib/cloud_sesame/query/domain/chaining_block.rb
CloudSesame-0.7.10 lib/cloud_sesame/query/domain/chaining_block.rb
CloudSesame-0.7.9 lib/cloud_sesame/query/domain/chaining_block.rb
CloudSesame-0.7.8 lib/cloud_sesame/query/domain/chaining_block.rb