Sha256: f5e42d900f3c12dd269fe21143f0fa51cfb18bb3cfdc80693eac3132770b1428
Contents?: true
Size: 1.46 KB
Versions: 29
Compression:
Stored size: 1.46 KB
Contents
require 'pacer/filter/where_filter/node_visitor' require 'jruby' # for JRuby.parse module Pacer module Routes module RouteOperations def where(str, values = {}, *more, &block) if str.is_a? String or str.is_a? Symbol if str !~ /\A\s*\Z/ chain_route :filter => :where, :where_statement => str.to_s, :values => values else self end else filter(str, values, *more, &block) end end def unless(str, values = {}) if str and str !~ /\A\s*\Z/ where "not (#{str})", values else self end end end end module Filter module WhereFilter attr_reader :where_statement attr_accessor :values def where_statement=(str) @where_statement = str @parsed = @intermediate = nil end def parsed @parsed ||= JRuby.parse @where_statement end def intermediate encoded_values = {} if values values.each { |k, v| encoded_values[k.to_sym] = graph.encode_property(v) } end @intermediate ||= parsed.accept(NodeVisitor.new(self, encoded_values)) end def build! intermediate.build end protected def attach_pipe(end_pipe) pipe = build! pipe.setStarts end_pipe if end_pipe pipe end def inspect_string "where(#@where_statement)" end end end end
Version data entries
29 entries across 29 versions & 1 rubygems