Sha256: e3fa87d6918315a3c9b71e59c7d7161ccf265abde11c5bece357ab4a9cc5ae75

Contents?: true

Size: 681 Bytes

Versions: 3

Compression:

Stored size: 681 Bytes

Contents

require 'treetop'

module Murlsh

  # Search conditions builder for ActiveRecord conditions.
  class SearchConditions

    def initialize(q); @q = q; end

    # Search conditions builder for ActiveRecord conditions.
    def conditions
      if q
        parser = Murlsh::SearchGrammarParser.new
        tokens = parser.parse(q).content
        search_cols = %w{name title url}

        likes = []
        params = []
        search_cols.product(tokens).each do |col,tok|
          likes << "LOWER(#{col}) LIKE ?"
          params << "%#{tok.downcase}%"
        end
        [likes.join(' OR ')].push(*params)
      else
        []
      end
    end

    attr_accessor :q
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
murlsh-1.6.1 lib/murlsh/search_conditions.rb
murlsh-1.6.0 lib/murlsh/search_conditions.rb
murlsh-1.5.0 lib/murlsh/search_conditions.rb