mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Better handling of quotation marks in site text search
It also matches 3 dots with the ellipsis symbol.
This commit is contained in:
@@ -70,7 +70,7 @@ module I18n
|
||||
target = opts[:backend] || backend
|
||||
results = opts[:overridden] ? {} : target.search(config.locale, query)
|
||||
|
||||
regexp = /#{Regexp.escape(query)}/i
|
||||
regexp = I18n::Backend::DiscourseI18n.create_search_regexp(query)
|
||||
(overrides_by_locale(locale) || {}).each do |k, v|
|
||||
results.delete(k)
|
||||
results[k] = v if (k =~ regexp || v =~ regexp)
|
||||
|
||||
@@ -39,11 +39,22 @@ module I18n
|
||||
false
|
||||
end
|
||||
|
||||
def self.create_search_regexp(query, as_string: false)
|
||||
regexp = Regexp.escape(query)
|
||||
|
||||
regexp.gsub!(/['‘’‚‹›]/, "['‘’‚‹›]")
|
||||
regexp.gsub!(/["“”„«»]/, '["“”„«»]')
|
||||
regexp.gsub!(/(?:\\\.\\\.\\\.|…)/, '(?:\.\.\.|…)')
|
||||
|
||||
as_string ? regexp : /#{regexp}/i
|
||||
end
|
||||
|
||||
def search(locale, query)
|
||||
results = {}
|
||||
regexp = self.class.create_search_regexp(query)
|
||||
|
||||
fallbacks(locale).each do |fallback|
|
||||
find_results(/#{Regexp.escape(query)}/i, results, translations[fallback])
|
||||
find_results(regexp, results, translations[fallback])
|
||||
end
|
||||
|
||||
results
|
||||
|
||||
Reference in New Issue
Block a user