lib/pg_search/normalizer.rb in pg_search-0.5.7 vs lib/pg_search/normalizer.rb in pg_search-0.6.0
- old
+ new
@@ -3,21 +3,29 @@
def initialize(config)
@config = config
end
def add_normalization(sql_expression)
- if config.ignore.include?(:accents)
- if config.postgresql_version < 90000
- raise PgSearch::NotSupportedForPostgresqlVersion.new(<<-MESSAGE.gsub /^\s*/, '')
- Sorry, {:ignoring => :accents} only works in PostgreSQL 9.0 and above.
- #{config.inspect}
- MESSAGE
- else
- "#{PgSearch.unaccent_function}(#{sql_expression})"
- end
- else
- sql_expression
+ return sql_expression unless config.ignore.include?(:accents)
+
+ if config.postgresql_version < 90000
+ raise PgSearch::NotSupportedForPostgresqlVersion.new(<<-MESSAGE.gsub /^\s*/, '')
+ Sorry, {:ignoring => :accents} only works in PostgreSQL 9.0 and above.
+ #{config.inspect}
+ MESSAGE
end
+
+ sql_node = case sql_expression
+ when Arel::Nodes::Node
+ sql_expression
+ else
+ Arel.sql(sql_expression)
+ end
+
+ Arel::Nodes::NamedFunction.new(
+ PgSearch.unaccent_function,
+ [sql_node]
+ ).to_sql
end
private
attr_reader :config