Sha256: 7ea0522926d9b3cf38cb87e9f0f64ddd4b8b2869de40d3f1dcffebfd573797f6
Contents?: true
Size: 788 Bytes
Versions: 1
Compression:
Stored size: 788 Bytes
Contents
module Dusen class Syntax def initialize @scopers = {} end def learn_field(field, &scoper) field = field.to_s @scopers[field] = scoper end def learn_unknown_field(&unknown_scoper) @unknown_scoper = unknown_scoper end def search(root_scope, query) scope = root_scope query = parse(query) if query.is_a?(String) query.each do |atom| scoper = @scopers[atom.field] || unknown_scoper scope = scoper.call(scope, atom.value) end scope end def parse(query) Parser.parse(query) end private DEFAULT_UNKNOWN_SCOPER = lambda do |scope, *args| scope.where('1=2') end def unknown_scoper @unknown_scoper || DEFAULT_UNKNOWN_SCOPER end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dusen-0.1.0 | lib/dusen/syntax.rb |