pax_global_header00006660000000000000000000000064121447007300014510gustar00rootroot0000000000000052 comment=b47fc3120a94ad4c27ebc2a003f241d1f29f1897 ruby-rails-autolink-1.1.0/000077500000000000000000000000001214470073000154245ustar00rootroot00000000000000ruby-rails-autolink-1.1.0/CHANGELOG.rdoc000066400000000000000000000005711214470073000175670ustar00rootroot00000000000000=== 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! ruby-rails-autolink-1.1.0/Gemfile000066400000000000000000000001201214470073000167100ustar00rootroot00000000000000source 'https://rubygems.org' gem 'rails' gem 'arel' gem 'rack' gem 'minitest' ruby-rails-autolink-1.1.0/Gemfile.lock000066400000000000000000000036371214470073000176570ustar00rootroot00000000000000GEM remote: https://rubygems.org/ specs: actionmailer (4.0.0.rc1) actionpack (= 4.0.0.rc1) mail (~> 2.5.3) actionpack (4.0.0.rc1) activesupport (= 4.0.0.rc1) builder (~> 3.1.0) erubis (~> 2.7.0) rack (~> 1.5.2) rack-test (~> 0.6.2) activemodel (4.0.0.rc1) activesupport (= 4.0.0.rc1) builder (~> 3.1.0) activerecord (4.0.0.rc1) activemodel (= 4.0.0.rc1) activerecord-deprecated_finders (~> 1.0.2) activesupport (= 4.0.0.rc1) arel (~> 4.0.0) activerecord-deprecated_finders (1.0.2) activesupport (4.0.0.rc1) i18n (~> 0.6, >= 0.6.4) minitest (~> 4.2) multi_json (~> 1.3) thread_safe (~> 0.1) tzinfo (~> 0.3.37) arel (4.0.0) atomic (1.1.8) builder (3.1.4) erubis (2.7.0) hike (1.2.2) i18n (0.6.4) mail (2.5.3) i18n (>= 0.4.0) mime-types (~> 1.16) treetop (~> 1.4.8) mime-types (1.23) minitest (4.7.4) multi_json (1.7.2) polyglot (0.3.3) rack (1.5.2) rack-test (0.6.2) rack (>= 1.0) rails (4.0.0.rc1) actionmailer (= 4.0.0.rc1) actionpack (= 4.0.0.rc1) activerecord (= 4.0.0.rc1) activesupport (= 4.0.0.rc1) bundler (>= 1.3.0, < 2.0) railties (= 4.0.0.rc1) sprockets-rails (~> 2.0.0.rc4) railties (4.0.0.rc1) actionpack (= 4.0.0.rc1) activesupport (= 4.0.0.rc1) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) rake (10.0.4) sprockets (2.9.3) hike (~> 1.2) multi_json (~> 1.0) rack (~> 1.0) tilt (~> 1.1, != 1.3.0) sprockets-rails (2.0.0.rc4) actionpack (>= 3.0) activesupport (>= 3.0) sprockets (~> 2.8) thor (0.18.1) thread_safe (0.1.0) atomic tilt (1.4.0) treetop (1.4.12) polyglot polyglot (>= 0.3.1) tzinfo (0.3.37) PLATFORMS ruby DEPENDENCIES arel minitest rack rails ruby-rails-autolink-1.1.0/OLDGEMS/000077500000000000000000000000001214470073000165165ustar00rootroot00000000000000ruby-rails-autolink-1.1.0/OLDGEMS/howto_release.txt000066400000000000000000000000551214470073000221170ustar00rootroot00000000000000rake gem cd pkg gem push rails_autolink-X.gemruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.5.gem000066400000000000000000000250001214470073000226640ustar00rootroot00000000000000data.tar.gz0000644000000000000000000001675200000000000013332 0ustar00wheelwheel00000000000000F #O=rJryW)K$-I#J%YR9Z@-ӶNnj< RToצ ٖv7e3==} AZEM*U`pKZٽgjwt}ri4=TY>ȵB O ĘgxJlPqhPIv JRoiW.%I#DSLĽ$3A`CYz9RLU&Df)J]//ZG'/Cw2m(>FABI$ER)+RPJs]-0kQu0#FduL%J QVLR*oR)F(JByih]侬֌\Dca\Be2jXTtBU+> y&XgR+t2zm,rF21p?,^,b"0SЌD|%f~/T8Ń+vQΉ۸^<ĜzgS%8y~* +HjjqxEE#zHK+GTѩab-y̿H_]6\ ikjbm#Hק}aMRa `(;Z C~:;Oz*&J{ KT 5'D!OdB&Mx'BA s-Ġh߆YwP~ǝV hPQ`4#Q'CWTJ&ȀI:7[yueLՁh,SudɥI]Rg(R>ޤ @>@vu ^e'huGGR$E}:>khv¤4}fȣE[#/_RԘ& &Ԡ( AKCyʣ d^cY$#G&@}_/|LU͂.ިUOS}<薊H`k/&me>̧Z9tHQu-?8:?l 4 D'I[<9r}Γ1|DΏrz9=9kA@}0Rc(#+cM5ϡֿם]Zг泣ou~'W-uT: ݏ/[k¿LQ&'dMx3hC4=4B~N·$q Z1(Z±x/2O8eZi%~t'ijj'ub zW7ncOu3|kU~qd .-6y!?@ډxv:U1PKd @z'Œ(L>L0zGϦ:&Mud{'wYt263ùk67jckj'<}\1e&3A{65hP_IDgE{G7Dc ;=N]љ|gd-I/CYW5ȑ/@ht6&#- j6xCK)>Ab>Q0[U"c"X*n"!Z}%h:"e$ (=25q#͚Lִ@N5Ӕ{De ȸ7"`d흱\>L9B 9ũ 'TQv'-d_B;u22Ŧ+ mGynٷ\޶o/,ykQ{qC+]8ۍZv¢-b.(d[v*(>޼ih^_ $Ι}m/{W/D dt#ט M &]s̎cH 6Op}[fȅ#:)Bt'Ԃ{;Y'{ɀ>*oDG<ר^dm& AڒۛƑA kt'7@P/vфtQ \QqHɺ;Q>PYtE?h@U2(4D3d1/QSʓuJ"|5E>:VEt8u8Go-[%uZ}A7wdMy=uZDd${Q*4 /> z=W,OB}c^Jo]3u>Д'?ۈiX 4e:]>`}(^vrq1O'{x+ O2>Y/xoj8ŋ7£7Wׁǧ?֋~g:Ṵ\7Wr>7#AxK LKWL+@ f>@4?Ç)8 ٷT ^}Ʉ YxZI9Gc+x Zh3= Rpᑭ_K h ~6DSLKM s2Gz[ؾ}-I^).D2D&SsBYj ?.Kyܳ6J' {0&hK0H>UDM0^{esLʌ,oX;D'bkw΋+|vuDo?#GݠF 4 |Hф=Keb@>l| k$O=g12B o5Y+lcЈ=-Mtľۍv"KN0ũ+BYvd4(GVC5q3sepbQ J}6_x$8CiU/)q Wn1(ki,Kެߢ]ꛧǴ l7&{X_ݪUBZ)@Wdj tMi)KyFwt0}Oq;Q{Toap5QKӗ@ԭ)PKǝ !RFF$? OC S #(ȚLdjSKZ,Y3%ϑuK^ay~@d3oz{Dc!p0B3[ G % _ ơ=zzPx]`V70YIOY!^73/qDM~lLQ<|>i_gwɈƠ^I[@DŏXs)7UaOPc񘡪p-_:dqO37 H!cy`2~Jg#RC^uaWN }K hs\p6_̱~SZzep~ a `z6c&㧴֫1?ront˰'=w_n[&v廞1i~.Pun:۟|K^Zf璦6B3ΊOw_W͌mir`P' О-q' "9Af*{dUpx'܈R$*Ey11'^O&2B Ft(D?kFd_Ͱ:AT䁕kYƍtVC=1,p(5^#=㛠dV9h2l9%mR|#dO#y D??Y0(\"4njXObh#?!Sdodx fOլO0{RN' ?0q>{l`ciQC&B#>FEĞB T| sp{۠yKnI !xUսXnjPjbt5 LO74Kh CKww9|Q=ԮU|q*DχaC8 4ۏ|ЛVET_MZ. y>Tw{*n{DC!nLuEO&vn;}͸I<`BerqDii0b5hx!)ٹ> t ,mɊϻ/ut@f ᅦlVFvvm\nmeg;do onZXWjZֆ[Xu͖۬Z"PMr.?jCu_9epXnSXFvc_7F$ywn'~,Ŋʒ`QUJR7]I+Iu%"_YY,xDӍ"ی<9.]e; [& 6%\,ƢnQCP)zbAIr#Z.9LUz;.QWt5JWt5JWo$*]E3T}_@A38I mմ@lwh$ vw#ۇD3}1o0CM/?POg1i<ƻʊƚQT3~‹e#XzT7*FRܘS@ͥRWKҼ2~䳹H>Iٌg>:-禖Z<7[P mZr[,f;Q ^ȶoȶdIvR?t@oȶ[l~v\ Flg6BP'TC#WEѰB|~T,T6|2ŦTvLeg|$5Tvnk*;ILeTvTvLeJDc0`ɦL\=ewp&@j ѥT=8X.3%O6-Y/{j[μbK%i{=Oǟ?}}?ܔ­xK)ޫYqeiKvRvi)L񗉬~ZfRpj#?&WOb4d_&RBARj98)Y!#j)5fkY*oO,܏NQIleT.ػmQ' NWczj/m{y! O{sճytq"~<MB p&B[-~>zХ^oLWޗi|{l5\wkƚi4 $bBoƚ"eh4md`$j*c|?h:lSDx32&Ea󟋟/#Ru}hL6ՃDjSU2f[fqcGCW6С1uc 2,6~^a麢4錮9VfY,U[|$;k6JEireQ׊6h4Yv@'Ϫ'R(gu?]u>{ƽo䎴 OQs xtwzÊ mw9u}]j!o,g{1 ok@K$7x&ПʊԛWG4;$a & ?%:dm>0)z"`1t=̱<שּׁ.`2#"H'-y8"Vv݋Y=[ql0GɓǜrþVnH>>Gc?Q՜ . 'G#sB wƲ2wn\{p=\]^+.Qmetadata.gz0000644000000000000000000000151200000000000013400 0ustar00wheelwheel00000000000000F #OVmo0_aP )iioV`B ИB\lg|svuSAF}ݓA@6U6& s9Y$L@B5IYkU܀6l2[".0 qѠf45#b#AJiV~b""]XWskF/5mf\\'Iڦy8;)EA(4J h@ s> [L1vpԅ!@ڄ>qmA\#)@#V(}CϮ0ᴝ6G[ioykdv%Ep-{/G'eƫpjS>b'' &zDb0]xPpLycgrJ{W7o&)ZrBՈ I5YБVb&@!W6#~2Tu˥s\C&=FPp`RXyQd E RCa@(')ugkZȕ8sz~Z:n%ӂp,Q# ]ft\_0G(:8|v7\@/φo.fSR+^@gW uu_A uA}ۼC<c4tbm%U9K7v"5ϑF&\:`#JKx4r#ծӆ[aZ"u>vޭ뽺٩O!N^nS;_ s>*Q<(Rb?׶1LɿK eh*(T ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.5/000077500000000000000000000000001214470073000221755ustar00rootroot00000000000000ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.5/CHANGELOG.rdoc000066400000000000000000000005711214470073000243400ustar00rootroot00000000000000=== 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! ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.5/Gemfile000066400000000000000000000001321214470073000234640ustar00rootroot00000000000000source 'http://rubygems.org' gem 'rails' gem 'arel' gem 'rack' gem 'hoe' gem 'minitest' ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.5/Manifest.txt000066400000000000000000000002231214470073000245010ustar00rootroot00000000000000.autotest CHANGELOG.rdoc Gemfile Manifest.txt README.rdoc Rakefile lib/rails_autolink.rb lib/rails_autolink/helpers.rb test/test_rails_autolink.rb ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.5/README.rdoc000066400000000000000000000061361214470073000240110ustar00rootroot00000000000000= 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 overriden 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. ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.5/Rakefile000066400000000000000000000010751214470073000236450ustar00rootroot00000000000000# -*- ruby -*- require 'rubygems' require 'hoe' Hoe.plugins.delete :rubyforge Hoe.plugin :minitest Hoe.plugin :gemspec # `gem install hoe-gemspec` Hoe.plugin :git # `gem install hoe-git` Hoe.spec 'rails_autolink' do developer('Aaron Patterson', 'aaron@tenderlovemaking.com') developer('Juanjo Bazan', 'jjbazan@gmail.com') developer('Akira Matsuda', 'ronnie@dio.jp') self.readme_file = 'README.rdoc' self.history_file = 'CHANGELOG.rdoc' self.extra_rdoc_files = FileList['*.rdoc'] self.extra_deps << ['rails', '~> 3.1'] end # vim: syntax=ruby ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.5/lib/000077500000000000000000000000001214470073000227435ustar00rootroot00000000000000ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.5/lib/rails_autolink.rb000066400000000000000000000003511214470073000263070ustar00rootroot00000000000000module RailsAutolink VERSION = '1.0.7' class Railtie < ::Rails::Railtie initializer 'rails_autolink' do |app| ActiveSupport.on_load(:action_view) do require 'rails_autolink/helpers' end end end end ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.5/lib/rails_autolink/000077500000000000000000000000001214470073000257635ustar00rootroot00000000000000ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.5/lib/rails_autolink/helpers.rb000066400000000000000000000165371214470073000277660ustar00rootroot00000000000000# 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{ (?: ([0-9A-Za-z+.:-]+:)// | www\. ) [^\s<]+ }x # regexps for determining context, used high-volume AUTO_LINK_CRE = [/<[^>]+$/, /^[^>]*>/, //i, /<\/a>/i] AUTO_EMAIL_RE = /[\w.!#\$%+-]+@[\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 endruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.5/test/000077500000000000000000000000001214470073000231545ustar00rootroot00000000000000ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.5/test/test_rails_autolink.rb000066400000000000000000000422361214470073000275670ustar00rootroot00000000000000# encoding: utf-8 require "minitest/autorun" require "rails" require "rails_autolink/helpers" require 'erb' require 'cgi' require 'active_support/core_ext/class/attribute_accessors' require 'action_pack' require 'action_view/helpers/capture_helper' require 'action_view/helpers/sanitize_helper' require 'action_view/helpers/url_helper' require 'action_view/helpers/tag_helper' require 'active_support/core_ext/module/attribute_accessors' require 'active_support/core_ext/string/encoding' require 'action_dispatch/testing/assertions' require 'action_view/helpers/text_helper' require 'action_view/helpers/output_safety_helper' 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]}...

), auto_link("

#{url}
#{email}

") { |_url| truncate(_url, :length => 10) } end def test_auto_link_with_block_with_html pic = "http://example.com/pic.png" url = "http://example.com/album?a&b=c" assert_equal %(My pic: -- full album here #{generate_result(url)}), auto_link("My pic: #{pic} -- full album here #{url}") { |link| if link =~ /\.(jpg|gif|png|bmp|tif)$/i raw %() else link end } end def test_auto_link_should_sanitize_input_when_sanitize_option_is_not_false link_raw = %{http://www.rubyonrails.com?id=1&num=2} malicious_script = '' assert_equal %{http://www.rubyonrails.com?id=1&num=2}, auto_link("#{link_raw}#{malicious_script}") assert auto_link("#{link_raw}#{malicious_script}").html_safe? end def test_auto_link_should_sanitize_input_with_sanitize_options link_raw = %{http://www.rubyonrails.com?id=1&num=2} malicious_script = '' text_with_attributes = %{Ruby} text_result = %{http://www.rubyonrails.com?id=1&num=2Ruby} assert_equal text_result, auto_link("#{link_raw}#{malicious_script}#{text_with_attributes}", :sanitize_options => {:attributes => ["target", "href"]}, :html => {:class => 'big'}) assert auto_link("#{link_raw}#{malicious_script}#{text_with_attributes}", :sanitize_options => {:attributes => ["target", "href"]}, :html => {:class => 'big'}).html_safe? end def test_auto_link_should_not_sanitize_input_when_sanitize_option_is_false link_raw = %{http://www.rubyonrails.com?id=1&num=2} malicious_script = '' assert_equal %{http://www.rubyonrails.com?id=1&num=2}, auto_link("#{link_raw}#{malicious_script}", :sanitize => false) assert !auto_link("#{link_raw}#{malicious_script}", :sanitize => false).html_safe? end def test_auto_link_other_protocols ftp_raw = 'ftp://example.com/file.txt' assert_equal %(Download #{generate_result(ftp_raw)}), auto_link("Download #{ftp_raw}") file_scheme = 'file:///home/username/RomeoAndJuliet.pdf' z39_scheme = 'z39.50r://host:696/db' chrome_scheme = 'chrome://package/section/path' view_source = 'view-source:http://en.wikipedia.org/wiki/URI_scheme' assert_equal generate_result(file_scheme), auto_link(file_scheme) assert_equal generate_result(z39_scheme), auto_link(z39_scheme) assert_equal generate_result(chrome_scheme), auto_link(chrome_scheme) assert_equal generate_result(view_source), auto_link(view_source) end def test_auto_link_already_linked linked1 = generate_result('Ruby On Rails', 'http://www.rubyonrails.com') linked2 = %('www.example.com') linked3 = %('www.example.com') linked4 = %('www.example.com') linked5 = %('close www.example.com') linked6 = %('close www.example.com') assert_equal linked1, auto_link(linked1) assert_equal linked2, auto_link(linked2) assert_equal linked3, auto_link(linked3, :sanitize => false) assert_equal linked4, auto_link(linked4) assert_equal linked5, auto_link(linked5) assert_equal linked6, auto_link(linked6, :sanitize_options => {:attributes => ["href", "target", "data-ruby"]}) linked_email = %Q(Mail me) assert_equal linked_email, auto_link(linked_email) 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 %(

#{url1}
#{url2}

), auto_link("

#{url1}
#{url2}

") end def test_auto_link_should_be_html_safe email_raw = 'santiago@wyeworks.com' link_raw = 'http://www.rubyonrails.org' malicious_script = '' assert auto_link(nil).html_safe?, 'should be html safe' assert auto_link('').html_safe?, 'should be html safe' assert auto_link("#{link_raw} #{link_raw} #{link_raw}").html_safe?, 'should be html safe' assert auto_link("hello #{email_raw}").html_safe?, 'should be html safe' assert auto_link("hello #{email_raw} #{malicious_script}").html_safe?, 'should be html safe' end def test_auto_link_should_not_be_html_safe_when_sanitize_option_false email_raw = 'santiago@wyeworks.com' link_raw = 'http://www.rubyonrails.org' assert !auto_link("hello", :sanitize => false).html_safe?, 'should not be html safe' assert !auto_link("#{link_raw} #{link_raw} #{link_raw}", :sanitize => false).html_safe?, 'should not be html safe' assert !auto_link("hello #{email_raw}", :sanitize => false).html_safe?, 'should not be html safe' end def test_auto_link_email_address email_raw = 'aaron@tenderlovemaking.com' email_result = %{#{email_raw}} assert !auto_link_email_addresses(email_result).html_safe?, 'should not be html safe' end def test_auto_link email_raw = 'david@loudthinking.com' email_result = %{#{email_raw}} link_raw = 'http://www.rubyonrails.com' link_result = generate_result(link_raw) link_result_with_options = %{#{link_raw}} assert_equal '', auto_link(nil) assert_equal '', auto_link('') assert_equal "#{link_result} #{link_result} #{link_result}", auto_link("#{link_raw} #{link_raw} #{link_raw}") assert_equal %(hello #{email_result}), auto_link("hello #{email_raw}", :email_addresses) assert_equal %(Go to #{link_result}), auto_link("Go to #{link_raw}", :urls) assert_equal %(Go to #{link_raw}), auto_link("Go to #{link_raw}", :email_addresses) assert_equal %(Go to #{link_result} and say hello to #{email_result}), auto_link("Go to #{link_raw} and say hello to #{email_raw}") assert_equal %(

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) email3_raw = '+david@loudthinking.com' email3_result = %{#{email3_raw}} assert_equal email3_result, auto_link(email3_raw, :all, :encode => :hex) assert_equal email3_result, auto_link(email3_raw, :email_addresses, :encode => :hex) 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 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 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 ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.7.gem000066400000000000000000000260001214470073000226670ustar00rootroot00000000000000data.tar.gz0000644000000000000000000001753100000000000013326 0ustar00wheelwheel00000000000000<O}]sH>W@IK$(h35l(h-mMD<\Nj{ٗۍ :~eVlK3kDTeeefeefe`QZغM-fpEfͻgFwz4y²%Q[WeWrmeb.FKLB1)\%d \)%YtMIU~D#DES6:Q4y(Cc(UoBSe{ {yk us{z\4e}|?};Ftoך_C\vĪK*^r}7tdZndDӵ*يF3ɔ65-O8UEZ!mkR tk̩jkUsHymȒ `6^[BĔ" .qf8UFg^Kl`UN讑#j3I9SŴg|uZt>QTz}F=2;_\0gm* tn9D`DIU-_;3:w~Lc:ݽ-i6D7υ#rA]З)8l DsPZQՀk: -"wuFX3NtWww$<1ub)ȋ80S!6U-D!d>^{V.7)*^#>![@Ԟ2!2"&C|x X@ϜJ ˅T)eDL%g *%sejf*2nu;t kPmt ,"Fyա%M(l#\ #:*a1HcD 0`T#KFρm\tx"|a˜Z 0tXxaRLR_Y@wűdƞL]-r/?;uC13e|#+ZB8qss#bk| ^ǥݒW OT}!3@"m >$L:iɧ?LE@{N"?Db9=ȇj%j,Vq t/{r ;֍Lg6),FN^^QsXqQ08-R 08%- 0ْI0ό%-O <!ɲ—aX LI̥"NiNpZE։L%c tn 6`ZU6gL[taHguY/elXRNVhaCL|%'po \ F7 vDAD42cWc#!DyQD , ~a1tH$:U fDsNVf;&v.L3G蒋g:.]Wo{'"t.Y(z }O~;;) b r'N{ݓhsڝ@`^=˽q<<ߗȳ q>_v.thzg pbwe-<0XW@}w|~yq~z҅§]˻:>w|,.kuX ̡]Vuc Q&g>cAZ1%R,a ISY  }"TtܫK Ze\X4>Sh)|́25,t{`8 VH]G_ǺNNc?k>:B#=4tUXU1P[䀴Z"OI| ] w`9^#& U] -2UMq~d*}%t~97zܦL}vn6`uLežr ev u!,P, $Ӕg= LftJfti1sju N > li:M-Ǽ8@AIO{gVZpY-wA*Xl @~I1woǡwN7nM;/e4 svDuLg巺D͗^=R"ׇx{ _V|xV\xN977⣍7_m>oD~[|\ 6;@L+ŌWT! 62| }L,_?~0ϼ/U`7tSR3,Lђ)+*#!`xSXX@j.Cd9U%gj-FR3:U+"0'@BzG~$Bt*Pa6ҦoXυtrVHa7I<ڸd{OG|,Zbof G6M|SNH:$?X@ #Eݠl淽tlFN ( N"`5і$c.Z #넚p R;!GG|"L&o% 1/rB'>ꄠ%  0i) `$&ZҴВJ>%Y\V7y(bdX'W(aȈ.͔N!sd'G2w2zh 4+/ bd2Ti*l!8ĝ\Lsarg&C }$ˋ.)ji. 9`@6ˍ0k|ߺLJ,kintIJa9}8Õ ~7V[Cv&LuGt_ QW*bGH^Cɯ/& :C[ԡjˎp@!ݯq?[F3l|9 W~)W1e>ǎ5GxJۮg*^84eikC}"Z'\Z*cɰ?,N&hXeW >?h|Uq7NJGP55#崗^?G6~CgLy kGuXrhZ|l+C'7VB^8Z4T3]08qxjs"zCfH W!<:bt+a[̥)1@M6p̧2{mT6`R` P\y.>?ICmgjrTV$ >U. ܰ0 mjd̔U\ΦT xI(Z _imEַ|A D[s~cJbZz}/\o¬G 덻>Ĵ )ɿr嶾 of7 aoY; Sv\p;?ytw6Mb]5]v 7}le3JI#-pqLn3 D1T:tS@ALpl x1 [R5*oTdXHnb!b1d(!_L3Mb"i4Zzb͔5I8SKNh^VEQܽuLpoQ xϺem]rqX Izq/>}m| ʩmF[H +Ԡ'BLRG5jH;ixD X Qd{ךUپrLJX75rУ$= K핣NFF ۸ OBO*oT|Q|͍2)~UQ`; >ۤSz3 rR@H>m>hOqh#|&e|28i¬&dKev^ab] q#0ߏ܍!5x$ۄ"a1G+8l29?G~Wwd@F1|G͛;2\R|:hS3߿ 7 Yw)r': 10u[*7pXXf4`D=ȄPA g-[w== v9. @tIpӇ'ɿY ECp~n9;U,oVL,/PLJSZ(KY=m0[8t>AcAV._{NW B͗BHrX|a )&\S@t!}{F̑a@$hC (/࿂̂h, G7 o$>{Nz##d#a qʗ3}YTDq&hͧnHBg^ |(|b-|YMvtz|U}l{~\~y4Dݢ "V{yt1tO؉=2M]Jy<X LxwAGtƿRHW磑]vGP)t8LE ۦ_>.( M;>ak6󀉡E,_[blJTHÓHJ:3Yuּ3zRi~iƝm$Q {dkwgǛfms܇'fsP*fs슛5eZNMiB۴f]~dC =_ԍ8) J'9S_oaw5΢~'o6cfN׳zK(UX^&l-Vs'12qsI-е,le< F<5]Ԫ C^eXҍtcJ7>AYUUYUqWndQ\Z,,uY ' 4s]48&:gB=&v|Lt=z8J ?j~dH;Oeo6fWM֫ U*vL=vJըVq A䳳J>3XF>xVq\M3+7tnv?2Cڼfo7-xVqɑwd{wsd{k'8vd/:{wud{Y G0l/͑}&G#*'(h+sj$ɴJ+Ri)׷wR*~~m쯙*0UNSe?TٿT2U0UWL*iSe3MZ5>Wػд,;Kd%w  !T+_Ϫ%Z-ΔdI KbK?Ųagi_jY=1μfa!ߣO?Y4Gǿ/?/o7dpg$~*=y? b+NmySpxInY ګ~hRp%Yqm1nO#KdƷ>ݖ`lA7wg1ZPsOn#fȒO~,-7pB%|Xʘ(Yߓ4e^ڬW~)s9W7;n'*{+m4~8k.N2=J!G#khڑBۯHׯmmoYmloYf{\"p@Tק F֯13Sj'p0rЗX7 Ƣ(#sU{jR=[N4U/0R}"⇱&B%0u|lׁH~0vc۞}asɰ|0*ÒI>VuM&]-WЪީ;FcQ*WEvc2vUKpS6w~nך[ʍ۝p/s+n[Z8M>fƷOꅬDn/six^ZcwÇU+VLhf^ū?Zl&Z lfޙ !$6 xO9B-USZASGK\L񏟰eϺdk=zqʛ _6_ 2Cmc*꒘%=>?Iܗ"t?N(Ew &=oR"_qmDX7SG)禜'Y ah~MpS:>Xr֚_r}\ykmetadata.gz0000644000000000000000000000151500000000000013403 0ustar00wheelwheel00000000000000<OVmo0_aP )iڽtDbZabʜ䚸`;c 4Ҩw$L7鴫1d6>ǟkgr%dbL*.'xta p 0)-!BJtȴ)&NJf'\3zir< 62:K26J1oI,Z^?FQ0_+ɡ8hfx:bN+਍C1}Qri$XeW07Q?셽Ni{ĺ ب|+Y X&+)Kn>9/JL7Po|brC zrbDGhWbJfxqLvJn(LRen%kvk*%3#LBJmFКdZKBN`=FPp`RXy^`5E5BCa@('Iu5n-YdJx:A?)u;IU8 BXV(N.PuR2L/#Zy;p~y.gӋh:ƼTm bBMx]`::-ٺ뾒m!X*5+\X[nm٤ꍝH3%V ƲJሧRy ,H=Il0d^Jx=X^Tקǯ:dN])ZHȝjkᜱ dT+u7^x~J&01LɿK r0?âU ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.7/000077500000000000000000000000001214470073000221775ustar00rootroot00000000000000ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.7/CHANGELOG.rdoc000066400000000000000000000005711214470073000243420ustar00rootroot00000000000000=== 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! ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.7/Gemfile000066400000000000000000000001321214470073000234660ustar00rootroot00000000000000source 'http://rubygems.org' gem 'rails' gem 'arel' gem 'rack' gem 'hoe' gem 'minitest' ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.7/Manifest.txt000066400000000000000000000002231214470073000245030ustar00rootroot00000000000000.autotest CHANGELOG.rdoc Gemfile Manifest.txt README.rdoc Rakefile lib/rails_autolink.rb lib/rails_autolink/helpers.rb test/test_rails_autolink.rb ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.7/README.rdoc000066400000000000000000000061361214470073000240130ustar00rootroot00000000000000= 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 overriden 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. ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.7/Rakefile000066400000000000000000000010751214470073000236470ustar00rootroot00000000000000# -*- ruby -*- require 'rubygems' require 'hoe' Hoe.plugins.delete :rubyforge Hoe.plugin :minitest Hoe.plugin :gemspec # `gem install hoe-gemspec` Hoe.plugin :git # `gem install hoe-git` Hoe.spec 'rails_autolink' do developer('Aaron Patterson', 'aaron@tenderlovemaking.com') developer('Juanjo Bazan', 'jjbazan@gmail.com') developer('Akira Matsuda', 'ronnie@dio.jp') self.readme_file = 'README.rdoc' self.history_file = 'CHANGELOG.rdoc' self.extra_rdoc_files = FileList['*.rdoc'] self.extra_deps << ['rails', '~> 3.1'] end # vim: syntax=ruby ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.7/lib/000077500000000000000000000000001214470073000227455ustar00rootroot00000000000000ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.7/lib/rails_autolink.rb000066400000000000000000000003511214470073000263110ustar00rootroot00000000000000module RailsAutolink VERSION = '1.0.7' class Railtie < ::Rails::Railtie initializer 'rails_autolink' do |app| ActiveSupport.on_load(:action_view) do require 'rails_autolink/helpers' end end end end ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.7/lib/rails_autolink/000077500000000000000000000000001214470073000257655ustar00rootroot00000000000000ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.7/lib/rails_autolink/helpers.rb000066400000000000000000000165421214470073000277640ustar00rootroot00000000000000# 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{ (?: ([0-9A-Za-z+.:-]+:)// | www\. ) [^\s<]+ }x # regexps for determining context, used high-volume AUTO_LINK_CRE = [/<[^>]+$/, /^[^>]*>/, //i, /<\/a>/i] AUTO_EMAIL_RE = /[\w.!#\$%+-]+@[\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 ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.7/test/000077500000000000000000000000001214470073000231565ustar00rootroot00000000000000ruby-rails-autolink-1.1.0/OLDGEMS/rails_autolink-1.0.7/test/test_rails_autolink.rb000066400000000000000000000410361214470073000275660ustar00rootroot00000000000000# encoding: utf-8 require "minitest/autorun" require "rails" require "rails_autolink/helpers" require 'erb' require 'cgi' require 'active_support/core_ext/class/attribute_accessors' require 'action_pack' require 'action_view/helpers/capture_helper' require 'action_view/helpers/sanitize_helper' require 'action_view/helpers/url_helper' require 'action_view/helpers/tag_helper' require 'active_support/core_ext/module/attribute_accessors' require 'active_support/core_ext/string/encoding' require 'action_dispatch/testing/assertions' require 'action_view/helpers/text_helper' require 'action_view/helpers/output_safety_helper' 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]}...

), auto_link("

#{url}
#{email}

") { |_url| truncate(_url, :length => 10) } end def test_auto_link_with_block_with_html pic = "http://example.com/pic.png" url = "http://example.com/album?a&b=c" assert_equal %(My pic: -- full album here #{generate_result(url)}), auto_link("My pic: #{pic} -- full album here #{url}") { |link| if link =~ /\.(jpg|gif|png|bmp|tif)$/i raw %() else link end } end def test_auto_link_should_sanitize_input_when_sanitize_option_is_not_false link_raw = %{http://www.rubyonrails.com?id=1&num=2} malicious_script = '' assert_equal %{http://www.rubyonrails.com?id=1&num=2}, auto_link("#{link_raw}#{malicious_script}") assert auto_link("#{link_raw}#{malicious_script}").html_safe? end def test_auto_link_should_sanitize_input_with_sanitize_options link_raw = %{http://www.rubyonrails.com?id=1&num=2} malicious_script = '' text_with_attributes = %{Ruby} text_result = %{http://www.rubyonrails.com?id=1&num=2Ruby} assert_equal text_result, auto_link("#{link_raw}#{malicious_script}#{text_with_attributes}", :sanitize_options => {:attributes => ["target", "href"]}, :html => {:class => 'big'}) assert auto_link("#{link_raw}#{malicious_script}#{text_with_attributes}", :sanitize_options => {:attributes => ["target", "href"]}, :html => {:class => 'big'}).html_safe? end def test_auto_link_should_not_sanitize_input_when_sanitize_option_is_false link_raw = %{http://www.rubyonrails.com?id=1&num=2} malicious_script = '' assert_equal %{http://www.rubyonrails.com?id=1&num=2}, auto_link("#{link_raw}#{malicious_script}", :sanitize => false) assert !auto_link("#{link_raw}#{malicious_script}", :sanitize => false).html_safe? end def test_auto_link_other_protocols ftp_raw = 'ftp://example.com/file.txt' assert_equal %(Download #{generate_result(ftp_raw)}), auto_link("Download #{ftp_raw}") file_scheme = 'file:///home/username/RomeoAndJuliet.pdf' assert_equal generate_result(file_scheme), auto_link(file_scheme) end def test_auto_link_already_linked linked1 = generate_result('Ruby On Rails', 'http://www.rubyonrails.com') linked2 = %('www.example.com') linked3 = %('www.example.com') linked4 = %('www.example.com') linked5 = %('close www.example.com') linked6 = %('close www.example.com') assert_equal linked1, auto_link(linked1) assert_equal linked2, auto_link(linked2) assert_equal linked3, auto_link(linked3, :sanitize => false) assert_equal linked4, auto_link(linked4) assert_equal linked5, auto_link(linked5) assert_equal linked6, auto_link(linked6, :sanitize_options => {:attributes => ["href", "target", "data-ruby"]}) linked_email = %Q(Mail me) assert_equal linked_email, auto_link(linked_email) 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 %(

#{url1}
#{url2}

), auto_link("

#{url1}
#{url2}

") end def test_auto_link_should_be_html_safe email_raw = 'santiago@wyeworks.com' link_raw = 'http://www.rubyonrails.org' malicious_script = '' assert auto_link(nil).html_safe?, 'should be html safe' assert auto_link('').html_safe?, 'should be html safe' assert auto_link("#{link_raw} #{link_raw} #{link_raw}").html_safe?, 'should be html safe' assert auto_link("hello #{email_raw}").html_safe?, 'should be html safe' assert auto_link("hello #{email_raw} #{malicious_script}").html_safe?, 'should be html safe' end def test_auto_link_should_not_be_html_safe_when_sanitize_option_false email_raw = 'santiago@wyeworks.com' link_raw = 'http://www.rubyonrails.org' assert !auto_link("hello", :sanitize => false).html_safe?, 'should not be html safe' assert !auto_link("#{link_raw} #{link_raw} #{link_raw}", :sanitize => false).html_safe?, 'should not be html safe' assert !auto_link("hello #{email_raw}", :sanitize => false).html_safe?, 'should not be html safe' end def test_auto_link_email_address email_raw = 'aaron@tenderlovemaking.com' email_result = %{#{email_raw}} assert !auto_link_email_addresses(email_result).html_safe?, 'should not be html safe' end def test_auto_link email_raw = 'david@loudthinking.com' email_result = %{#{email_raw}} link_raw = 'http://www.rubyonrails.com' link_result = generate_result(link_raw) link_result_with_options = %{#{link_raw}} assert_equal '', auto_link(nil) assert_equal '', auto_link('') assert_equal "#{link_result} #{link_result} #{link_result}", auto_link("#{link_raw} #{link_raw} #{link_raw}") assert_equal %(hello #{email_result}), auto_link("hello #{email_raw}", :email_addresses) assert_equal %(Go to #{link_result}), auto_link("Go to #{link_raw}", :urls) assert_equal %(Go to #{link_raw}), auto_link("Go to #{link_raw}", :email_addresses) assert_equal %(Go to #{link_result} and say hello to #{email_result}), auto_link("Go to #{link_raw} and say hello to #{email_raw}") assert_equal %(

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 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 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 ruby-rails-autolink-1.1.0/README.rdoc000066400000000000000000000061361214470073000172400ustar00rootroot00000000000000= 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 overriden 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. ruby-rails-autolink-1.1.0/Rakefile000066400000000000000000000002151214470073000170670ustar00rootroot00000000000000# Setup some testing require 'rake' require 'rake/testtask' Rake::TestTask.new do |t| t.libs << 'test' t.pattern = 'test/test_*.rb' end ruby-rails-autolink-1.1.0/lib/000077500000000000000000000000001214470073000161725ustar00rootroot00000000000000ruby-rails-autolink-1.1.0/lib/rails_autolink.rb000066400000000000000000000003511214470073000215360ustar00rootroot00000000000000module RailsAutolink VERSION = '1.1.0' class Railtie < ::Rails::Railtie initializer 'rails_autolink' do |app| ActiveSupport.on_load(:action_view) do require 'rails_autolink/helpers' end end end end ruby-rails-autolink-1.1.0/lib/rails_autolink/000077500000000000000000000000001214470073000212125ustar00rootroot00000000000000ruby-rails-autolink-1.1.0/lib/rails_autolink/helpers.rb000066400000000000000000000167211214470073000232100ustar00rootroot00000000000000# 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<]+ }x # regexps for determining context, used high-volume AUTO_LINK_CRE = [/<[^>]+$/, /^[^>]*>/, //i, /<\/a>/i] AUTO_EMAIL_RE = /[\w.!#\$%+-]+@[\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 ruby-rails-autolink-1.1.0/metadata.yml000066400000000000000000000051001214470073000177230ustar00rootroot00000000000000--- !ruby/object:Gem::Specification name: rails_autolink version: !ruby/object:Gem::Version version: 1.1.0 prerelease: platform: ruby authors: - Aaron Patterson - Juanjo Bazan - Akira Matsuda autorequire: bindir: bin cert_chain: [] date: 2013-05-02 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: rails requirement: !ruby/object:Gem::Requirement none: false requirements: - - '>' - !ruby/object:Gem::Version version: '3.1' type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement none: false requirements: - - '>' - !ruby/object:Gem::Version version: '3.1' description: email: aaron@tenderlovemaking.com executables: [] extensions: [] extra_rdoc_files: [] files: - ./CHANGELOG.rdoc - ./Gemfile - ./Gemfile.lock - ./lib/rails_autolink/helpers.rb - ./lib/rails_autolink.rb - ./OLDGEMS/howto_release.txt - ./OLDGEMS/rails_autolink-1.0.5/CHANGELOG.rdoc - ./OLDGEMS/rails_autolink-1.0.5/Gemfile - ./OLDGEMS/rails_autolink-1.0.5/lib/rails_autolink/helpers.rb - ./OLDGEMS/rails_autolink-1.0.5/lib/rails_autolink.rb - ./OLDGEMS/rails_autolink-1.0.5/Manifest.txt - ./OLDGEMS/rails_autolink-1.0.5/Rakefile - ./OLDGEMS/rails_autolink-1.0.5/README.rdoc - ./OLDGEMS/rails_autolink-1.0.5/test/test_rails_autolink.rb - ./OLDGEMS/rails_autolink-1.0.5.gem - ./OLDGEMS/rails_autolink-1.0.7/CHANGELOG.rdoc - ./OLDGEMS/rails_autolink-1.0.7/Gemfile - ./OLDGEMS/rails_autolink-1.0.7/lib/rails_autolink/helpers.rb - ./OLDGEMS/rails_autolink-1.0.7/lib/rails_autolink.rb - ./OLDGEMS/rails_autolink-1.0.7/Manifest.txt - ./OLDGEMS/rails_autolink-1.0.7/Rakefile - ./OLDGEMS/rails_autolink-1.0.7/README.rdoc - ./OLDGEMS/rails_autolink-1.0.7/test/test_rails_autolink.rb - ./OLDGEMS/rails_autolink-1.0.7.gem - ./rails_autolink.gemspec - ./Rakefile - ./README.rdoc - ./test/test_rails_autolink.rb homepage: https://github.com/tenderlove/rails_autolink licenses: [] post_install_message: rdoc_options: [] require_paths: - lib required_ruby_version: !ruby/object:Gem::Requirement none: false requirements: - - '>=' - !ruby/object:Gem::Version version: '0' required_rubygems_version: !ruby/object:Gem::Requirement none: false requirements: - - '>=' - !ruby/object:Gem::Version version: '0' requirements: [] rubyforge_project: rubygems_version: 1.8.25 signing_key: specification_version: 3 summary: 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. test_files: [] ruby-rails-autolink-1.1.0/rails_autolink.gemspec000066400000000000000000000011351214470073000220110ustar00rootroot00000000000000Gem::Specification.new do |s| s.name = 'rails_autolink' s.version = '1.1.0' 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.summary = '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.files = Dir["#{File.dirname(__FILE__)}/**/*"] end ruby-rails-autolink-1.1.0/test/000077500000000000000000000000001214470073000164035ustar00rootroot00000000000000ruby-rails-autolink-1.1.0/test/test_rails_autolink.rb000066400000000000000000000410361214470073000230130ustar00rootroot00000000000000# encoding: utf-8 require "minitest/autorun" require "rails" require "rails_autolink/helpers" require 'erb' require 'cgi' require 'active_support/core_ext/class/attribute_accessors' require 'action_pack' require 'action_view/helpers/capture_helper' require 'action_view/helpers/sanitize_helper' require 'action_view/helpers/url_helper' require 'action_view/helpers/tag_helper' require 'active_support/core_ext/module/attribute_accessors' require 'active_support/core_ext/string/encoding' require 'action_dispatch/testing/assertions' require 'action_view/helpers/text_helper' require 'action_view/helpers/output_safety_helper' 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]}...

), auto_link("

#{url}
#{email}

") { |_url| truncate(_url, :length => 10) } end def test_auto_link_with_block_with_html pic = "http://example.com/pic.png" url = "http://example.com/album?a&b=c" assert_equal %(My pic: -- full album here #{generate_result(url)}), auto_link("My pic: #{pic} -- full album here #{url}") { |link| if link =~ /\.(jpg|gif|png|bmp|tif)$/i raw %() else link end } end def test_auto_link_should_sanitize_input_when_sanitize_option_is_not_false link_raw = %{http://www.rubyonrails.com?id=1&num=2} malicious_script = '' assert_equal %{http://www.rubyonrails.com?id=1&num=2}, auto_link("#{link_raw}#{malicious_script}") assert auto_link("#{link_raw}#{malicious_script}").html_safe? end def test_auto_link_should_sanitize_input_with_sanitize_options link_raw = %{http://www.rubyonrails.com?id=1&num=2} malicious_script = '' text_with_attributes = %{Ruby} text_result = %{http://www.rubyonrails.com?id=1&num=2Ruby} assert_equal text_result, auto_link("#{link_raw}#{malicious_script}#{text_with_attributes}", :sanitize_options => {:attributes => ["target", "href"]}, :html => {:class => 'big'}) assert auto_link("#{link_raw}#{malicious_script}#{text_with_attributes}", :sanitize_options => {:attributes => ["target", "href"]}, :html => {:class => 'big'}).html_safe? end def test_auto_link_should_not_sanitize_input_when_sanitize_option_is_false link_raw = %{http://www.rubyonrails.com?id=1&num=2} malicious_script = '' assert_equal %{http://www.rubyonrails.com?id=1&num=2}, auto_link("#{link_raw}#{malicious_script}", :sanitize => false) assert !auto_link("#{link_raw}#{malicious_script}", :sanitize => false).html_safe? end def test_auto_link_other_protocols ftp_raw = 'ftp://example.com/file.txt' assert_equal %(Download #{generate_result(ftp_raw)}), auto_link("Download #{ftp_raw}") file_scheme = 'file:///home/username/RomeoAndJuliet.pdf' assert_equal generate_result(file_scheme), auto_link(file_scheme) end def test_auto_link_already_linked linked1 = generate_result('Ruby On Rails', 'http://www.rubyonrails.com') linked2 = %('www.example.com') linked3 = %('www.example.com') linked4 = %('www.example.com') linked5 = %('close www.example.com') linked6 = %('close www.example.com') assert_equal linked1, auto_link(linked1) assert_equal linked2, auto_link(linked2) assert_equal linked3, auto_link(linked3, :sanitize => false) assert_equal linked4, auto_link(linked4) assert_equal linked5, auto_link(linked5) assert_equal linked6, auto_link(linked6, :sanitize_options => {:attributes => ["href", "target", "data-ruby"]}) linked_email = %Q(Mail me) assert_equal linked_email, auto_link(linked_email) 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 %(

#{url1}
#{url2}

), auto_link("

#{url1}
#{url2}

") end def test_auto_link_should_be_html_safe email_raw = 'santiago@wyeworks.com' link_raw = 'http://www.rubyonrails.org' malicious_script = '' assert auto_link(nil).html_safe?, 'should be html safe' assert auto_link('').html_safe?, 'should be html safe' assert auto_link("#{link_raw} #{link_raw} #{link_raw}").html_safe?, 'should be html safe' assert auto_link("hello #{email_raw}").html_safe?, 'should be html safe' assert auto_link("hello #{email_raw} #{malicious_script}").html_safe?, 'should be html safe' end def test_auto_link_should_not_be_html_safe_when_sanitize_option_false email_raw = 'santiago@wyeworks.com' link_raw = 'http://www.rubyonrails.org' assert !auto_link("hello", :sanitize => false).html_safe?, 'should not be html safe' assert !auto_link("#{link_raw} #{link_raw} #{link_raw}", :sanitize => false).html_safe?, 'should not be html safe' assert !auto_link("hello #{email_raw}", :sanitize => false).html_safe?, 'should not be html safe' end def test_auto_link_email_address email_raw = 'aaron@tenderlovemaking.com' email_result = %{#{email_raw}} assert !auto_link_email_addresses(email_result).html_safe?, 'should not be html safe' end def test_auto_link email_raw = 'david@loudthinking.com' email_result = %{#{email_raw}} link_raw = 'http://www.rubyonrails.com' link_result = generate_result(link_raw) link_result_with_options = %{#{link_raw}} assert_equal '', auto_link(nil) assert_equal '', auto_link('') assert_equal "#{link_result} #{link_result} #{link_result}", auto_link("#{link_raw} #{link_raw} #{link_raw}") assert_equal %(hello #{email_result}), auto_link("hello #{email_raw}", :email_addresses) assert_equal %(Go to #{link_result}), auto_link("Go to #{link_raw}", :urls) assert_equal %(Go to #{link_raw}), auto_link("Go to #{link_raw}", :email_addresses) assert_equal %(Go to #{link_result} and say hello to #{email_result}), auto_link("Go to #{link_raw} and say hello to #{email_raw}") assert_equal %(

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 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 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