6
Ha habido algunas publicaciones sobre la vinculación de texto usando una expresión regular. El más popular is this post.Ruby linkify para urls en cadenas
Sin embargo mi especificación es un poco más complicado:
describe TextFormatter do
def l(input)
TextFormatter.gsub_links!(input){|link| "!!#{link}!!"}
end
it "should detect simple links" do
l("http://www.cnn.com").should == "!!http://www.cnn.com!!"
end
it "should detect multi links" do
l("http://www.cnn.com http://boats.com?help.asp").should == "!!http://www.cnn.com!! !!http://boats.com?help.asp!!"
end
it "should compensate for parans properly" do
l("(http://this.is?hello_world)").should == "(!!http://this.is?hello_world!!)"
end
it "should ignore existing links" do
s = "<A HREF='http://sam.com'> http://sam.com </A>"
l(s.dup).should == s
end
it "should allow parans" do
l("http://sam.com.au?(red)").should == "!!http://sam.com.au?(red)!!"
end
end
Alguna idea de cómo poner en práctica la expresión regular peluda:
Aquí es donde estoy tan lejos (falla 2 pruebas):
def gsub_links!(input)
regex = /https?\:\/\/[\-\w+&@#\/%?=~\(\)\|!:,.;]*[\-\w+&@#\/%=~_\(\)|]/
input.gsub!(regex) { |link|
yield link
}
end
Yerp, enlace automático parece pasar todas mis pruebas ... gracias por señalarlo –
por las que podría no funcionar en aplicación? Recibo un error "número incorrecto de argumentos (2 por 1) file: tag_helper.rb location: tag_options línea: 113" al intentar hacer eso. Funciona perfectamente en la consola aunque – Arty
'auto_link' se ha ido de Rails desde 3.1. Consulte http://stackoverflow.com/questions/6418710/replacing-the-auto-link-method-in-ruby-on-rails-3-1 para obtener una respuesta actualizada. – Thilo