murlsh 1.3.1 → 1.4.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.
Files changed (40) hide show
  1. data/.htaccess +1 -0
  2. data/README.textile +6 -12
  3. data/Rakefile +19 -17
  4. data/VERSION +1 -1
  5. data/bin/murlsh +2 -35
  6. data/config.ru +1 -1
  7. data/config.yaml +9 -9
  8. data/lib/murlsh/ask.rb +15 -0
  9. data/lib/murlsh/cp_r_safe.rb +33 -0
  10. data/lib/murlsh/doc.rb +1 -16
  11. data/lib/murlsh/install.rb +28 -0
  12. data/lib/murlsh/plugin.rb +0 -2
  13. data/lib/murlsh/search_conditions.rb +12 -2
  14. data/lib/murlsh/search_grammar.rb +225 -0
  15. data/lib/murlsh/search_grammar.treetop +34 -0
  16. data/lib/murlsh/uri_ask.rb +10 -14
  17. data/lib/murlsh/url_body.rb +33 -19
  18. data/lib/murlsh/url_result_set.rb +12 -2
  19. data/lib/murlsh.rb +4 -1
  20. data/murlsh.gemspec +26 -21
  21. data/plugins/add_post_50_update_m3u.rb +35 -0
  22. data/plugins/{add_pre_41_unajax_twitter.rb → add_pre_30_unajax_twitter.rb} +1 -1
  23. data/plugins/add_pre_35_url_clean.rb +21 -0
  24. data/plugins/add_pre_50_media_thumbnail.rb +6 -3
  25. data/plugins/add_pre_65_html_thumb.rb +1 -3
  26. data/plugins/url_display_add_60_via.rb +4 -1
  27. data/public/css/jquery.jgrowl.css +11 -7
  28. data/public/css/screen.css +3 -2
  29. data/public/js/jquery-1.5.min.js +16 -0
  30. data/public/js/jquery.jgrowl_compressed.js +40 -32
  31. data/public/js/js.js +3 -43
  32. data/public/js/{twitter-text-1.0.4.js → twitter-text-1.3.1.js} +25 -22
  33. data/spec/doc_spec.rb +10 -4
  34. metadata +75 -61
  35. data/lib/murlsh/sqlite3_adapter.rb +0 -13
  36. data/plugins/add_pre_60_flickr.rb +0 -27
  37. data/plugins/add_pre_60_vimeo.rb +0 -38
  38. data/plugins/html_parse_50_nokogiri.rb +0 -16
  39. data/public/js/comments.json +0 -1
  40. data/public/js/jquery-1.4.4.min.js +0 -167
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: 25
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 3
9
- - 1
10
- version: 1.3.1
8
+ - 4
9
+ - 0
10
+ version: 1.4.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: 2011-01-15 00:00:00 -05:00
18
+ date: 2011-01-31 00:00:00 -05:00
19
19
  default_executable: murlsh
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -66,26 +66,10 @@ dependencies:
66
66
  version: 2.1.2
67
67
  type: :runtime
68
68
  version_requirements: *id003
69
- - !ruby/object:Gem::Dependency
70
- name: flickraw
71
- prerelease: false
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
69
  - !ruby/object:Gem::Dependency
86
70
  name: htmlentities
87
71
  prerelease: false
88
- requirement: &id005 !ruby/object:Gem::Requirement
72
+ requirement: &id004 !ruby/object:Gem::Requirement
89
73
  none: false
90
74
  requirements:
91
75
  - - ">="
@@ -97,11 +81,11 @@ dependencies:
97
81
  - 0
98
82
  version: 4.2.0
99
83
  type: :runtime
100
- version_requirements: *id005
84
+ version_requirements: *id004
101
85
  - !ruby/object:Gem::Dependency
102
86
  name: json
103
87
  prerelease: false
104
- requirement: &id006 !ruby/object:Gem::Requirement
88
+ requirement: &id005 !ruby/object:Gem::Requirement
105
89
  none: false
106
90
  requirements:
107
91
  - - ">="
@@ -113,11 +97,11 @@ dependencies:
113
97
  - 3
114
98
  version: 1.2.3
115
99
  type: :runtime
116
- version_requirements: *id006
100
+ version_requirements: *id005
117
101
  - !ruby/object:Gem::Dependency
118
102
  name: nokogiri
119
103
  prerelease: false
120
- requirement: &id007 !ruby/object:Gem::Requirement
104
+ requirement: &id006 !ruby/object:Gem::Requirement
121
105
  none: false
122
106
  requirements:
123
107
  - - ~>
@@ -128,11 +112,11 @@ dependencies:
128
112
  - 0
129
113
  version: "1.0"
130
114
  type: :runtime
