module Minidusen::Util

Public Instance Methods

escape_for_like_query(phrase) click to toggle source
# File lib/minidusen/util.rb, line 39
def escape_for_like_query(phrase)
  # phrase.gsub("%", "\\%").gsub("_", "\\_")
  escape_with_backslash(phrase, ['%', '_'])
end
escape_with_backslash(phrase, characters) click to toggle source
# File lib/minidusen/util.rb, line 30
def escape_with_backslash(phrase, characters)
  characters << '\\'
  pattern = /[#{characters.collect(&Regexp.method(:quote)).join('')}]/
  # debugger
  phrase.gsub(pattern) do |match|
    "\\#{match}"
  end
end
ilike_operator(scope) click to toggle source
# File lib/minidusen/util.rb, line 14
def ilike_operator(scope)
  if postgresql?(scope)
    'ILIKE'
  else
    'LIKE'
  end
end
like_expression(phrase) click to toggle source
# File lib/minidusen/util.rb, line 10
def like_expression(phrase)
  "%#{escape_for_like_query(phrase)}%"
end
postgresql?(scope) click to toggle source
# File lib/minidusen/util.rb, line 5
def postgresql?(scope)
  adapter_name = scope.connection.class.name
  adapter_name =~ /postgres/i
end
qualify_column_name(model, column_name) click to toggle source
# File lib/minidusen/util.rb, line 44
def qualify_column_name(model, column_name)
  column_name = column_name.to_s
  unless column_name.include?('.')
    quoted_table_name = model.connection.quote_table_name(model.table_name)
    quoted_column_name = model.connection.quote_column_name(column_name)
    column_name = "#{quoted_table_name}.#{quoted_column_name}"
  end
  column_name
end
regexp_operator(scope) click to toggle source
# File lib/minidusen/util.rb, line 22
def regexp_operator(scope)
  if postgresql?(scope)
    '~'
  else
    'REGEXP'
  end
end