Мой метод получает строки с некоторыми URL.URL могут содержать только символы ascii или любые другие:
"тест non-latin url http://url.cоm and test only-latin url https://url.com"
Я хочу проанализировать свои входящие строки, а затем изменить все совпадения в исходной строке следующим образом:
"тест non-url <b>[NON-LATIN LETTERS: http://url.cоm]</b> and test only-latin url <a href="https://url.com">https://url.com</a>"
и передатьэто к следующему методу.
Я использовал each
с gsub!
:
def validate_url(string)
validate_url = string.gsub(/((http|https):\/\/.*?)(\s|$|\n|\Z|\t|\r|<.)/)
validate_url.each do |link|
if link.ascii_only?
string.gsub!(link, "<a href=\"#{link}\">#{link}</a>")
else
string.gsub!(link, "<b>[NON-LATIN LETTERS: #{link}]</b>")
end
end
end
Я вижу RuntimeError: string modified
ошибку и не понимаю, почему и как это исправить.