131
- version_requirements: *id007
115
+ version_requirements: *id006
132
116
  - !ruby/object:Gem::Dependency
133
117
  name: plumnailer
134
118
  prerelease: false
135
- requirement: &id008 !ruby/object:Gem::Requirement
119
+ requirement: &id007 !ruby/object:Gem::Requirement
136
120
  none: false
137
121
  requirements:
138
122
  - - ">="
@@ -144,6 +128,21 @@ dependencies:
144
128
  - 0
145
129
  version: 0.1.0
146
130
  type: :runtime
131
+ version_requirements: *id007
132
+ - !ruby/object:Gem::Dependency
133
+ name: postrank-uri
134
+ prerelease: false
135
+ requirement: &id008 !ruby/object:Gem::Requirement
136
+ none: false
137
+ requirements:
138
+ - - ~>
139
+ - !ruby/object:Gem::Version
140
+ hash: 15
141
+ segments:
142
+ - 1
143
+ - 0
144
+ version: "1.0"
145
+ type: :runtime
147
146
  version_requirements: *id008
148
147
  - !ruby/object:Gem::Dependency
149
148
  name: public_suffix_service
@@ -257,19 +256,18 @@ dependencies:
257
256
  type: :runtime
258
257
  version_requirements: *id015
259
258
  - !ruby/object:Gem::Dependency
260
- name: sqlite3-ruby
259
+ name: sqlite3
261
260
  prerelease: false
262
261
  requirement: &id016 !ruby/object:Gem::Requirement
263
262
  none: false
264
263
  requirements:
265
- - - ">="
264
+ - - ~>
266
265
  - !ruby/object:Gem::Version
267
- hash: 29
266
+ hash: 9
268
267
  segments:
269
268
  - 1
270
- - 2
271
- - 1
272
- version: 1.2.1
269
+ - 3
270
+ version: "1.3"
273
271
  type: :runtime
274
272
  version_requirements: *id016
275
273
  - !ruby/object:Gem::Dependency
@@ -289,9 +287,24 @@ dependencies:
289
287
  type: :runtime
290
288
  version_requirements: *id017
291
289
  - !ruby/object:Gem::Dependency
292
- name: twitter
290
+ name: treetop
293
291
  prerelease: false
294
292
  requirement: &id018 !ruby/object:Gem::Requirement
293
+ none: false
294
+ requirements:
295
+ - - ~>
296
+ - !ruby/object:Gem::Version
297
+ hash: 7
298
+ segments:
299
+ - 1
300
+ - 4
301
+ version: "1.4"
302
+ type: :runtime
303
+ version_requirements: *id018
304
+ - !ruby/object:Gem::Dependency
305
+ name: twitter
306
+ prerelease: false
307
+ requirement: &id019 !ruby/object:Gem::Requirement
295
308
  none: false
296
309
  requirements:
297
310
  - - ">="
@@ -303,27 +316,26 @@ dependencies:
303
316
  - 12
304
317
  version: 0.9.12
305
318
  type: :runtime
306
- version_requirements: *id018
319
+ version_requirements: *id019
307
320
  - !ruby/object:Gem::Dependency
308
- name: vimeo
321
+ name: fakeweb
309
322
  prerelease: false
310
- requirement: &id019 !ruby/object:Gem::Requirement
323
+ requirement: &id020 !ruby/object:Gem::Requirement
311
324
  none: false
312
325
  requirements:
313
- - - ">="
326
+ - - ~>
314
327
  - !ruby/object:Gem::Version
315
- hash: 27
328
+ hash: 9
316
329
  segments:
317
330
  - 1
318
- - 2
319
- - 2
320
- version: 1.2.2
321
- type: :runtime
322
- version_requirements: *id019
331
+ - 3
332
+ version: "1.3"
333
+ type: :development
334
+ version_requirements: *id020
323
335
  - !ruby/object:Gem::Dependency
324
336
  name: flog
325
337
  prerelease: false
326
- requirement: &id020 !ruby/object:Gem::Requirement
338
+ requirement: &id021 !ruby/object:Gem::Requirement
327
339
  none: false
328
340
  requirements:
329
341
  - - ">="
@@ -335,11 +347,11 @@ dependencies:
335
347
  - 0
336
348
  version: 2.5.0
337
349
  type: :development
338
- version_requirements: *id020
350
+ version_requirements: *id021
339
351
  - !ruby/object:Gem::Dependency
340
352
  name: rack-test
341
353
  prerelease: false
342
- requirement: &id021 !ruby/object:Gem::Requirement
354
+ requirement: &id022 !ruby/object:Gem::Requirement
343
355
  none: false
344
356
  requirements:
345
357
  - - ~>
@@ -350,11 +362,11 @@ dependencies:
350
362
  - 5
351
363
  version: "0.5"
