Module: Texticle::Helper

Defined in:
lib/texticle.rb

Class Method Summary collapse

Class Method Details

.dynamic_search_method?(method, class_columns) ⇒ Boolean

Returns:

  • (Boolean)


107
108
109
110
# File 'lib/texticle.rb', line 107

def dynamic_search_method?(method, class_columns)
  exclusive_dynamic_search_method?(method, class_columns) or
    inclusive_dynamic_search_method?(method, class_columns)
end

.exclusive_dynamic_search_columns(method) ⇒ Object



71
72
73
74
75
76
77
# File 'lib/texticle.rb', line 71

def exclusive_dynamic_search_columns(method)
  if match = method.to_s.match(/^search_by_(?<columns>[_a-zA-Z]\w*)$/)
    match[:columns].split('_and_')
  else
    []
  end
end

.exclusive_dynamic_search_method?(method, class_columns) ⇒ Boolean

Returns:

  • (Boolean)


87
88
89
90
91
92
93
94
95
# File 'lib/texticle.rb', line 87

def exclusive_dynamic_search_method?(method, class_columns)
  string_columns = class_columns.select {|column| column.type == :string }.map(&:name)
  columns = exclusive_dynamic_search_columns(method)
  unless columns.empty?
    columns.all? {|column| string_columns.include?(column) }
  else
    false
  end
end

.inclusive_dynamic_search_columns(method) ⇒ Object



79
80
81
82
83
84
85
# File 'lib/texticle.rb', line 79

def inclusive_dynamic_search_columns(method)
  if match = method.to_s.match(/^search_by_(?<columns>[_a-zA-Z]\w*)$/)
    match[:columns].split('_or_')
  else
    []
  end
end

.inclusive_dynamic_search_method?(method, class_columns) ⇒ Boolean

Returns:

  • (Boolean)


97
98
99
100
101
102
103
104
105
# File 'lib/texticle.rb', line 97

def inclusive_dynamic_search_method?(method, class_columns)
  string_columns = class_columns.select {|column| column.type == :string }.map(&:name)
  columns = inclusive_dynamic_search_columns(method)
  unless columns.empty?
    columns.all? {|column| string_columns.include?(column) }
  else
    false
  end
end

.normalize(query) ⇒ Object



67
68
69
# File 'lib/texticle.rb', line 67

def normalize(query)
  query.to_s.gsub(' ', '\\\\ ')
end