From 490f25034d62817f9315084ddc0506ff6bc65055 Mon Sep 17 00:00:00 2001 From: Jan Szumiec Date: Wed, 7 Aug 2013 13:34:24 +0100 Subject: highlight() now accepts regular expressions as well. --- actionview/lib/action_view/helpers/text_helper.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'actionview/lib') diff --git a/actionview/lib/action_view/helpers/text_helper.rb b/actionview/lib/action_view/helpers/text_helper.rb index 2109b2724c..e860577d6f 100644 --- a/actionview/lib/action_view/helpers/text_helper.rb +++ b/actionview/lib/action_view/helpers/text_helper.rb @@ -123,7 +123,9 @@ module ActionView text else highlighter = options.fetch(:highlighter, '\1') - match = Array(phrases).map { |p| Regexp.escape(p) }.join('|') + match = Array(phrases).map do |p| + Regexp === p ? p.to_s : Regexp.escape(p) + end.join('|') text.gsub(/(#{match})(?![^<]*?>)/i, highlighter) end.html_safe end @@ -156,11 +158,11 @@ module ActionView return unless text && phrase separator = options.fetch(:separator, nil) || "" - if Regexp === phrase + case phrase + when Regexp regex = phrase else - phrase = Regexp.escape(phrase) - regex = /#{phrase}/i + regex = /#{Regexp.escape(phrase)}/i end return unless matches = text.match(regex) -- cgit v1.2.3