352
364
  type: :development
353
- version_requirements: *id021
365
+ version_requirements: *id022
354
366
  - !ruby/object:Gem::Dependency
355
367
  name: rspec
356
368
  prerelease: false
357
- requirement: &id022 !ruby/object:Gem::Requirement
369
+ requirement: &id023 !ruby/object:Gem::Requirement
358
370
  none: false
359
371
  requirements:
360
372
  - - ~>
@@ -365,8 +377,8 @@ dependencies:
365
377
  - 0
366
378
  version: "2.0"
367
379
  type: :development
368
- version_requirements: *id022
369
- description: url sharing site framework with easy adding, title lookup, atom feed, thumbnails and embedding
380
+ version_requirements: *id023
381
+ description: Host your bookmarks or maintain a link blog
370
382
  email: matthewm@boedicker.org
371
383
  executables:
372
384
  - murlsh
@@ -384,9 +396,11 @@ files:
384
396
  - config.ru
385
397
  - config.yaml
386
398
  - lib/murlsh.rb
399
+ - lib/murlsh/ask.rb
387
400
  - lib/murlsh/auth.rb
388
401
  - lib/murlsh/build_md5.rb
389
402
  - lib/murlsh/build_query.rb
403
+ - lib/murlsh/cp_r_safe.rb
390
404
  - lib/murlsh/delicious_parse.rb
391
405
  - lib/murlsh/dispatch.rb
392
406
  - lib/murlsh/doc.rb
@@ -396,6 +410,7 @@ files:
396
410
  - lib/murlsh/head_from_get.rb
397
411
  - lib/murlsh/image_list.rb
398
412
  - lib/murlsh/img_store.rb
413
+ - lib/murlsh/install.rb
399
414
  - lib/murlsh/json_body.rb
400
415
  - lib/murlsh/json_server.rb
401
416
  - lib/murlsh/jsonp_body.rb
@@ -404,7 +419,8 @@ files:
404
419
  - lib/murlsh/openlock.rb
405
420
  - lib/murlsh/plugin.rb
406
421
  - lib/murlsh/search_conditions.rb
407
- - lib/murlsh/sqlite3_adapter.rb
422
+ - lib/murlsh/search_grammar.rb
423
+ - lib/murlsh/search_grammar.treetop
408
424
  - lib/murlsh/time_ago.rb
409
425
  - lib/murlsh/uri_ask.rb
410
426
  - lib/murlsh/uri_domain.rb
@@ -416,26 +432,25 @@ files:
416
432
  - lib/murlsh/yaml_ordered_hash.rb
417
433
  - murlsh.gemspec
418
434
  - plugins/add_post_50_update_feed.rb
435
+ - plugins/add_post_50_update_m3u.rb
419
436
  - plugins/add_post_50_update_podcast.rb
420
437
  - plugins/add_post_50_update_rss.rb
421
438
  - plugins/add_post_60_notify_hubs.rb
439
+ - plugins/add_pre_30_unajax_twitter.rb
440
+ - plugins/add_pre_35_url_clean.rb
422
441
  - plugins/add_pre_40_convert_mobile.rb
423
- - plugins/add_pre_41_unajax_twitter.rb
424
442
  - plugins/add_pre_45_supplied_thumbnail.rb
425
443
  - plugins/add_pre_50_lookup_content_type_title.rb
426
444
  - plugins/add_pre_50_media_thumbnail.rb
427
445
  - plugins/add_pre_50_open_graph_image.rb
428
- - plugins/add_pre_60_flickr.rb
429
446
  - plugins/add_pre_60_github_title.rb
430
447
  - plugins/add_pre_60_google_code_title.rb
431
448
  - plugins/add_pre_60_imgur.rb
432
449
  - plugins/add_pre_60_s3_image.rb
433
450
  - plugins/add_pre_60_twitter.rb
434
- - plugins/add_pre_60_vimeo.rb
435
451
  - plugins/add_pre_65_html_thumb.rb
436
452
  - plugins/add_pre_65_img_thumb.rb
437
453
  - plugins/avatar_50_gravatar.rb
438
- - plugins/html_parse_50_nokogiri.rb
439
454
  - plugins/url_display_add_45_audio.rb
440
455
  - plugins/url_display_add_50_hostrec.rb
441
456
  - plugins/url_display_add_55_content_type.rb
@@ -444,11 +459,10 @@ files:
444
459
  - public/css/jquery.jgrowl.css
445
460
  - public/css/screen.css
446
461
  - public/img/thumb/.gitignore
447
- - public/js/comments.json
448
- - public/js/jquery-1.4.4.min.js
462
+ - public/js/jquery-1.5.min.js
449
463
  - public/js/jquery.jgrowl_compressed.js
450
464
  - public/js/js.js
