murlsh 0.11.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.htaccess +2 -0
- data/README.textile +3 -33
- data/Rakefile +12 -5
- data/VERSION +1 -1
- data/config.ru +10 -4
- data/config.yaml +6 -12
- data/lib/murlsh/dispatch.rb +0 -6
- data/lib/murlsh/img_store.rb +36 -0
- data/lib/murlsh/markup.rb +0 -1
- data/lib/murlsh/plugin.rb +2 -6
- data/lib/murlsh/uri_ask.rb +66 -22
- data/lib/murlsh/url.rb +0 -18
- data/lib/murlsh/url_body.rb +15 -23
- data/lib/murlsh/url_server.rb +5 -5
- data/murlsh.gemspec +44 -19
- data/plugins/add_post_50_update_feed.rb +17 -3
- data/plugins/add_post_50_update_podcast.rb +46 -0
- data/plugins/add_post_50_update_rss.rb +18 -2
- data/plugins/add_post_60_notify_hubs.rb +3 -1
- data/plugins/add_pre_40_convert_mobile.rb +30 -0
- data/plugins/add_pre_50_lookup_content_type_title.rb +11 -4
- data/plugins/add_pre_60_flickr.rb +38 -0
- data/plugins/add_pre_60_github_title.rb +5 -1
- data/plugins/add_pre_60_google_code_title.rb +5 -2
- data/plugins/add_pre_60_imageshack.rb +31 -0
- data/plugins/add_pre_60_imgur.rb +32 -0
- data/plugins/add_pre_60_s3_image.rb +34 -0
- data/plugins/add_pre_60_twitter.rb +35 -0
- data/plugins/add_pre_60_vimeo.rb +35 -0
- data/plugins/add_pre_60_youtube.rb +31 -0
- data/plugins/html_parse_50_hpricot.rb +2 -0
- data/plugins/url_display_add_45_mp3.rb +30 -0
- data/plugins/url_display_add_50_hostrec.rb +38 -0
- data/plugins/url_display_add_55_content_type.rb +27 -0
- data/plugins/url_display_add_60_via.rb +52 -0
- data/plugins/url_display_add_65_time.rb +22 -0
- data/public/css/jquery.jgrowl.css +0 -3
- data/public/css/screen.css +0 -18
- data/public/img/thumb/README +0 -0
- data/public/js/jquery-1.4.3.min.js +166 -0
- data/public/js/js.js +62 -234
- data/public/js/twitter-text-1.0.3.js +538 -0
- data/spec/img_store_spec.rb +53 -0
- data/spec/uri_ask_spec.rb +14 -4
- metadata +139 -37
- data/lib/murlsh/flickr_server.rb +0 -55
- data/lib/murlsh/twitter_server.rb +0 -45
- data/lib/murlsh/unwrap_jsonp.rb +0 -15
- data/lib/murlsh/xhtml_response.rb +0 -20
- data/plugins/hostrec_50_redundant.rb +0 -14
- data/plugins/hostrec_60_skip.rb +0 -24
- data/plugins/time_50_ago.rb +0 -16
- data/plugins/via_50_domain.rb +0 -36
- data/public/js/jquery-1.4.2.min.js +0 -154
- data/spec/unwrap_json_spec.rb +0 -21
- data/spec/xhtml_response_spec.rb +0 -112
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: murlsh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
|
+
- 1
|
7
8
|
- 0
|
8
|
-
- 11
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 1.0.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Matthew M. Boedicker
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-11-03 00:00:00 -04:00
|
19
19
|
default_executable: murlsh
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -67,9 +67,41 @@ dependencies:
|
|
67
67
|
type: :runtime
|
68
68
|
version_requirements: *id003
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: flickraw
|
71
71
|
prerelease: false
|
72
72
|
requirement: &id004 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
hash: 57
|
78
|
+
segments:
|
79
|
+
- 0
|
80
|
+
- 8
|
81
|
+
- 3
|
82
|
+
version: 0.8.3
|
83
|
+
type: :runtime
|
84
|
+
version_requirements: *id004
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: flog
|
87
|
+
prerelease: false
|
88
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
hash: 27
|
94
|
+
segments:
|
95
|
+
- 2
|
96
|
+
- 5
|
97
|
+
- 0
|
98
|
+
version: 2.5.0
|
99
|
+
type: :runtime
|
100
|
+
version_requirements: *id005
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
name: hpricot
|
103
|
+
prerelease: false
|
104
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
73
105
|
none: false
|
74
106
|
requirements:
|
75
107
|
- - ">="
|
@@ -81,11 +113,11 @@ dependencies:
|
|
81
113
|
- 1
|
82
114
|
version: 0.8.1
|
83
115
|
type: :runtime
|
84
|
-
version_requirements: *
|
116
|
+
version_requirements: *id006
|
85
117
|
- !ruby/object:Gem::Dependency
|
86
118
|
name: htmlentities
|
87
119
|
prerelease: false
|
88
|
-
requirement: &
|
120
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
89
121
|
none: false
|
90
122
|
requirements:
|
91
123
|
- - ">="
|
@@ -97,11 +129,11 @@ dependencies:
|
|
97
129
|
- 0
|
98
130
|
version: 4.2.0
|
99
131
|
type: :runtime
|
100
|
-
version_requirements: *
|
132
|
+
version_requirements: *id007
|
101
133
|
- !ruby/object:Gem::Dependency
|
102
134
|
name: json
|
103
135
|
prerelease: false
|
104
|
-
requirement: &
|
136
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
105
137
|
none: false
|
106
138
|
requirements:
|
107
139
|
- - ">="
|
@@ -113,11 +145,11 @@ dependencies:
|
|
113
145
|
- 3
|
114
146
|
version: 1.2.3
|
115
147
|
type: :runtime
|
116
|
-
version_requirements: *
|
148
|
+
version_requirements: *id008
|
117
149
|
- !ruby/object:Gem::Dependency
|
118
150
|
name: push-notify
|
119
151
|
prerelease: false
|
120
|
-
requirement: &
|
152
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
121
153
|
none: false
|
122
154
|
requirements:
|
123
155
|
- - ">="
|
@@ -129,11 +161,11 @@ dependencies:
|
|
129
161
|
- 0
|
130
162
|
version: 0.1.0
|
131
163
|
type: :runtime
|
132
|
-
version_requirements: *
|
164
|
+
version_requirements: *id009
|
133
165
|
- !ruby/object:Gem::Dependency
|
134
166
|
name: rack
|
135
167
|
prerelease: false
|
136
|
-
requirement: &
|
168
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
137
169
|
none: false
|
138
170
|
requirements:
|
139
171
|
- - ">="
|
@@ -145,11 +177,11 @@ dependencies:
|
|
145
177
|
- 0
|
146
178
|
version: 1.0.0
|
147
179
|
type: :runtime
|
148
|
-
version_requirements: *
|
180
|
+
version_requirements: *id010
|
149
181
|
- !ruby/object:Gem::Dependency
|
150
182
|
name: rack-cache
|
151
183
|
prerelease: false
|
152
|
-
requirement: &
|
184
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
153
185
|
none: false
|
154
186
|
requirements:
|
155
187
|
- - ">="
|
@@ -161,11 +193,27 @@ dependencies:
|
|
161
193
|
- 2
|
162
194
|
version: 0.5.2
|
163
195
|
type: :runtime
|
164
|
-
version_requirements: *
|
196
|
+
version_requirements: *id011
|
197
|
+
- !ruby/object:Gem::Dependency
|
198
|
+
name: rack-rewrite
|
199
|
+
prerelease: false
|
200
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
202
|
+
requirements:
|
203
|
+
- - ">="
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
hash: 19
|
206
|
+
segments:
|
207
|
+
- 1
|
208
|
+
- 0
|
209
|
+
- 2
|
210
|
+
version: 1.0.2
|
211
|
+
type: :runtime
|
212
|
+
version_requirements: *id012
|
165
213
|
- !ruby/object:Gem::Dependency
|
166
214
|
name: rack-throttle
|
167
215
|
prerelease: false
|
168
|
-
requirement: &
|
216
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
169
217
|
none: false
|
170
218
|
requirements:
|
171
219
|
- - ">="
|
@@ -177,11 +225,11 @@ dependencies:
|
|
177
225
|
- 0
|
178
226
|
version: 0.3.0
|
179
227
|
type: :runtime
|
180
|
-
version_requirements: *
|
228
|
+
version_requirements: *id013
|
181
229
|
- !ruby/object:Gem::Dependency
|
182
230
|
name: sqlite3-ruby
|
183
231
|
prerelease: false
|
184
|
-
requirement: &
|
232
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
185
233
|
none: false
|
186
234
|
requirements:
|
187
235
|
- - ">="
|
@@ -193,23 +241,70 @@ dependencies:
|
|
193
241
|
- 1
|
194
242
|
version: 1.2.1
|
195
243
|
type: :runtime
|
196
|
-
version_requirements: *
|
244
|
+
version_requirements: *id014
|
197
245
|
- !ruby/object:Gem::Dependency
|
198
246
|
name: tinyatom
|
199
247
|
prerelease: false
|
200
|
-
requirement: &
|
248
|
+
requirement: &id015 !ruby/object:Gem::Requirement
|
201
249
|
none: false
|
202
250
|
requirements:
|
203
251
|
- - ">="
|
204
252
|
- !ruby/object:Gem::Version
|
205
|
-
hash:
|
253
|
+
hash: 23
|
206
254
|
segments:
|
207
255
|
- 0
|
256
|
+
- 2
|
257
|
+
- 0
|
258
|
+
version: 0.2.0
|
259
|
+
type: :runtime
|
260
|
+
version_requirements: *id015
|
261
|
+
- !ruby/object:Gem::Dependency
|
262
|
+
name: twitter
|
263
|
+
prerelease: false
|
264
|
+
requirement: &id016 !ruby/object:Gem::Requirement
|
265
|
+
none: false
|
266
|
+
requirements:
|
267
|
+
- - ">="
|
268
|
+
- !ruby/object:Gem::Version
|
269
|
+
hash: 35
|
270
|
+
segments:
|
271
|
+
- 0
|
272
|
+
- 9
|
273
|
+
- 12
|
274
|
+
version: 0.9.12
|
275
|
+
type: :runtime
|
276
|
+
version_requirements: *id016
|
277
|
+
- !ruby/object:Gem::Dependency
|
278
|
+
name: vimeo
|
279
|
+
prerelease: false
|
280
|
+
requirement: &id017 !ruby/object:Gem::Requirement
|
281
|
+
none: false
|
282
|
+
requirements:
|
283
|
+
- - ">="
|
284
|
+
- !ruby/object:Gem::Version
|
285
|
+
hash: 27
|
286
|
+
segments:
|
208
287
|
- 1
|
288
|
+
- 2
|
289
|
+
- 2
|
290
|
+
version: 1.2.2
|
291
|
+
type: :runtime
|
292
|
+
version_requirements: *id017
|
293
|
+
- !ruby/object:Gem::Dependency
|
294
|
+
name: rspec
|
295
|
+
prerelease: false
|
296
|
+
requirement: &id018 !ruby/object:Gem::Requirement
|
297
|
+
none: false
|
298
|
+
requirements:
|
299
|
+
- - ~>
|
300
|
+
- !ruby/object:Gem::Version
|
301
|
+
hash: 9
|
302
|
+
segments:
|
209
303
|
- 1
|
210
|
-
|
304
|
+
- 3
|
305
|
+
version: "1.3"
|
211
306
|
type: :runtime
|
212
|
-
version_requirements: *
|
307
|
+
version_requirements: *id018
|
213
308
|
description: url sharing site framework with easy adding, title lookup, atom feed, thumbnails and embedding
|
214
309
|
email: matthewm@boedicker.org
|
215
310
|
executables:
|
@@ -236,51 +331,59 @@ files:
|
|
236
331
|
- lib/murlsh/etag_add_encoding.rb
|
237
332
|
- lib/murlsh/failproof.rb
|
238
333
|
- lib/murlsh/far_future_expires.rb
|
239
|
-
- lib/murlsh/flickr_server.rb
|
240
334
|
- lib/murlsh/head_from_get.rb
|
335
|
+
- lib/murlsh/img_store.rb
|
241
336
|
- lib/murlsh/markup.rb
|
242
337
|
- lib/murlsh/must_revalidate.rb
|
243
338
|
- lib/murlsh/openlock.rb
|
244
339
|
- lib/murlsh/plugin.rb
|
245
340
|
- lib/murlsh/sqlite3_adapter.rb
|
246
341
|
- lib/murlsh/time_ago.rb
|
247
|
-
- lib/murlsh/twitter_server.rb
|
248
|
-
- lib/murlsh/unwrap_jsonp.rb
|
249
342
|
- lib/murlsh/uri.rb
|
250
343
|
- lib/murlsh/uri_ask.rb
|
251
344
|
- lib/murlsh/url.rb
|
252
345
|
- lib/murlsh/url_body.rb
|
253
346
|
- lib/murlsh/url_server.rb
|
254
|
-
- lib/murlsh/xhtml_response.rb
|
255
347
|
- lib/murlsh/yaml_ordered_hash.rb
|
256
348
|
- murlsh.gemspec
|
257
349
|
- plugins/add_post_50_update_feed.rb
|
350
|
+
- plugins/add_post_50_update_podcast.rb
|
258
351
|
- plugins/add_post_50_update_rss.rb
|
259
352
|
- plugins/add_post_60_notify_hubs.rb
|
353
|
+
- plugins/add_pre_40_convert_mobile.rb
|
260
354
|
- plugins/add_pre_50_lookup_content_type_title.rb
|
355
|
+
- plugins/add_pre_60_flickr.rb
|
261
356
|
- plugins/add_pre_60_github_title.rb
|
262
357
|
- plugins/add_pre_60_google_code_title.rb
|
263
|
-
- plugins/
|
264
|
-
- plugins/
|
358
|
+
- plugins/add_pre_60_imageshack.rb
|
359
|
+
- plugins/add_pre_60_imgur.rb
|
360
|
+
- plugins/add_pre_60_s3_image.rb
|
361
|
+
- plugins/add_pre_60_twitter.rb
|
362
|
+
- plugins/add_pre_60_vimeo.rb
|
363
|
+
- plugins/add_pre_60_youtube.rb
|
265
364
|
- plugins/html_parse_50_hpricot.rb
|
266
|
-
- plugins/
|
267
|
-
- plugins/
|
365
|
+
- plugins/url_display_add_45_mp3.rb
|
366
|
+
- plugins/url_display_add_50_hostrec.rb
|
367
|
+
- plugins/url_display_add_55_content_type.rb
|
368
|
+
- plugins/url_display_add_60_via.rb
|
369
|
+
- plugins/url_display_add_65_time.rb
|
268
370
|
- public/css/jquery.jgrowl.css
|
269
371
|
- public/css/screen.css
|
372
|
+
- public/img/thumb/README
|
270
373
|
- public/js/comments.json
|
271
|
-
- public/js/jquery-1.4.
|
374
|
+
- public/js/jquery-1.4.3.min.js
|
272
375
|
- public/js/jquery.jgrowl_compressed.js
|
273
376
|
- public/js/js.js
|
377
|
+
- public/js/twitter-text-1.0.3.js
|
274
378
|
- public/swf/player_mp3_mini.swf
|
275
379
|
- spec/auth_spec.rb
|
276
380
|
- spec/dispatch_spec.rb
|
277
381
|
- spec/doc_spec.rb
|
382
|
+
- spec/img_store_spec.rb
|
278
383
|
- spec/markup_spec.rb
|
279
|
-
- spec/unwrap_json_spec.rb
|
280
384
|
- spec/uri_ask_spec.rb
|
281
385
|
- spec/uri_spec.rb
|
282
386
|
- spec/url_spec.rb
|
283
|
-
- spec/xhtml_response_spec.rb
|
284
387
|
- spec/yaml_ordered_hash_spec.rb
|
285
388
|
has_rdoc: true
|
286
389
|
homepage: http://github.com/mmb/murlsh
|
@@ -317,11 +420,10 @@ signing_key:
|
|
317
420
|
specification_version: 3
|
318
421
|
summary: url sharing site framework
|
319
422
|
test_files:
|
320
|
-
- spec/xhtml_response_spec.rb
|
321
423
|
- spec/auth_spec.rb
|
322
424
|
- spec/yaml_ordered_hash_spec.rb
|
323
|
-
- spec/unwrap_json_spec.rb
|
324
425
|
- spec/uri_ask_spec.rb
|
426
|
+
- spec/img_store_spec.rb
|
325
427
|
- spec/dispatch_spec.rb
|
326
428
|
- spec/markup_spec.rb
|
327
429
|
- spec/url_spec.rb
|
data/lib/murlsh/flickr_server.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
%w{
|
2
|
-
digest/sha1
|
3
|
-
open-uri
|
4
|
-
|
5
|
-
rack
|
6
|
-
|
7
|
-
murlsh
|
8
|
-
}.each { |m| require m }
|
9
|
-
|
10
|
-
module Murlsh
|
11
|
-
|
12
|
-
# Proxy for Flickr rest API to support conditional get and caching.
|
13
|
-
#
|
14
|
-
# Passes along query string with api key added, returns result from Flickr
|
15
|
-
# with cache-control, etag and last-modified headers set.
|
16
|
-
class FlickrServer
|
17
|
-
|
18
|
-
include HeadFromGet
|
19
|
-
|
20
|
-
def initialize(config); @config = config; end
|
21
|
-
|
22
|
-
# Proxy a request to the Flickr API.
|
23
|
-
def get(req)
|
24
|
-
resp = Rack::Response.new
|
25
|
-
|
26
|
-
if @config['flickr_api_key']
|
27
|
-
params = req.params.merge('api_key' => @config['flickr_api_key'])
|
28
|
-
|
29
|
-
q = params.map { |k,v| "#{URI.encode(k)}=#{URI.encode(v)}" }.join('&')
|
30
|
-
|
31
|
-
json_wrapped = open("http://api.flickr.com/services/rest/?#{q}") do |f|
|
32
|
-
f.read
|
33
|
-
end
|
34
|
-
|
35
|
-
json_parsed = Murlsh::unwrap_jsonp(json_wrapped)
|
36
|
-
|
37
|
-
resp['Cache-Control'] = 'max-age=86400'
|
38
|
-
resp['Content-Type'] = 'application/json'
|
39
|
-
resp['ETag'] = "\"#{Digest::SHA1.hexdigest(json_wrapped)}\""
|
40
|
-
resp['Last-Modified'] = Time.at(
|
41
|
-
json_parsed['photo']['dates']['lastupdate'].to_i).httpdate
|
42
|
-
|
43
|
-
resp.body = json_wrapped
|
44
|
-
|
45
|
-
resp
|
46
|
-
else
|
47
|
-
Rack::Response.new('flickr_api_key not set in config.yaml', 500,
|
48
|
-
{ 'Content-Type' => 'text/plain' })
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
%w{
|
2
|
-
digest/sha1
|
3
|
-
open-uri
|
4
|
-
|
5
|
-
rack
|
6
|
-
|
7
|
-
murlsh
|
8
|
-
}.each { |m| require m }
|
9
|
-
|
10
|
-
module Murlsh
|
11
|
-
|
12
|
-
# Proxy for Twitter rest API to support conditional get and caching.
|
13
|
-
#
|
14
|
-
# Passes along path and query string, returns result from Twitter with
|
15
|
-
# cache-control, etag and last-modified headers set.
|
16
|
-
class TwitterServer
|
17
|
-
|
18
|
-
include HeadFromGet
|
19
|
-
|
20
|
-
# Proxy a request to the Twitter API.
|
21
|
-
def get(req)
|
22
|
-
resp = Rack::Response.new
|
23
|
-
|
24
|
-
twitter_url = URI.join('http://api.twitter.com',
|
25
|
-
req.fullpath[/twitter\/(.+)/, 1])
|
26
|
-
|
27
|
-
json_wrapped = open(twitter_url) do |f|
|
28
|
-
resp['Content-Type'] = f.content_type
|
29
|
-
f.read
|
30
|
-
end
|
31
|
-
|
32
|
-
json_parsed = Murlsh::unwrap_jsonp(json_wrapped)
|
33
|
-
|
34
|
-
resp['Cache-Control'] = 'max-age=86400'
|
35
|
-
resp['ETag'] = "\"#{Digest::SHA1.hexdigest(json_wrapped)}\""
|
36
|
-
resp['Last-Modified'] = Time.parse(json_parsed['created_at']).httpdate
|
37
|
-
|
38
|
-
resp.body = json_wrapped
|
39
|
-
|
40
|
-
resp
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
data/lib/murlsh/unwrap_jsonp.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
module Murlsh
|
2
|
-
|
3
|
-
# Set the content type correctly based on accept header and user agent.
|
4
|
-
class XhtmlResponse < Rack::Response
|
5
|
-
|
6
|
-
# Set the content type to application/xhtml+xml for anything that
|
7
|
-
# claims to accept it, for anything else or IE use text/html.
|
8
|
-
def set_content_type(http_accept, http_user_agent)
|
9
|
-
self['Content-Type'] = if http_accept and
|
10
|
-
http_accept[/((\*|application)\/\*|application\/xhtml\+xml)/i] and
|
11
|
-
(!http_user_agent or !http_user_agent[/ msie /i])
|
12
|
-
'application/xhtml+xml'
|
13
|
-
else
|
14
|
-
'text/html'
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
module Murlsh
|
2
|
-
|
3
|
-
# skip showing host record if domain is contained in title
|
4
|
-
class Hostrec50Redundant < Plugin
|
5
|
-
|
6
|
-
@hook = 'hostrec'
|
7
|
-
|
8
|
-
def self.run(domain, url, title)
|
9
|
-
domain unless (title and domain and title.downcase.index(domain))
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
end
|
data/plugins/hostrec_60_skip.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
module Murlsh
|
2
|
-
|
3
|
-
# Skip showing host record for some domains.
|
4
|
-
class Hostrec60Skip < Plugin
|
5
|
-
|
6
|
-
@hook = 'hostrec'
|
7
|
-
|
8
|
-
def self.run(domain, url, title)
|
9
|
-
domain unless skips.include?(domain)
|
10
|
-
end
|
11
|
-
|
12
|
-
@skips = %w{
|
13
|
-
wikipedia.org
|
14
|
-
flickr.com
|
15
|
-
github.com
|
16
|
-
twitter.com
|
17
|
-
vimeo.com
|
18
|
-
youtube.com
|
19
|
-
}
|
20
|
-
class << self; attr_reader :skips; end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
data/plugins/time_50_ago.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
%w{
|
2
|
-
murlsh
|
3
|
-
}.each { |m| require m }
|
4
|
-
|
5
|
-
module Murlsh
|
6
|
-
|
7
|
-
# show the time as the fuzzy amount of time that has elapsed since then
|
8
|
-
class Time50Ago < Plugin
|
9
|
-
|
10
|
-
@hook = 'time'
|
11
|
-
|
12
|
-
def self.run(time); time.extend(Murlsh::TimeAgo).ago if time; end
|
13
|
-
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
data/plugins/via_50_domain.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
%w{
|
2
|
-
murlsh
|
3
|
-
}.each { |m| require m }
|
4
|
-
|
5
|
-
module Murlsh
|
6
|
-
|
7
|
-
# Convert a via url to its display text.
|
8
|
-
#
|
9
|
-
# For most urls the domain is displayed, but for some return custom text.
|
10
|
-
class Via50Domain < Plugin
|
11
|
-
|
12
|
-
@hook = 'via'
|
13
|
-
|
14
|
-
def self.run(via)
|
15
|
-
search = via.to_s.gsub(%r{^http://}, '')
|
16
|
-
|
17
|
-
case
|
18
|
-
when m = search.match(%r{^news\.ycombinator\.com}i)
|
19
|
-
'hacker news'
|
20
|
-
when m = search.match(%r{^www\.reddit\.com/r/([a-z\d]+?)/}i)
|
21
|
-
"#{m[1]}.reddit"
|
22
|
-
when m = search.match(%r{^delicious\.com/(\w+)}i)
|
23
|
-
"delicious/#{m[1]}"
|
24
|
-
when m = search.match(%r{^twitter\.com/(\w+)}i)
|
25
|
-
"twitter/#{m[1]}"
|
26
|
-
when m = search.match(%r{^([a-z\d][a-z\d-]{0,61}[a-z\d])\.tumblr\.com/}i)
|
27
|
-
"#{m[1]}.tumblr"
|
28
|
-
else
|
29
|
-
via.domain || via
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|