rails_autolink-1.1.6/ 0000755 0000041 0000041 00000000000 12352214235 014566 5 ustar www-data www-data rails_autolink-1.1.6/Rakefile 0000644 0000041 0000041 00000000244 12352214235 016233 0 ustar www-data www-data # Setup some testing
require 'rake'
require 'rake/testtask'
Rake::TestTask.new do |t|
t.libs << 'test'
t.pattern = 'test/test_*.rb'
end
task :default => :test rails_autolink-1.1.6/Gemfile 0000644 0000041 0000041 00000000521 12352214235 016057 0 ustar www-data www-data source 'https://rubygems.org'
# To test on latest Rails release, use the following:
gem 'rails'
gem 'minitest'
# To test on Rails 4.0.x release, use the following e.g. for 4.0.1:
# gem 'rails', '= 4.0.1'
# gem 'minitest'
# To test on Rails 3.2.x, use the following e.g. for 3.2.17:
# gem 'rails', '= 3.2.17'
# gem 'minitest', '= 4.2'
rails_autolink-1.1.6/.autotest 0000644 0000041 0000041 00000000261 12352214235 016436 0 ustar www-data www-data # -*- ruby -*-
require 'autotest/restart'
Autotest.add_hook :initialize do |at|
at.testlib = 'minitest/autorun'
at.find_directories = ARGV unless ARGV.empty?
end
rails_autolink-1.1.6/CHANGELOG.rdoc 0000644 0000041 0000041 00000001560 12352214235 016730 0 ustar www-data www-data === 1.1.6 / 2014-06-08
* Fixed a potential XSS vulnerability #47
* Hold onto trailing = and & characters as part of urls #45
* Ensure test compatibility with Rails 3.2.x/4.0.x/4.1.x #44
* Readme typo #41
* require timeout in tests #40
=== 1.1.5 / 2013-10-23
* Improved performance of email regex
* Protocol regex is case insensitive
=== 1.1.3 / 2013-09-12
* Updates gemspec to work with latest rubygems
=== 1.1.1 / 2013-09-12
* Improved email regex to allow especial chars: !#$%&'*+-/=?^_`{|}~
=== 1.1.0 / 2013-05-02
* Ready for Rails 4.
=== 1.0.7 / 2012-04-27
* Added support for non-latin characters in autolinked urls
=== 1.0.6 / 2012-03-12
* Added sanitize_options arg
=== 1.0.5 / 2012-01-27
* Update dependency to include rails 3.2.X
=== 1.0.2 / 2011-06-18
* Compatibility with rails 3.1.0.rc4
=== 1.0.0 / 2011-05-02
* 1 major enhancement
* Birthday!
rails_autolink-1.1.6/README.rdoc 0000644 0000041 0000041 00000006142 12352214235 016377 0 ustar www-data www-data = rails_autolink
* http://github.com/tenderlove/rails_autolink
== DESCRIPTION:
This is an extraction of the `auto_link` method from rails. The `auto_link`
method was removed from Rails in version Rails 3.1. This gem is meant to
bridge the gap for people migrating.
== FEATURES:
By default auto_link returns sanitized html_safe strings.
This behaviour can be overridden by setting the :sanitize option to false
(thus making it insecure if you don't have the content under control).
== SYNOPSIS:
require 'rails_autolink'
auto_link("Go to http://www.rubyonrails.org and say hello to david@loudthinking.com")
# => "Go to http://www.rubyonrails.org and
# say hello to david@loudthinking.com"
auto_link("Visit http://www.loudthinking.com/ or e-mail david@loudthinking.com", :link => :urls)
# => "Visit http://www.loudthinking.com/
# or e-mail david@loudthinking.com"
auto_link("Visit http://www.loudthinking.com/ or e-mail david@loudthinking.com", :link => :email_addresses)
# => "Visit http://www.loudthinking.com/ or e-mail david@loudthinking.com"
auto_link("Go to http://www.rubyonrails.org ")
# => "Go to http://www.rubyonrails.org "
auto_link("Go to http://www.rubyonrails.org ", :sanitize => false)
# => "Go to http://www.rubyonrails.org "
post_body = "Welcome to my new blog at http://www.myblog.com/. Please e-mail me at me@email.com."
auto_link(post_body, :html => { :target => '_blank' }) do |text|
truncate(text, :length => 15)
end
# => "Welcome to my new blog at http://www.m....
== REQUIREMENTS:
* rails > 3.1
== INSTALL:
* gem install rails_autolink
== LICENSE:
(The MIT License)
Copyright (c) 2011 DHH
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
rails_autolink-1.1.6/lib/ 0000755 0000041 0000041 00000000000 12352214235 015334 5 ustar www-data www-data rails_autolink-1.1.6/lib/rails_autolink/ 0000755 0000041 0000041 00000000000 12352214235 020354 5 ustar www-data www-data rails_autolink-1.1.6/lib/rails_autolink/helpers.rb 0000644 0000041 0000041 00000017060 12352214235 022347 0 ustar www-data www-data # encoding: utf-8
module RailsAutolink
require 'active_support/core_ext/object/blank'
require 'active_support/core_ext/array/extract_options'
require 'active_support/core_ext/hash/reverse_merge'
require 'active_support/core_ext/hash/keys'
module ::ActionView
module Helpers # :nodoc:
module TextHelper
# Turns all URLs and e-mail addresses into clickable links. The :link option
# will limit what should be linked. You can add HTML attributes to the links using
# :html. Possible values for :link are :all (default),
# :email_addresses, and :urls. If a block is given, each URL and
# e-mail address is yielded and the result is used as the link text. By default the
# text given is sanitized, you can override this behaviour setting the
# :sanitize option to false, or you can add options to the sanitization of
# the text using the :sanitize_options option hash.
#
# ==== Examples
# auto_link("Go to http://www.rubyonrails.org and say hello to david@loudthinking.com")
# # => "Go to http://www.rubyonrails.org and
# # say hello to david@loudthinking.com"
#
# auto_link("Visit http://www.loudthinking.com/ or e-mail david@loudthinking.com", :link => :urls)
# # => "Visit http://www.loudthinking.com/
# # or e-mail david@loudthinking.com"
#
# auto_link("Visit http://www.loudthinking.com/ or e-mail david@loudthinking.com", :link => :email_addresses)
# # => "Visit http://www.loudthinking.com/ or e-mail david@loudthinking.com"
#
# post_body = "Welcome to my new blog at http://www.myblog.com/. Please e-mail me at me@email.com."
# auto_link(post_body, :html => { :target => '_blank' }) do |text|
# truncate(text, :length => 15)
# end
# # => "Welcome to my new blog at http://www.m....
# Please e-mail me at me@email.com."
#
#
# You can still use auto_link with the old API that accepts the
# +link+ as its optional second parameter and the +html_options+ hash
# as its optional third parameter:
# post_body = "Welcome to my new blog at http://www.myblog.com/. Please e-mail me at me@email.com."
# auto_link(post_body, :urls)
# # => "Welcome to my new blog at http://www.myblog.com.
# Please e-mail me at me@email.com."
#
# auto_link(post_body, :all, :target => "_blank")
# # => "Welcome to my new blog at http://www.myblog.com.
# Please e-mail me at me@email.com."
def auto_link(text, *args, &block) #link = :all, html = {}, &block)
return ''.html_safe if text.blank?
options = args.size == 2 ? {} : args.extract_options! # this is necessary because the old auto_link API has a Hash as its last parameter
unless args.empty?
options[:link] = args[0] || :all
options[:html] = args[1] || {}
end
options.reverse_merge!(:link => :all, :html => {})
sanitize = (options[:sanitize] != false)
sanitize_options = options[:sanitize_options] || {}
text = conditional_sanitize(text, sanitize, sanitize_options).to_str
case options[:link].to_sym
when :all then conditional_html_safe(auto_link_email_addresses(auto_link_urls(text, options[:html], options, &block), options[:html], &block), sanitize)
when :email_addresses then conditional_html_safe(auto_link_email_addresses(text, options[:html], &block), sanitize)
when :urls then conditional_html_safe(auto_link_urls(text, options[:html], options, &block), sanitize)
end
end
private
AUTO_LINK_RE = %r{
(?: ((?:ed2k|ftp|http|https|irc|mailto|news|gopher|nntp|telnet|webcal|xmpp|callto|feed|svn|urn|aim|rsync|tag|ssh|sftp|rtsp|afs|file):)// | www\. )
[^\s<\u00A0"]+
}ix
# regexps for determining context, used high-volume
AUTO_LINK_CRE = [/<[^>]+$/, /^[^>]*>/, //i, /<\/a>/i]
AUTO_EMAIL_LOCAL_RE = /[\w.!#\$%&'*\/=?^`{|}~+-]/
AUTO_EMAIL_RE = /[\w.!#\$%+-]\.?#{AUTO_EMAIL_LOCAL_RE}*@[\w-]+(?:\.[\w-]+)+/
BRACKETS = { ']' => '[', ')' => '(', '}' => '{' }
WORD_PATTERN = RUBY_VERSION < '1.9' ? '\w' : '\p{Word}'
# Turns all urls into clickable links. If a block is given, each url
# is yielded and the result is used as the link text.
def auto_link_urls(text, html_options = {}, options = {})
link_attributes = html_options.stringify_keys
text.gsub(AUTO_LINK_RE) do
scheme, href = $1, $&
punctuation = []
if auto_linked?($`, $')
# do not change string; URL is already linked
href
else
# don't include trailing punctuation character as part of the URL
while href.sub!(/[^#{WORD_PATTERN}\/-=&]$/, '')
punctuation.push $&
if opening = BRACKETS[punctuation.last] and href.scan(opening).size > href.scan(punctuation.last).size
href << punctuation.pop
break
end
end
link_text = block_given?? yield(href) : href
href = 'http://' + href unless scheme
unless options[:sanitize] == false
link_text = sanitize(link_text)
href = sanitize(href)
end
content_tag(:a, link_text, link_attributes.merge('href' => href), !!options[:sanitize]) + punctuation.reverse.join('')
end
end
end
# Turns all email addresses into clickable links. If a block is given,
# each email is yielded and the result is used as the link text.
def auto_link_email_addresses(text, html_options = {}, options = {})
text.gsub(AUTO_EMAIL_RE) do
text = $&
if auto_linked?($`, $')
text.html_safe
else
display_text = (block_given?) ? yield(text) : text
unless options[:sanitize] == false
text = sanitize(text)
display_text = sanitize(display_text) unless text == display_text
end
mail_to text, display_text, html_options
end
end
end
# Detects already linked context or position in the middle of a tag
def auto_linked?(left, right)
(left =~ AUTO_LINK_CRE[0] and right =~ AUTO_LINK_CRE[1]) or
(left.rindex(AUTO_LINK_CRE[2]) and $' !~ AUTO_LINK_CRE[3])
end
def conditional_sanitize(target, condition, sanitize_options = {})
condition ? sanitize(target, sanitize_options) : target
end
def conditional_html_safe(target, condition)
condition ? target.html_safe : target
end
end
end
end
end
rails_autolink-1.1.6/lib/rails_autolink/version.rb 0000644 0000041 0000041 00000000054 12352214235 022365 0 ustar www-data www-data module RailsAutolink
VERSION = '1.1.6'
end rails_autolink-1.1.6/lib/rails_autolink.rb 0000644 0000041 0000041 00000000324 12352214235 020700 0 ustar www-data www-data module RailsAutolink
class Railtie < ::Rails::Railtie
initializer 'rails_autolink' do |app|
ActiveSupport.on_load(:action_view) do
require 'rails_autolink/helpers'
end
end
end
end
rails_autolink-1.1.6/metadata.yml 0000644 0000041 0000041 00000003303 12352214235 017070 0 ustar www-data www-data --- !ruby/object:Gem::Specification
name: rails_autolink
version: !ruby/object:Gem::Version
version: 1.1.6
platform: ruby
authors:
- Aaron Patterson
- Juanjo Bazan
- Akira Matsuda
autorequire:
bindir: bin
cert_chain: []
date: 2014-06-08 00:00:00.000000000 Z
dependencies:
- !ruby/object:Gem::Dependency
name: rails
requirement: !ruby/object:Gem::Requirement
requirements:
- - ">"
- !ruby/object:Gem::Version
version: '3.1'
type: :runtime
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - ">"
- !ruby/object:Gem::Version
version: '3.1'
description: This is an extraction of the `auto_link` method from rails. The `auto_link`
method was removed from Rails in version Rails 3.1. This gem is meant to bridge
the gap for people migrating.
email: aaron@tenderlovemaking.com
executables: []
extensions: []
extra_rdoc_files: []
files:
- ".autotest"
- ".gitignore"
- CHANGELOG.rdoc
- Gemfile
- README.rdoc
- Rakefile
- lib/rails_autolink.rb
- lib/rails_autolink/helpers.rb
- lib/rails_autolink/version.rb
- rails_autolink.gemspec
- test/test_rails_autolink.rb
homepage: https://github.com/tenderlove/rails_autolink
licenses:
- MIT
metadata: {}
post_install_message:
rdoc_options: []
require_paths:
- lib
required_ruby_version: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: 1.9.3
required_rubygems_version: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
requirements: []
rubyforge_project:
rubygems_version: 2.2.2
signing_key:
specification_version: 4
summary: Automatic generation of html links in texts
test_files: []
rails_autolink-1.1.6/test/ 0000755 0000041 0000041 00000000000 12352214235 015545 5 ustar www-data www-data rails_autolink-1.1.6/test/test_rails_autolink.rb 0000644 0000041 0000041 00000044272 12352214235 022162 0 ustar www-data www-data # encoding: utf-8
require "minitest/autorun"
require "rails"
require 'erb'
require 'cgi'
require 'active_support'
require 'active_support/core_ext'
require 'action_pack'
require 'action_view'
require 'action_view/helpers'
require 'action_dispatch/testing/assertions'
require 'timeout'
require "rails_autolink/helpers"
class TestRailsAutolink < MiniTest::Unit::TestCase
include ActionView::Helpers::CaptureHelper
include ActionView::Helpers::TextHelper
include ActionView::Helpers::SanitizeHelper
include ActionView::Helpers::TagHelper
include ActionView::Helpers::UrlHelper
include ActionView::Helpers::OutputSafetyHelper
include ActionDispatch::Assertions::DomAssertions
def test_auto_link_within_tags
link_raw = 'http://www.rubyonrails.org/images/rails.png'
link_result = %Q()
assert_equal link_result, auto_link(link_result)
end
def test_auto_link_with_brackets
link1_raw = 'http://en.wikipedia.org/wiki/Sprite_(computer_graphics)'
link1_result = generate_result(link1_raw)
assert_equal link1_result, auto_link(link1_raw)
assert_equal "(link: #{link1_result})", auto_link("(link: #{link1_raw})")
link2_raw = 'http://en.wikipedia.org/wiki/Sprite_[computer_graphics]'
link2_result = generate_result(link2_raw)
assert_equal link2_result, auto_link(link2_raw)
assert_equal "[link: #{link2_result}]", auto_link("[link: #{link2_raw}]")
link3_raw = 'http://en.wikipedia.org/wiki/Sprite_{computer_graphics}'
link3_result = generate_result(link3_raw)
assert_equal link3_result, auto_link(link3_raw)
assert_equal "{link: #{link3_result}}", auto_link("{link: #{link3_raw}}")
end
def test_auto_link_with_options_hash
assert_dom_equal 'Welcome to my new blog at http://www.myblog.com/. Please e-mail me at me@email.com.',
auto_link("Welcome to my new blog at http://www.myblog.com/. Please e-mail me at me@email.com.",
:link => :all, :html => { :class => "menu", :target => "_blank" })
end
def test_auto_link_with_multiple_trailing_punctuations
url = "http://youtube.com"
url_result = generate_result(url)
assert_equal url_result, auto_link(url)
assert_equal "(link: #{url_result}).", auto_link("(link: #{url}).")
end
def test_auto_link_with_block
url = "http://api.rubyonrails.com/Foo.html"
email = "fantabulous@shiznadel.ic"
assert_equal %(
#{url[0...7]}...
#{email[0...7]}...
#{url}
#{email}
#{url1}#{malicious}
), auto_link("#{combination}
") end def test_auto_link_at_eol url1 = "http://api.rubyonrails.com/Foo.html" url2 = "http://www.ruby-doc.org/core/Bar.html" assert_equal %(), auto_link("#{url1}
#{url2}
Link #{link_result}
), auto_link("Link #{link_raw}
") assert_equal %(#{link_result} Link
), auto_link("#{link_raw} Link
") assert_equal %(Link #{link_result_with_options}
), auto_link("Link #{link_raw}
", :all, {:target => "_blank"}) assert_equal %(Go to #{link_result}.), auto_link(%(Go to #{link_raw}.)) assert_equal %(Go to #{link_result}, then say hello to #{email_result}.
), auto_link(%(Go to #{link_raw}, then say hello to #{email_raw}.
)) assert_equal %(#{link_result} #{link_result}), auto_link(%(#{link_result} #{link_raw})) email2_raw = '+david@loudthinking.com' email2_result = %{#{email2_raw}} assert_equal email2_result, auto_link(email2_raw) assert_equal email2_result, auto_link(email2_raw, :all) assert_equal email2_result, auto_link(email2_raw, :email_addresses) link2_raw = 'www.rubyonrails.com' link2_result = generate_result(link2_raw, "http://#{link2_raw}") assert_equal %(Go to #{link2_result}), auto_link("Go to #{link2_raw}", :urls) assert_equal %(Go to #{link2_raw}), auto_link("Go to #{link2_raw}", :email_addresses) assert_equal %(Link #{link2_result}
), auto_link("Link #{link2_raw}
") assert_equal %(#{link2_result} Link
), auto_link("#{link2_raw} Link
") assert_equal %(Go to #{link2_result}.), auto_link(%(Go to #{link2_raw}.)) assert_equal %(Say hello to #{email_result}, then go to #{link2_result}.
), auto_link(%(Say hello to #{email_raw}, then go to #{link2_raw}.
)) link3_raw = 'http://manuals.ruby-on-rails.com/read/chapter.need_a-period/103#page281' link3_result = generate_result(link3_raw) assert_equal %(Go to #{link3_result}), auto_link("Go to #{link3_raw}", :urls) assert_equal %(Go to #{link3_raw}), auto_link("Go to #{link3_raw}", :email_addresses) assert_equal %(Link #{link3_result}
), auto_link("Link #{link3_raw}
") assert_equal %(#{link3_result} Link
), auto_link("#{link3_raw} Link
") assert_equal %(Go to #{link3_result}.), auto_link(%(Go to #{link3_raw}.)) assert_equal %(Go to #{link3_result}. Seriously, #{link3_result}? I think I'll say hello to #{email_result}. Instead.
), auto_link(%(Go to #{link3_raw}. Seriously, #{link3_raw}? I think I'll say hello to #{email_raw}. Instead.
)) link4_raw = 'http://foo.example.com/controller/action?parm=value&p2=v2#anchor123' link4_result = generate_result(link4_raw) assert_equal %(Link #{link4_result}
), auto_link("Link #{link4_raw}
") assert_equal %(#{link4_result} Link
), auto_link("#{link4_raw} Link
") link5_raw = 'http://foo.example.com:3000/controller/action' link5_result = generate_result(link5_raw) assert_equal %(#{link5_result} Link
), auto_link("#{link5_raw} Link
") link6_raw = 'http://foo.example.com:3000/controller/action+pack' link6_result = generate_result(link6_raw) assert_equal %(#{link6_result} Link
), auto_link("#{link6_raw} Link
") link7_raw = 'http://foo.example.com/controller/action?parm=value&p2=v2#anchor-123' link7_result = generate_result(link7_raw) assert_equal %(#{link7_result} Link
), auto_link("#{link7_raw} Link
") link8_raw = 'http://foo.example.com:3000/controller/action.html' link8_result = generate_result(link8_raw) assert_equal %(Go to #{link8_result}), auto_link("Go to #{link8_raw}", :urls) assert_equal %(Go to #{link8_raw}), auto_link("Go to #{link8_raw}", :email_addresses) assert_equal %(Link #{link8_result}
), auto_link("Link #{link8_raw}
") assert_equal %(#{link8_result} Link
), auto_link("#{link8_raw} Link
") assert_equal %(Go to #{link8_result}.), auto_link(%(Go to #{link8_raw}.)) assert_equal %(Go to #{link8_result}. Seriously, #{link8_result}? I think I'll say hello to #{email_result}. Instead.
), auto_link(%(Go to #{link8_raw}. Seriously, #{link8_raw}? I think I'll say hello to #{email_raw}. Instead.
)) link9_raw = 'http://business.timesonline.co.uk/article/0,,9065-2473189,00.html' link9_result = generate_result(link9_raw) assert_equal %(Go to #{link9_result}), auto_link("Go to #{link9_raw}", :urls) assert_equal %(Go to #{link9_raw}), auto_link("Go to #{link9_raw}", :email_addresses) assert_equal %(Link #{link9_result}
), auto_link("Link #{link9_raw}
") assert_equal %(#{link9_result} Link
), auto_link("#{link9_raw} Link
") assert_equal %(Go to #{link9_result}.), auto_link(%(Go to #{link9_raw}.)) assert_equal %(Go to #{link9_result}. Seriously, #{link9_result}? I think I'll say hello to #{email_result}. Instead.
), auto_link(%(Go to #{link9_raw}. Seriously, #{link9_raw}? I think I'll say hello to #{email_raw}. Instead.
)) link10_raw = 'http://www.mail-archive.com/ruby-talk@ruby-lang.org/' link10_result = generate_result(link10_raw) assert_equal %(#{link10_result} Link
), auto_link("#{link10_raw} Link
") link11_raw = 'http://asakusa.rubyist.net/' link11_result = generate_result(link11_raw) with_kcode 'u' do assert_equal %(浅草.rbの公式サイトはこちら#{link11_result}), auto_link("浅草.rbの公式サイトはこちら#{link11_raw}") end link12_raw = 'http://tools.ietf.org/html/rfc3986' link12_result = generate_result(link12_raw) assert_equal %(#{link12_result} text-after-nonbreaking-space
), auto_link("#{link12_raw} text-after-nonbreaking-space
") link13_raw = 'HTtP://www.rubyonrails.com' assert_equal generate_result(link13_raw), auto_link(link13_raw) end def test_auto_link_parsing urls = %w( http://www.rubyonrails.com http://www.rubyonrails.com:80 http://www.rubyonrails.com/~minam https://www.rubyonrails.com/~minam http://www.rubyonrails.com/~minam/url%20with%20spaces http://www.rubyonrails.com/foo.cgi?something=here http://www.rubyonrails.com/foo.cgi?something=here&and=here http://www.rubyonrails.com/contact;new http://www.rubyonrails.com/contact;new%20with%20spaces http://www.rubyonrails.com/contact;new?with=query&string=params http://www.rubyonrails.com/~minam/contact;new?with=query&string=params http://en.wikipedia.org/wiki/Wikipedia:Today%27s_featured_picture_%28animation%29/January_20%2C_2007 http://www.mail-archive.com/rails@lists.rubyonrails.org/ http://www.amazon.com/Testing-Equal-Sign-In-Path/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1198861734&sr=8-1 http://en.wikipedia.org/wiki/Texas_hold'em https://www.google.com/doku.php?id=gps:resource:scs:start http://connect.oraclecorp.com/search?search[q]=green+france&search[type]=Group http://of.openfoundry.org/projects/492/download#4th.Release.3 http://maps.google.co.uk/maps?f=q&q=the+london+eye&ie=UTF8&ll=51.503373,-0.11939&spn=0.007052,0.012767&z=16&iwloc=A http://около.кола/колокола ) urls.each do |url| assert_equal generate_result(url), auto_link(url) end end def test_autolink_with_trailing_equals_on_link url = "http://www.rubyonrails.com/foo.cgi?trailing_equals=" assert_equal generate_result(url), auto_link(url) end def test_autolink_with_trailing_amp_on_link url = "http://www.rubyonrails.com/foo.cgi?trailing_ampersand=value&" assert_equal generate_result(url), auto_link(url) end def test_auto_link_does_not_timeout_when_parsing_odd_email_input inputs = %w( foo@................................... foo@........................................ foo@............................................. ) inputs.each do |input| Timeout.timeout(0.2) do assert_equal input, auto_link(input) end end end private def generate_result(link_text, href = nil, escape = false) href ||= link_text if escape %{#{CGI::escapeHTML link_text}} else %{#{link_text}} end end # from ruby core def build_message(head, template=nil, *arguments) template &&= template.chomp template.gsub(/\?/) { mu_pp(arguments.shift) } end # Temporarily replaces KCODE for the block def with_kcode(kcode) if RUBY_VERSION < '1.9' old_kcode, $KCODE = $KCODE, kcode begin yield ensure $KCODE = old_kcode end else yield end end end rails_autolink-1.1.6/rails_autolink.gemspec 0000644 0000041 0000041 00000001473 12352214235 021160 0 ustar www-data www-data require File.expand_path "#{File.dirname(__FILE__)}/lib/rails_autolink/version" Gem::Specification.new do |s| s.name = 'rails_autolink' s.version = RailsAutolink::VERSION s.date = Time.now.strftime('%Y-%m-%d') s.authors = ['Aaron Patterson', 'Juanjo Bazan', 'Akira Matsuda'] s.email = 'aaron@tenderlovemaking.com' s.homepage = 'https://github.com/tenderlove/rails_autolink' s.summary = 'Automatic generation of html links in texts' s.description = 'This is an extraction of the `auto_link` method from rails. The `auto_link` method was removed from Rails in version Rails 3.1. This gem is meant to bridge the gap for people migrating.' s.add_dependency 'rails', '> 3.1' s.required_ruby_version = '>= 1.9.3' s.license = 'MIT' s.files = Dir.glob("{test,lib/**/*}") + `git ls-files -z`.split("\0") end rails_autolink-1.1.6/.gitignore 0000644 0000041 0000041 00000000206 12352214235 016554 0 ustar www-data www-data Gemfile.lock *.gem *.rbc .bundle .config coverage InstalledFiles lib/bundler/man pkg rdoc test/tmp test/version_tmp tmp .rvmrc .ruby-* rails_autolink-1.1.6/checksums.yaml.gz 0000444 0000041 0000041 00000000414 12352214235 020053 0 ustar www-data www-data D`Se;R0D"#9T4L*NI z{.o~^?ai{_E<]i6 ⍹|E w