Module: Texticle::Helper

Defined in:
lib/texticle.rb

Class Method Summary collapse

Class Method Details

.dynamic_search_method?(method, class_columns) ⇒ Boolean

Returns:

  • (Boolean)


111
112
113
114
# File 'lib/texticle.rb', line 111

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



75
76
77
78
79
80
81
# File 'lib/texticle.rb', line 75

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)


91
92
93
94
95
96
97
98
99
# File 'lib/texticle.rb', line 91

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



83
84
85
86
87
88
89
# File 'lib/texticle.rb', line 83

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)


101
102
103
104
105
106
107
108
109
# File 'lib/texticle.rb', line 101

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



71
72
73
# File 'lib/texticle.rb', line 71

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