Wrap links in text within hyperlinks - Ruby On Rails -


i have description news. display news text, used simple_format wraps new lines <p></p> tags.

however, news text may contain links. need wrap links within text <a></a> tags.

it helpful if give insights on how that.

sample text:

lorem ipsum dolor sit amet, consectetur adipisicing elit. ad, ea esse magni obcaecati quasi quis soluta velit. accusamus doloribus ea et ex officia, pariatur quia saepe sed tempore temporibus totam https://stackoverflow.com/posts/36058019/edit

desired output:

lorem ipsum dolor sit amet, consectetur adipisicing elit. ad, ea esse magni obcaecati quasi quis soluta velit. accusamus doloribus ea et ex officia, pariatur quia saepe sed tempore temporibus totam? <a src="https://stackoverflow.com/posts/36058019/edit">https://stackoverflow.com/posts/36058019/edit</a>

my approach

for solved following function. first split string newlines ensure simple_format insert appropriate p tags. then, match texts url regex , wrap within a tag.

def parse_text(text)     text.split("\n").map |t|       t.split(' ').map {|x| x.match(/https?:\/\/[\s]+/) ? "<a href=#{x}>#{x}</a>" : x }.join(' ')     end.join("\n").html_safe   end 

as @devanand commented it's better if wrap text in desired tags , use html_safe

but required wrap urls text within <a> tag.

> str = "lorem ipsum dolor sit amet, consectetur adipisicing elit. ad, ea esse magni obcaecati quasi quis soluta velit. accusamus doloribus ea et ex officia, pariatur quia saepe sed tempore temporibus totam https://stackoverflow.com/posts/36058019/edit" # extract urls string > urls = uri.extract(str) # wrap url text within <a> tag > urls.each{|u| str.gsub!(u, "<a src='#{u}'>#{u}</a>")} > puts str #=> "lorem ipsum dolor sit amet, consectetur adipisicing elit. ad, ea esse magni obcaecati quasi quis soluta velit. accusamus doloribus ea et ex officia, pariatur quia saepe sed tempore temporibus totam <a src='https://stackoverflow.com/posts/36058019/edit'>https://stackoverflow.com/posts/36058019/edit</a>" 

demo

note: rsb commented uri.extract won't work if there's no spaces @ beginning , end of url


Comments

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

python - pip wont install .WHL files -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -