Module: Ransack::Constants

Defined in:
lib/ransack/constants.rb,
lib/ransack/adapters/mongoid/ransack/constants.rb,
lib/ransack/adapters/active_record/ransack/constants.rb

Constant Summary collapse

ASC =
'asc'.freeze
DESC =
'desc'.freeze
ASC_DESC =
[ASC, DESC].freeze
ASC_ARROW =
'▲'.freeze
DESC_ARROW =
'▼'.freeze
OR =
'or'.freeze
AND =
'and'.freeze
SPACED_AND =
' AND '.freeze
SORT =
'sort'.freeze
'sort_link'.freeze
SORT_DIRECTION =
'sort_direction'.freeze
CAP_SEARCH =
'Search'.freeze
SEARCH =
'search'.freeze
SEARCHES =
'searches'.freeze
ATTRIBUTE =
'attribute'.freeze
ATTRIBUTES =
'attributes'.freeze
COMBINATOR =
'combinator'.freeze
SPACE =
' '.freeze
COMMA_SPACE =
', '.freeze
COLON_SPACE =
': '.freeze
TWO_COLONS =
'::'.freeze
UNDERSCORE =
'_'.freeze
LEFT_PARENTHESIS =
'('.freeze
Q =
'q'.freeze
I =
'i'.freeze
NON_BREAKING_SPACE =
' '.freeze
DOT_ASTERIX =
'.*'.freeze
EMPTY =
''.freeze
STRING_JOIN =
'string_join'.freeze
ASSOCIATION_JOIN =
'association_join'.freeze
STASHED_JOIN =
'stashed_join'.freeze
JOIN_NODE =
'join_node'.freeze
TRUE_VALUES =
[true, 1, '1', 't', 'T', 'true', 'TRUE'].to_set
FALSE_VALUES =
[false, 0, '0', 'f', 'F', 'false', 'FALSE'].to_set
BOOLEAN_VALUES =
(TRUE_VALUES + FALSE_VALUES).freeze
S_SORTS =
%w(s sorts).freeze
AND_OR =
%w(and or).freeze
IN_NOT_IN =
%w(in not_in).freeze
SUFFIXES =
%w(_any _all).freeze
AREL_PREDICATES =
%w(
  eq not_eq matches does_not_match lt lteq gt gteq in not_in
).freeze
A_S_I =
%w(a s i).freeze
EQ =
'eq'.freeze
NOT_EQ =
'not_eq'.freeze
EQ_ANY =
'eq_any'.freeze
NOT_EQ_ALL =
'not_eq_all'.freeze
CONT =
'cont'.freeze
RAILS_4_1 =
'4.1'.freeze
RANSACK_SLASH_SEARCHES =
'ransack/searches'.freeze
RANSACK_SLASH_SEARCHES_SLASH_SEARCH =
'ransack/searches/search'.freeze
DERIVED_PREDICATES =
[
  [CONT, {
    :arel_predicate => 'matches'.freeze,
    :formatter => proc { |v| "%#{escape_wildcards(v)}%" }
    }
  ],
  ['not_cont'.freeze, {
    :arel_predicate => 'does_not_match'.freeze,
    :formatter => proc { |v| "%#{escape_wildcards(v)}%" }
    }
  ],
  ['start'.freeze, {
    :arel_predicate => 'matches'.freeze,
    :formatter => proc { |v| "#{escape_wildcards(v)}%" }
    }
  ],
  ['not_start'.freeze, {
    :arel_predicate => 'does_not_match'.freeze,
    :formatter => proc { |v| "#{escape_wildcards(v)}%" }
    }
  ],
  ['end'.freeze, {
    :arel_predicate => 'matches'.freeze,
    :formatter => proc { |v| "%#{escape_wildcards(v)}" }
    }
  ],
  ['not_end'.freeze, {
    :arel_predicate => 'does_not_match'.freeze,
    :formatter => proc { |v| "%#{escape_wildcards(v)}" }
    }
  ],
  ['true'.freeze, {
    :arel_predicate => proc { |v| v ? EQ : NOT_EQ },
    :compounds => false,
    :type => :boolean,
    :validator => proc { |v| BOOLEAN_VALUES.include?(v) },
    :formatter => proc { |v| true }
    }
  ],
  ['not_true'.freeze, {
    :arel_predicate => proc { |v| v ? NOT_EQ : EQ },
    :compounds => false,
    :type => :boolean,
    :validator => proc { |v| BOOLEAN_VALUES.include?(v) },
    :formatter => proc { |v| true }
    }
  ],
  ['false'.freeze, {
    :arel_predicate => proc { |v| v ? EQ : NOT_EQ },
    :compounds => false,
    :type => :boolean,
    :validator => proc { |v| BOOLEAN_VALUES.include?(v) },
    :formatter => proc { |v| false }
    }
  ],
  ['not_false'.freeze, {
    :arel_predicate => proc { |v| v ? NOT_EQ : EQ },
    :compounds => false,
    :type => :boolean,
    :validator => proc { |v| BOOLEAN_VALUES.include?(v) },
    :formatter => proc { |v| false }
    }
  ],
  ['present'.freeze, {
    :arel_predicate => proc { |v| v ? NOT_EQ_ALL : EQ_ANY },
    :compounds => false,
    :type => :boolean,
    :validator => proc { |v| BOOLEAN_VALUES.include?(v) },
    :formatter => proc { |v| [nil, EMPTY] }
    }
  ],
  ['blank'.freeze, {
    :arel_predicate => proc { |v| v ? EQ_ANY : NOT_EQ_ALL },
    :compounds => false,
    :type => :boolean,
    :validator => proc { |v| BOOLEAN_VALUES.include?(v) },
    :formatter => proc { |v| [nil, EMPTY] }
    }
  ],
  ['null'.freeze, {
    :arel_predicate => proc { |v| v ? EQ : NOT_EQ },
    :compounds => false,
    :type => :boolean,
    :validator => proc { |v| BOOLEAN_VALUES.include?(v)},
    :formatter => proc { |v| nil }
    }
  ],
  ['not_null'.freeze, {
    :arel_predicate => proc { |v| v ? NOT_EQ : EQ },
    :compounds => false,
    :type => :boolean,
    :validator => proc { |v| BOOLEAN_VALUES.include?(v) },
    :formatter => proc { |v| nil } }
  ]
].freeze
DISTINCT =
'DISTINCT '.freeze

Class Method Summary collapse

Class Method Details

.escape_regex(unescaped) ⇒ Object

does nothing


84
85
86
# File 'lib/ransack/adapters/mongoid/ransack/constants.rb', line 84

def escape_regex(unescaped)
  Regexp.escape(unescaped)
end

.escape_wildcards(unescaped) ⇒ Object

replace % \ to % \


103
104
105
106
107
108
109
110
111
# File 'lib/ransack/adapters/active_record/ransack/constants.rb', line 103

def escape_wildcards(unescaped)
  case ActiveRecord::Base.connection.adapter_name
  when "Mysql2".freeze, "PostgreSQL".freeze
    # Necessary for PostgreSQL and MySQL
    unescaped.to_s.gsub(/([\\|\%|.])/, '\\\\\\1')
  else
    unescaped
  end
end