zendesk-rinku 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/COPYING +13 -0
- data/README.markdown +120 -0
- data/Rakefile +67 -0
- data/ext/rinku/autolink.c +296 -0
- data/ext/rinku/autolink.h +51 -0
- data/ext/rinku/buffer.c +225 -0
- data/ext/rinku/buffer.h +96 -0
- data/ext/rinku/extconf.rb +6 -0
- data/ext/rinku/rinku.c +468 -0
- data/ext/rinku/rinku.h +7 -0
- data/lib/rails_rinku.rb +29 -0
- data/lib/rinku.rb +7 -0
- data/rinku.gemspec +38 -0
- data/test/autolink_test.rb +295 -0
- metadata +62 -0
data/ext/rinku/rinku.h
ADDED
data/lib/rails_rinku.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'rinku'
|
2
|
+
|
3
|
+
module RailsRinku
|
4
|
+
def rinku_auto_link(text, *args, &block)
|
5
|
+
return '' if text.blank?
|
6
|
+
|
7
|
+
options = args.size == 2 ? {} : args.extract_options!
|
8
|
+
unless args.empty?
|
9
|
+
options[:link] = args[0] || :all
|
10
|
+
options[:html] = args[1] || {}
|
11
|
+
options[:skip] = args[2]
|
12
|
+
end
|
13
|
+
options.reverse_merge!(:link => :all, :html => {})
|
14
|
+
text = h(text) unless text.html_safe?
|
15
|
+
|
16
|
+
Rinku.auto_link(
|
17
|
+
text,
|
18
|
+
options[:link],
|
19
|
+
tag_options(options[:html]),
|
20
|
+
options[:skip],
|
21
|
+
&block
|
22
|
+
).html_safe
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
module ActionView::Helpers::TextHelper
|
27
|
+
include RailsRinku
|
28
|
+
alias_method :auto_link, :rinku_auto_link
|
29
|
+
end
|
data/lib/rinku.rb
ADDED
data/rinku.gemspec
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = 'zendesk-rinku'
|
5
|
+
s.version = '1.7.0'
|
6
|
+
s.summary = "Mostly autolinking"
|
7
|
+
s.description = <<-EOF
|
8
|
+
A fast and very smart autolinking library that
|
9
|
+
acts as a drop-in replacement for Rails `auto_link`
|
10
|
+
|
11
|
+
This is just a fork of vmg's lib with a small patch we need.
|
12
|
+
EOF
|
13
|
+
s.email = 'shajith@zendesk.com'
|
14
|
+
s.homepage = 'http://github.com/shajith/rinku'
|
15
|
+
s.authors = ["Shajith Chacko", "Vicent Marti"]
|
16
|
+
# = MANIFEST =
|
17
|
+
s.files = %w[
|
18
|
+
COPYING
|
19
|
+
README.markdown
|
20
|
+
Rakefile
|
21
|
+
ext/rinku/rinku.c
|
22
|
+
ext/rinku/rinku.h
|
23
|
+
ext/rinku/autolink.c
|
24
|
+
ext/rinku/autolink.h
|
25
|
+
ext/rinku/buffer.c
|
26
|
+
ext/rinku/buffer.h
|
27
|
+
ext/rinku/extconf.rb
|
28
|
+
lib/rinku.rb
|
29
|
+
lib/rails_rinku.rb
|
30
|
+
rinku.gemspec
|
31
|
+
test/autolink_test.rb
|
32
|
+
]
|
33
|
+
# = MANIFEST =
|
34
|
+
s.test_files = ["test/autolink_test.rb"]
|
35
|
+
s.extra_rdoc_files = ["COPYING"]
|
36
|
+
s.extensions = ["ext/rinku/extconf.rb"]
|
37
|
+
s.require_paths = ["lib"]
|
38
|
+
end
|
@@ -0,0 +1,295 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
rootdir = File.dirname(File.dirname(__FILE__))
|
3
|
+
$LOAD_PATH.unshift "#{rootdir}/lib"
|
4
|
+
|
5
|
+
require 'test/unit'
|
6
|
+
require 'cgi'
|
7
|
+
require 'uri'
|
8
|
+
require 'rinku'
|
9
|
+
|
10
|
+
class RedcarpetAutolinkTest < Test::Unit::TestCase
|
11
|
+
|
12
|
+
SAFE_CHARS = "{}[]~'"
|
13
|
+
|
14
|
+
def assert_linked(expected, url)
|
15
|
+
assert_equal expected, Rinku.auto_link(url)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_escapes_quotes
|
19
|
+
assert_linked %(<a href="http://website.com/"onmouseover=document.body.style.backgroundColor="pink";//">http://website.com/"onmouseover=document.body.style.backgroundColor="pink";//</a>),
|
20
|
+
%(http://website.com/"onmouseover=document.body.style.backgroundColor="pink";//)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_global_skip_tags
|
24
|
+
assert_equal Rinku.skip_tags, nil
|
25
|
+
Rinku.skip_tags = ['pre']
|
26
|
+
assert_equal Rinku.skip_tags, ['pre']
|
27
|
+
|
28
|
+
Rinku.skip_tags = ['pa']
|
29
|
+
url = 'This is just a <pa>http://www.pokemon.com</pa> test'
|
30
|
+
assert_equal Rinku.auto_link(url), url
|
31
|
+
|
32
|
+
Rinku.skip_tags = nil
|
33
|
+
assert_not_equal Rinku.auto_link(url), url
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_auto_link_with_single_trailing_punctuation_and_space
|
37
|
+
url = "http://www.youtube.com"
|
38
|
+
url_result = generate_result(url)
|
39
|
+
assert_equal url_result, Rinku.auto_link(url)
|
40
|
+
assert_equal "link: #{url_result}. foo?", Rinku.auto_link("link: #{url}. foo?")
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_does_not_segfault
|
44
|
+
assert_linked "< this is just a test", "< this is just a test"
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_skips_tags
|
48
|
+
html = <<-html
|
49
|
+
This is just a test. http://www.pokemon.com
|
50
|
+
<div>
|
51
|
+
More test
|
52
|
+
http://www.amd.com
|
53
|
+
</div>
|
54
|
+
<pre>
|
55
|
+
CODE www.less.es
|
56
|
+
</pre>
|
57
|
+
html
|
58
|
+
|
59
|
+
result = <<-result
|
60
|
+
This is just a test. <a href="http://www.pokemon.com">http://www.pokemon.com</a>
|
61
|
+
<div>
|
62
|
+
More test
|
63
|
+
http://www.amd.com
|
64
|
+
</div>
|
65
|
+
<pre>
|
66
|
+
CODE <a href="http://www.less.es">www.less.es</a>
|
67
|
+
</pre>
|
68
|
+
result
|
69
|
+
assert_equal result, Rinku.auto_link(html, :all, nil, ["div", "a"])
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_auto_link_with_brackets
|
73
|
+
link1_raw = 'http://en.wikipedia.org/wiki/Sprite_(computer_graphics)'
|
74
|
+
link1_result = generate_result(link1_raw)
|
75
|
+
assert_equal link1_result, Rinku.auto_link(link1_raw)
|
76
|
+
assert_equal "(link: #{link1_result})", Rinku.auto_link("(link: #{link1_raw})")
|
77
|
+
|
78
|
+
link2_raw = 'http://en.wikipedia.org/wiki/Sprite_[computer_graphics]'
|
79
|
+
link2_result = generate_result(link2_raw)
|
80
|
+
assert_equal link2_result, Rinku.auto_link(link2_raw)
|
81
|
+
assert_equal "[link: #{link2_result}]", Rinku.auto_link("[link: #{link2_raw}]")
|
82
|
+
|
83
|
+
link3_raw = 'http://en.wikipedia.org/wiki/Sprite_{computer_graphics}'
|
84
|
+
link3_result = generate_result(link3_raw)
|
85
|
+
assert_equal link3_result, Rinku.auto_link(link3_raw)
|
86
|
+
assert_equal "{link: #{link3_result}}", Rinku.auto_link("{link: #{link3_raw}}")
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_auto_link_with_multiple_trailing_punctuations
|
90
|
+
url = "http://youtube.com"
|
91
|
+
url_result = generate_result(url)
|
92
|
+
assert_equal url_result, Rinku.auto_link(url)
|
93
|
+
assert_equal "(link: #{url_result}).", Rinku.auto_link("(link: #{url}).")
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_auto_link_with_block
|
97
|
+
url = "http://api.rubyonrails.com/Foo.html"
|
98
|
+
email = "fantabulous@shiznadel.ic"
|
99
|
+
|
100
|
+
assert_equal %(<p><a href="#{url}">#{url[0...7]}...</a><br /><a href="mailto:#{email}">#{email[0...7]}...</a><br /></p>), Rinku.auto_link("<p>#{url}<br />#{email}<br /></p>") { |_url| _url[0...7] + '...'}
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_auto_link_with_block_with_html
|
104
|
+
pic = "http://example.com/pic.png"
|
105
|
+
url = "http://example.com/album?a&b=c"
|
106
|
+
|
107
|
+
expect = %(My pic: <a href="#{pic}"><img src="#{pic}" width="160px"></a> -- full album here #{generate_result(url)})
|
108
|
+
text = "My pic: #{pic} -- full album here #{CGI.escapeHTML url}"
|
109
|
+
|
110
|
+
assert_equal expect, Rinku.auto_link(text) { |link|
|
111
|
+
if link =~ /\.(jpg|gif|png|bmp|tif)$/i
|
112
|
+
%(<img src="#{link}" width="160px">)
|
113
|
+
else
|
114
|
+
link
|
115
|
+
end
|
116
|
+
}
|
117
|
+
end
|
118
|
+
|
119
|
+
def test_auto_link_already_linked
|
120
|
+
linked1 = generate_result('Ruby On Rails', 'http://www.rubyonrails.com')
|
121
|
+
linked2 = %('<a href="http://www.example.com">www.example.com</a>')
|
122
|
+
linked3 = %('<a href="http://www.example.com" rel="nofollow">www.example.com</a>')
|
123
|
+
linked4 = %('<a href="http://www.example.com"><b>www.example.com</b></a>')
|
124
|
+
linked5 = %('<a href="#close">close</a> <a href="http://www.example.com"><b>www.example.com</b></a>')
|
125
|
+
assert_equal linked1, Rinku.auto_link(linked1)
|
126
|
+
assert_equal linked2, Rinku.auto_link(linked2)
|
127
|
+
assert_equal linked3, Rinku.auto_link(linked3)
|
128
|
+
assert_equal linked4, Rinku.auto_link(linked4)
|
129
|
+
assert_equal linked5, Rinku.auto_link(linked5)
|
130
|
+
|
131
|
+
linked_email = %Q(<a href="mailto:david@loudthinking.com">Mail me</a>)
|
132
|
+
assert_equal linked_email, Rinku.auto_link(linked_email)
|
133
|
+
end
|
134
|
+
|
135
|
+
|
136
|
+
def test_auto_link_at_eol
|
137
|
+
url1 = "http://api.rubyonrails.com/Foo.html"
|
138
|
+
url2 = "http://www.ruby-doc.org/core/Bar.html"
|
139
|
+
|
140
|
+
assert_equal %(<p><a href="#{url1}">#{url1}</a><br /><a href="#{url2}">#{url2}</a><br /></p>), Rinku.auto_link("<p>#{url1}<br />#{url2}<br /></p>")
|
141
|
+
end
|
142
|
+
|
143
|
+
def test_block
|
144
|
+
link = Rinku.auto_link("Find ur favorite pokeman @ http://www.pokemon.com") do |url|
|
145
|
+
assert_equal url, "http://www.pokemon.com"
|
146
|
+
"POKEMAN WEBSITE"
|
147
|
+
end
|
148
|
+
|
149
|
+
assert_equal link, "Find ur favorite pokeman @ <a href=\"http://www.pokemon.com\">POKEMAN WEBSITE</a>"
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_autolink_works
|
153
|
+
url = "http://example.com/"
|
154
|
+
assert_linked "<a href=\"#{url}\">#{url}</a>", url
|
155
|
+
end
|
156
|
+
|
157
|
+
def test_autolink_options_for_short_domains
|
158
|
+
url = "http://google"
|
159
|
+
linked_url = "<a href=\"#{url}\">#{url}</a>"
|
160
|
+
flags = Rinku::AUTOLINK_SHORT_DOMAINS
|
161
|
+
|
162
|
+
# Specifying use short_domains in the args
|
163
|
+
url = "http://google"
|
164
|
+
linked_url = "<a href=\"#{url}\">#{url}</a>"
|
165
|
+
assert_equal Rinku.auto_link(url, nil, nil, nil, flags), linked_url
|
166
|
+
|
167
|
+
# Specifying no short_domains in the args
|
168
|
+
url = "http://google"
|
169
|
+
linked_url = "<a href=\"#{url}\">#{url}</a>"
|
170
|
+
assert_equal Rinku.auto_link(url, nil, nil, nil, 0), url
|
171
|
+
end
|
172
|
+
|
173
|
+
def test_not_autolink_www
|
174
|
+
assert_linked "Awww... man", "Awww... man"
|
175
|
+
end
|
176
|
+
|
177
|
+
def test_does_not_terminate_on_dash
|
178
|
+
url = "http://example.com/Notification_Center-GitHub-20101108-140050.jpg"
|
179
|
+
assert_linked "<a href=\"#{url}\">#{url}</a>", url
|
180
|
+
end
|
181
|
+
|
182
|
+
def test_does_not_include_trailing_gt
|
183
|
+
url = "http://example.com"
|
184
|
+
assert_linked "<<a href=\"#{url}\">#{url}</a>>", "<#{url}>"
|
185
|
+
end
|
186
|
+
|
187
|
+
def test_links_with_anchors
|
188
|
+
url = "https://github.com/github/hubot/blob/master/scripts/cream.js#L20-20"
|
189
|
+
assert_linked "<a href=\"#{url}\">#{url}</a>", url
|
190
|
+
end
|
191
|
+
|
192
|
+
def test_links_like_rails
|
193
|
+
urls = %w(http://www.rubyonrails.com
|
194
|
+
http://www.rubyonrails.com:80
|
195
|
+
http://www.rubyonrails.com/~minam
|
196
|
+
https://www.rubyonrails.com/~minam
|
197
|
+
http://www.rubyonrails.com/~minam/url%20with%20spaces
|
198
|
+
http://www.rubyonrails.com/foo.cgi?something=here
|
199
|
+
http://www.rubyonrails.com/foo.cgi?something=here&and=here
|
200
|
+
http://www.rubyonrails.com/contact;new
|
201
|
+
http://www.rubyonrails.com/contact;new%20with%20spaces
|
202
|
+
http://www.rubyonrails.com/contact;new?with=query&string=params
|
203
|
+
http://www.rubyonrails.com/~minam/contact;new?with=query&string=params
|
204
|
+
http://en.wikipedia.org/wiki/Wikipedia:Today%27s_featured_picture_%28animation%29/January_20%2C_2007
|
205
|
+
http://www.mail-archive.com/rails@lists.rubyonrails.org/
|
206
|
+
http://www.amazon.com/Testing-Equal-Sign-In-Path/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1198861734&sr=8-1
|
207
|
+
http://en.wikipedia.org/wiki/Sprite_(computer_graphics)
|
208
|
+
http://en.wikipedia.org/wiki/Texas_hold%27em
|
209
|
+
https://www.google.com/doku.php?id=gps:resource:scs:start
|
210
|
+
)
|
211
|
+
|
212
|
+
urls.each do |url|
|
213
|
+
assert_linked %(<a href="#{CGI.escapeHTML url}">#{CGI.escapeHTML url}</a>), CGI.escapeHTML(url)
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
def test_links_like_autolink_rails
|
218
|
+
email_raw = 'david@loudthinking.com'
|
219
|
+
email_result = %{<a href="mailto:#{email_raw}">#{email_raw}</a>}
|
220
|
+
email2_raw = '+david@loudthinking.com'
|
221
|
+
email2_result = %{<a href="mailto:#{email2_raw}">#{email2_raw}</a>}
|
222
|
+
link_raw = 'http://www.rubyonrails.com'
|
223
|
+
link_result = %{<a href="#{link_raw}">#{link_raw}</a>}
|
224
|
+
link_result_with_options = %{<a href="#{link_raw}" target="_blank">#{link_raw}</a>}
|
225
|
+
link2_raw = 'www.rubyonrails.com'
|
226
|
+
link2_result = %{<a href="http://#{link2_raw}">#{link2_raw}</a>}
|
227
|
+
link3_raw = 'http://manuals.ruby-on-rails.com/read/chapter.need_a-period/103#page281'
|
228
|
+
link3_result = %{<a href="#{link3_raw}">#{link3_raw}</a>}
|
229
|
+
link4_raw = CGI.escapeHTML 'http://foo.example.com/controller/action?parm=value&p2=v2#anchor123'
|
230
|
+
link4_result = %{<a href="#{link4_raw}">#{link4_raw}</a>}
|
231
|
+
link5_raw = 'http://foo.example.com:3000/controller/action'
|
232
|
+
link5_result = %{<a href="#{link5_raw}">#{link5_raw}</a>}
|
233
|
+
link6_raw = 'http://foo.example.com:3000/controller/action+pack'
|
234
|
+
link6_result = %{<a href="#{link6_raw}">#{link6_raw}</a>}
|
235
|
+
link7_raw = CGI.escapeHTML 'http://foo.example.com/controller/action?parm=value&p2=v2#anchor-123'
|
236
|
+
link7_result = %{<a href="#{link7_raw}">#{link7_raw}</a>}
|
237
|
+
link8_raw = 'http://foo.example.com:3000/controller/action.html'
|
238
|
+
link8_result = %{<a href="#{link8_raw}">#{link8_raw}</a>}
|
239
|
+
link9_raw = 'http://business.timesonline.co.uk/article/0,,9065-2473189,00.html'
|
240
|
+
link9_result = %{<a href="#{link9_raw}">#{link9_raw}</a>}
|
241
|
+
link10_raw = 'http://www.mail-archive.com/ruby-talk@ruby-lang.org/'
|
242
|
+
link10_result = %{<a href="#{link10_raw}">#{link10_raw}</a>}
|
243
|
+
|
244
|
+
assert_linked %(Go to #{link_result} and say hello to #{email_result}), "Go to #{link_raw} and say hello to #{email_raw}"
|
245
|
+
assert_linked %(<p>Link #{link_result}</p>), "<p>Link #{link_raw}</p>"
|
246
|
+
assert_linked %(<p>#{link_result} Link</p>), "<p>#{link_raw} Link</p>"
|
247
|
+
assert_linked %(Go to #{link_result}.), %(Go to #{link_raw}.)
|
248
|
+
assert_linked %(<p>Go to #{link_result}, then say hello to #{email_result}.</p>), %(<p>Go to #{link_raw}, then say hello to #{email_raw}.</p>)
|
249
|
+
assert_linked %(<p>Link #{link2_result}</p>), "<p>Link #{link2_raw}</p>"
|
250
|
+
assert_linked %(<p>#{link2_result} Link</p>), "<p>#{link2_raw} Link</p>"
|
251
|
+
assert_linked %(Go to #{link2_result}.), %(Go to #{link2_raw}.)
|
252
|
+
assert_linked %(<p>Say hello to #{email_result}, then go to #{link2_result},</p>), %(<p>Say hello to #{email_raw}, then go to #{link2_raw},</p>)
|
253
|
+
assert_linked %(<p>Link #{link3_result}</p>), "<p>Link #{link3_raw}</p>"
|
254
|
+
assert_linked %(<p>#{link3_result} Link</p>), "<p>#{link3_raw} Link</p>"
|
255
|
+
assert_linked %(Go to #{link3_result}.), %(Go to #{link3_raw}.)
|
256
|
+
assert_linked %(<p>Go to #{link3_result}. seriously, #{link3_result}? i think I'll say hello to #{email_result}. instead.</p>), %(<p>Go to #{link3_raw}. seriously, #{link3_raw}? i think I'll say hello to #{email_raw}. instead.</p>)
|
257
|
+
assert_linked %(<p>Link #{link4_result}</p>), "<p>Link #{link4_raw}</p>"
|
258
|
+
assert_linked %(<p>#{link4_result} Link</p>), "<p>#{link4_raw} Link</p>"
|
259
|
+
assert_linked %(<p>#{link5_result} Link</p>), "<p>#{link5_raw} Link</p>"
|
260
|
+
assert_linked %(<p>#{link6_result} Link</p>), "<p>#{link6_raw} Link</p>"
|
261
|
+
assert_linked %(<p>#{link7_result} Link</p>), "<p>#{link7_raw} Link</p>"
|
262
|
+
assert_linked %(<p>Link #{link8_result}</p>), "<p>Link #{link8_raw}</p>"
|
263
|
+
assert_linked %(<p>#{link8_result} Link</p>), "<p>#{link8_raw} Link</p>"
|
264
|
+
assert_linked %(Go to #{link8_result}.), %(Go to #{link8_raw}.)
|
265
|
+
assert_linked %(<p>Go to #{link8_result}. seriously, #{link8_result}? i think I'll say hello to #{email_result}. instead.</p>), %(<p>Go to #{link8_raw}. seriously, #{link8_raw}? i think I'll say hello to #{email_raw}. instead.</p>)
|
266
|
+
assert_linked %(<p>Link #{link9_result}</p>), "<p>Link #{link9_raw}</p>"
|
267
|
+
assert_linked %(<p>#{link9_result} Link</p>), "<p>#{link9_raw} Link</p>"
|
268
|
+
assert_linked %(Go to #{link9_result}.), %(Go to #{link9_raw}.)
|
269
|
+
assert_linked %(<p>Go to #{link9_result}. seriously, #{link9_result}? i think I'll say hello to #{email_result}. instead.</p>), %(<p>Go to #{link9_raw}. seriously, #{link9_raw}? i think I'll say hello to #{email_raw}. instead.</p>)
|
270
|
+
assert_linked %(<p>#{link10_result} Link</p>), "<p>#{link10_raw} Link</p>"
|
271
|
+
assert_linked email2_result, email2_raw
|
272
|
+
assert_linked "#{link_result} #{link_result} #{link_result}", "#{link_raw} #{link_raw} #{link_raw}"
|
273
|
+
assert_linked '<a href="http://www.rubyonrails.com">Ruby On Rails</a>', '<a href="http://www.rubyonrails.com">Ruby On Rails</a>'
|
274
|
+
end
|
275
|
+
|
276
|
+
if "".respond_to?(:force_encoding)
|
277
|
+
def test_copies_source_encoding
|
278
|
+
str = "http://www.bash.org"
|
279
|
+
|
280
|
+
ret = Rinku.auto_link str
|
281
|
+
assert_equal str.encoding, ret.encoding
|
282
|
+
|
283
|
+
str.encode! 'binary'
|
284
|
+
|
285
|
+
ret = Rinku.auto_link str
|
286
|
+
assert_equal str.encoding, ret.encoding
|
287
|
+
end
|
288
|
+
end
|
289
|
+
|
290
|
+
def generate_result(link_text, href = nil)
|
291
|
+
href ||= link_text
|
292
|
+
%{<a href="#{CGI.escapeHTML href}">#{CGI.escapeHTML link_text}</a>}
|
293
|
+
end
|
294
|
+
|
295
|
+
end
|
metadata
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: zendesk-rinku
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.7.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Shajith Chacko
|
8
|
+
- Vicent Marti
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-03-31 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: ! " A fast and very smart autolinking library that\n acts as a
|
15
|
+
drop-in replacement for Rails `auto_link`\n\n This is just a fork of vmg's lib
|
16
|
+
with a small patch we need.\n"
|
17
|
+
email: shajith@zendesk.com
|
18
|
+
executables: []
|
19
|
+
extensions:
|
20
|
+
- ext/rinku/extconf.rb
|
21
|
+
extra_rdoc_files:
|
22
|
+
- COPYING
|
23
|
+
files:
|
24
|
+
- COPYING
|
25
|
+
- README.markdown
|
26
|
+
- Rakefile
|
27
|
+
- ext/rinku/autolink.c
|
28
|
+
- ext/rinku/autolink.h
|
29
|
+
- ext/rinku/buffer.c
|
30
|
+
- ext/rinku/buffer.h
|
31
|
+
- ext/rinku/extconf.rb
|
32
|
+
- ext/rinku/rinku.c
|
33
|
+
- ext/rinku/rinku.h
|
34
|
+
- lib/rails_rinku.rb
|
35
|
+
- lib/rinku.rb
|
36
|
+
- rinku.gemspec
|
37
|
+
- test/autolink_test.rb
|
38
|
+
homepage: http://github.com/shajith/rinku
|
39
|
+
licenses: []
|
40
|
+
metadata: {}
|
41
|
+
post_install_message:
|
42
|
+
rdoc_options: []
|
43
|
+
require_paths:
|
44
|
+
- lib
|
45
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ! '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
requirements: []
|
56
|
+
rubyforge_project:
|
57
|
+
rubygems_version: 2.2.2
|
58
|
+
signing_key:
|
59
|
+
specification_version: 4
|
60
|
+
summary: Mostly autolinking
|
61
|
+
test_files:
|
62
|
+
- test/autolink_test.rb
|