451
- - public/js/twitter-text-1.0.4.js
465
+ - public/js/twitter-text-1.3.1.js
452
466
  - spec/auth_spec.rb
453
467
  - spec/dispatch_spec.rb
454
468
  - spec/doc_spec.rb
@@ -491,7 +505,7 @@ rubyforge_project:
491
505
  rubygems_version: 1.4.2
492
506
  signing_key:
493
507
  specification_version: 3
494
- summary: url sharing site framework
508
+ summary: Host your bookmarks or maintain a link blog
495
509
  test_files:
496
510
  - spec/auth_spec.rb
497
511
  - spec/dispatch_spec.rb
@@ -1,13 +0,0 @@
1
- require 'active_record/connection_adapters/sqlite3_adapter'
2
-
3
- class ActiveRecord::ConnectionAdapters::SQLite3Adapter
4
-
5
- # Add MURLSHMATCH function for regex matching.
6
- def initialize(connection, logger, config)
7
- super
8
- @connection.create_function('MURLSHMATCH', 2) do |func,search_in,search_for|
9
- func.result = search_in.to_s.match(/#{search_for}/i) ? 1 : nil
10
- end
11
- end
12
-
13
- end
@@ -1,27 +0,0 @@
1
- require 'flickraw'
2
-
3
- require 'murlsh'
4
-
5
- module Murlsh
6
-
7
- # Set the title of Flickr photos.
8
- class AddPre60Flickr < Plugin
9
-
10
- @hook = 'add_pre'
11
-
12
- FlickrRe = %r{^http://(?:www\.)?flickr\.com/photos/[@\w\-]+?/([\d]+)}i
13
-
14
- def self.run(url, config)
15
- unless url.user_supplied_title? or config['flickr_api_key'].to_s.empty?
16
- if photo_id = url.url[FlickrRe, 1]
17
- FlickRaw.api_key = config['flickr_api_key']
18
- info = flickr.photos.getInfo(:photo_id => photo_id)
19
-
20
- url.title = "#{info.title} by #{info.owner.username}"
21
- end
22
- end
23
- end
24
-
25
- end
26
-
27
- end
@@ -1,38 +0,0 @@
1
- require 'cgi'
2
-
3
- require 'vimeo'
4
-
5
- require 'murlsh'
6
-
7
- module Murlsh
8
-
9
- # Set title and thumbnail url for Vimeo urls.
10
- class AddPre60Vimeo < Plugin
11
-
12
- @hook = 'add_pre'
13
-
14
- VimeoRe = %r{^http://(?:www\.)?vimeo\.com/(\d+)$}i
15
- StorageDir = File.join(File.dirname(__FILE__), '..', 'public', 'img',
16
- 'thumb')
17
-
18
- def self.run(url, config)
19
- if id = url.url[VimeoRe, 1]
20
- info = Vimeo::Simple::Video.info(id)[0]
21
-
22
- unless url.user_supplied_title?
23
- url.title = "#{info['title']} by #{info['user_name']}"
24
- end
25
-
26
- thumb_storage = Murlsh::ImgStore.new(StorageDir,
27
- :user_agent => config['user_agent'])
28
- stored_filename = thumb_storage.store_url(info['thumbnail_small']) do |i|
29
- max_side = config.fetch('thumbnail_max_side', 90)
30
- i.extend(Murlsh::ImageList).resize_down!(max_side)
31
- end
32
- url.thumbnail_url = "img/thumb/#{CGI.escape(stored_filename)}"
33
- end
34
- end
35
-
36
- end
37
-
38
- end
@@ -1,16 +0,0 @@
1
- require 'nokogiri'
2
-
3
- require 'murlsh'
4
-
5
- module Murlsh
6
-
7
- # Parse HTML with Nokogiri and return a Nokogiri doc.
8
- class HtmlParse50Nokogiri < Plugin
9
-
10
- @hook = 'html_parse'
11
-
12
- def self.run(x); Nokogiri(x); end
13
-
14
- end
15
-
16
- end
@@ -1 +0,0 @@
1
- {"http://www.youtube.com/watch?v=KrfpnbGXL70":[{"createdTime":1277520298,"updatedTime":1277520298,"authorAvatar":"http://www.gravatar.com/avatar/355af1bc931baca530e66571923286b4?s=16","authorName":"mmb","authorUrl":"http://matthewm.boedicker.org/","comment":"Through SOAP!"},{"createdTime":1277520298,"updatedTime":1277520298,"authorAvatar":"http://www.gravatar.com/avatar/355af1bc931baca530e66571923286b4?s=16","authorName":"mmb","authorUrl":"http://matthewm.boedicker.org/","comment":"dead, can be seen at http://jz10.java.no/java-4-ever-trailer.html"}]}