Sha256: 594c0af86a3aa446411a6f24b772d6462a7282ba086989214f42a123c398bde0

Contents?: true

Size: 697 Bytes

Versions: 7

Compression:

Stored size: 697 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
      unless q.to_s.empty?
        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

7 entries across 7 versions & 1 rubygems

Version Path
murlsh-1.9.3 lib/murlsh/search_conditions.rb
murlsh-1.9.2 lib/murlsh/search_conditions.rb
murlsh-1.9.1 lib/murlsh/search_conditions.rb
murlsh-1.9.0 lib/murlsh/search_conditions.rb
murlsh-1.8.0 lib/murlsh/search_conditions.rb
murlsh-1.7.1 lib/murlsh/search_conditions.rb
murlsh-1.7.0 lib/murlsh/search_conditions.rb