automatic 12.9.1 → 12.10.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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 12.9.1
1
+ 12.10.0
data/automatic.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "automatic"
8
- s.version = "12.9.1"
8
+ s.version = "12.10.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["id774"]
12
- s.date = "2012-09-18"
12
+ s.date = "2012-10-16"
13
13
  s.description = "Ruby General Automation Framework"
14
14
  s.email = "idnanashi@gmail.com"
15
15
  s.executables = ["automatic", "automatic-config"]
@@ -59,6 +59,7 @@ Gem::Specification.new do |s|
59
59
  "plugins/store/target_link.rb",
60
60
  "plugins/subscription/feed.rb",
61
61
  "plugins/subscription/link.rb",
62
+ "plugins/subscription/tumblr.rb",
62
63
  "plugins/subscription/twitter.rb",
63
64
  "script/bootstrap",
64
65
  "script/build",
@@ -84,13 +85,13 @@ Gem::Specification.new do |s|
84
85
  "spec/plugins/store/target_link_spec.rb",
85
86
  "spec/plugins/subscription/feed_spec.rb",
86
87
  "spec/plugins/subscription/link_spec.rb",
88
+ "spec/plugins/subscription/tumblr_spec.rb",
87
89
  "spec/plugins/subscription/twitter_spec.rb",
88
90
  "spec/spec_helper.rb",
89
91
  "spec/user_dir/plugins/store/mock.rb",
90
92
  "test/fixtures/sampleOPML.xml",
91
93
  "test/integration/test_activerecord.yml",
92
94
  "test/integration/test_fulltext.yml",
93
- "test/integration/test_get_image.yml",
94
95
  "test/integration/test_googlealert.yml",
95
96
  "test/integration/test_hatenabookmark.yml",
96
97
  "test/integration/test_ignore.yml",
data/doc/AUTHORS CHANGED
@@ -4,4 +4,3 @@ daic-h
4
4
  ainame
5
5
  banyan
6
6
  hsbt
7
- aerith
data/doc/ChangeLog CHANGED
@@ -1,3 +1,10 @@
1
+ === 12.10.0 / 2012-10-16
2
+
3
+ * Added new plug-in.
4
+
5
+ * Subscription::Tumblr
6
+
7
+
1
8
  === 12.9.1 / 2012-09-18
2
9
 
3
10
  * Bug fix
data/doc/PLUGINS CHANGED
@@ -50,6 +50,24 @@ SubscriptionTwitter
50
50
  - URL ...
51
51
 
52
52
 
53
+ SubscriptionTumblr
54
+ ------------------
55
+ [Path]
56
+ /plugins/subscription/tumblr.rb
57
+
58
+ [Abstract]
59
+ Subscribe tumblr and extract the links.
60
+ If pages specified, including past pages.
61
+
62
+ [Syntax]
63
+ - module: SubscriptionTumblr
64
+ config:
65
+ urls:
66
+ - URL
67
+ - URL ...
68
+ pages: PAGES
69
+
70
+
53
71
  FilterReverse
54
72
  -------------
55
73
  [Path]
@@ -68,7 +86,7 @@ FilterIgnore
68
86
  /plugins/filter/ignore.rb
69
87
 
70
88
  [Abstract]
71
- To exclude the NG word.
89
+ Exclude the NG word.
72
90
 
73
91
  [Syntax]
74
92
  - module: FilterIgnore
@@ -78,6 +96,19 @@ FilterIgnore
78
96
  - KEYWORD ...
79
97
 
80
98
 
99
+ FilterImage
100
+ -----------
101
+ [Path]
102
+ /plugins/filter/image.rb
103
+
104
+ [Abstract]
105
+ Extract images from the link.
106
+ If not image, the permalink will be nil.
107
+
108
+ [Syntax]
109
+ - module: FilterImage
110
+
111
+
81
112
  FilterImageSource
82
113
  -----------------
83
114
  [Path]
@@ -111,7 +142,7 @@ FilterTumblrResize
111
142
  /plugins/filter/tumblr_resize.rb
112
143
 
113
144
  [Abstract]
114
- To rewrite the permalink to the maximum size of
145
+ Rewrite the permalink to the maximum size of
115
146
  the Tumblr (High Res).
116
147
 
117
148
  [Assumption]
@@ -187,10 +218,10 @@ PublishHatenaBookmark
187
218
  /plugins/publish/hatenabookmark.rb
188
219
 
189
220
  [Abstract]
190
- To Hatena Bookmark (Social Bookmark).
221
+ Bookmarking to Hatena Bookmark (Social Bookmark).
191
222
 
192
223
  [Description]
193
- To generate the XML for submission to
224
+ Generate the XML for submission to
194
225
  Hatena Bookmark API.
195
226
 
196
227
  [Syntax]
@@ -207,7 +238,7 @@ PublishGoogleCalendar
207
238
  /plugins/publish/google_calendar.rb
208
239
 
209
240
  [Abstract]
210
- To register an appointment to Google Calendar.
241
+ Register an appointment to Google Calendar.
211
242
 
212
243
  [Description]
213
244
  Register item.title to Google Calendar.
@@ -226,7 +257,7 @@ NotifyIkachan
226
257
  /plugins/notify/ikachan.rb
227
258
 
228
259
  [Abstract]
229
- To send a message to ikachan.
260
+ Send a message to ikachan.
230
261
 
231
262
  [Description]
232
263
  POST to ikachan via HTTP.
@@ -251,7 +282,7 @@ CustomFeedSVNLog
251
282
  Get new revision info from SVN.
252
283
 
253
284
  [Description]
254
- To get the number that is specified by fetch_items.
285
+ Get the number that is specified by fetch_items.
255
286
 
256
287
  [Syntax]
257
288
  - module: CustomFeedSVNLog
data/doc/PLUGINS.ja CHANGED
@@ -50,6 +50,24 @@ SubscriptionTwitter
50
50
  - URL ...
51
51
 
52
52
 
53
+ SubscriptionTumblr
54
+ ------------------
55
+ [パス]
56
+ /plugins/subscription/tumblr.rb
57
+
58
+ [概要]
59
+ Tumblr を購読し、リンクを抽出する
60
+ pages が指定された場合、過去のページも遡って購読する
61
+
62
+ [レシピ記法]
63
+ - module: SubscriptionTumblr
64
+ config:
65
+ urls:
66
+ - URL
67
+ - URL ...
68
+ pages: PAGES
69
+
70
+
53
71
  FilterReverse
54
72
  -------------
55
73
  [パス]
@@ -78,6 +96,19 @@ FilterIgnore
78
96
  - 無視キーワード ...
79
97
 
80
98
 
99
+ FilterImage
100
+ -----------
101
+ [パス]
102
+ /plugins/filter/image.rb
103
+
104
+ [概要]
105
+ パーマリンクから画像のみを抽出する
106
+ 画像ではないパーマリンクは nil にする
107
+
108
+ [レシピ記法]
109
+ - module: FilterImage
110
+
111
+
81
112
  FilterImageSource
82
113
  -----------------
83
114
  [パス]
data/doc/README CHANGED
@@ -351,13 +351,13 @@ pipeline backs again as the return value.
351
351
 
352
352
  Code is as follows.
353
353
 
354
- pipeline = []
355
- recipe.each_plugin { |plugin|
356
- mod = plugin.module
357
- load_plugin(mod)
358
- klass = Automatic::Plugin.const_get(mod)
359
- pipeline = klass.new(plugin.config, pipeline).run
360
- }
354
+ pipeline = []
355
+ recipe.each_plugin {|plugin|
356
+ mod = plugin.module
357
+ load_plugin(mod)
358
+ klass = Automatic::Plugin.const_get(mod)
359
+ pipeline = klass.new(plugin.config, pipeline).run
360
+ }
361
361
 
362
362
  In this iteration, sequential processing can be realized.
363
363
 
data/doc/README.ja CHANGED
@@ -355,13 +355,13 @@ Automatic::Pipeline とは
355
355
 
356
356
  コードは以下の通りである。
357
357
 
358
- pipeline = []
359
- recipe.each_plugin { |plugin|
360
- mod = plugin.module
361
- load_plugin(mod)
362
- klass = Automatic::Plugin.const_get(mod)
363
- pipeline = klass.new(plugin.config, pipeline).run
364
- }
358
+ pipeline = []
359
+ recipe.each_plugin {|plugin|
360
+ mod = plugin.module
361
+ load_plugin(mod)
362
+ klass = Automatic::Plugin.const_get(mod)
363
+ pipeline = klass.new(plugin.config, pipeline).run
364
+ }
365
365
 
366
366
  プラグイン間での連続した pipeline の受け渡しにより
367
367
  処理要素を直列に連結し、あるプラグインの出力が次の
data/lib/automatic.rb CHANGED
@@ -2,7 +2,7 @@
2
2
  # Name:: Automatic::Ruby
3
3
  # Author:: 774 <http://id774.net>
4
4
  # Created:: Feb 18, 2012
5
- # Updated:: Sep 18, 2012
5
+ # Updated:: Oct 16, 2012
6
6
  # Copyright:: 774 Copyright (c) 2012
7
7
  # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
8
 
@@ -13,7 +13,7 @@ module Automatic
13
13
  require 'automatic/log'
14
14
  require 'automatic/feed_parser'
15
15
 
16
- VERSION = "12.9.1"
16
+ VERSION = "12.10.0"
17
17
  USER_DIR = "/.automatic"
18
18
 
19
19
  class << self
@@ -15,7 +15,7 @@ module Automatic
15
15
  begin
16
16
  unless url.nil?
17
17
  feed = URI.parse(url).normalize
18
- open(feed) { |http|
18
+ open(feed) {|http|
19
19
  response = http.read
20
20
  RSS::Parser.parse(response, false)
21
21
  }
@@ -16,7 +16,7 @@ module Automatic
16
16
  module Pipeline
17
17
  def self.load_plugin(module_name)
18
18
  Dir[Automatic.user_plugins_dir + "/*",
19
- Automatic.plugins_dir + "/*"].each{ |dir|
19
+ Automatic.plugins_dir + "/*"].each {|dir|
20
20
  subdir = File.basename dir
21
21
  if /#{subdir}_(.*)$/ =~ module_name.underscore
22
22
  path = dir + "/#{$1}.rb"
@@ -30,7 +30,7 @@ module Automatic
30
30
  def self.run(recipe)
31
31
  raise NoRecipeError if recipe.nil?
32
32
  pipeline = []
33
- recipe.each_plugin { |plugin|
33
+ recipe.each_plugin {|plugin|
34
34
  mod = plugin.module
35
35
  load_plugin(mod)
36
36
  klass = Automatic::Plugin.const_get(mod)
@@ -39,4 +39,3 @@ module Automatic
39
39
  end
40
40
  end
41
41
  end
42
-
@@ -26,7 +26,7 @@ module Automatic
26
26
  end
27
27
 
28
28
  def each_plugin
29
- @procedure.plugins.each { |plugin|
29
+ @procedure.plugins.each {|plugin|
30
30
  yield plugin
31
31
  }
32
32
  end
@@ -2,7 +2,7 @@
2
2
  # Name:: Automatic::Plugin::Filter::ImageSource
3
3
  # Author:: 774 <http://id774.net>
4
4
  # Created:: Feb 28, 2012
5
- # Updated:: Jun 13, 2012
5
+ # Updated:: Oct 16, 2012
6
6
  # Copyright:: 774 Copyright (c) 2012
7
7
  # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
8
 
@@ -16,12 +16,12 @@ module Automatic::Plugin
16
16
  @pipeline = pipeline
17
17
  end
18
18
 
19
- def parse_array(string)
19
+ def rewrite_link(string)
20
20
  array = Array.new
21
21
  string.scan(/<img src="(.*?)"/) { |matched|
22
22
  array = array | matched
23
23
  }
24
- return array
24
+ array
25
25
  end
26
26
 
27
27
  def run
@@ -30,7 +30,7 @@ module Automatic::Plugin
30
30
  img_url = ""
31
31
  unless feeds.nil?
32
32
  feeds.items.each {|feed|
33
- arr = parse_array(feed.description)
33
+ arr = rewrite_link(feed.description)
34
34
  if arr.length > 0
35
35
  feed.link = arr[0]
36
36
  else
@@ -2,7 +2,7 @@
2
2
  # Name:: Automatic::Plugin::Subscription::Link
3
3
  # Author:: 774 <http://id774.net>
4
4
  # Created:: Sep 18, 2012
5
- # Updated:: Sep 18, 2012
5
+ # Updated:: Oct 16, 2012
6
6
  # Copyright:: 774 Copyright (c) 2012
7
7
  # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
8
 
@@ -17,39 +17,43 @@ module Automatic::Plugin
17
17
  @pipeline = pipeline
18
18
  end
19
19
 
20
+ def create_rss(url)
21
+ Automatic::Log.puts("info", "Parsing: #{url}")
22
+ html = open(url).read
23
+ unless html.nil?
24
+ rss = RSS::Maker.make("2.0") {|maker|
25
+ xss = maker.xml_stylesheets.new_xml_stylesheet
26
+ xss.href = "http://www.rssboard.org/rss-specification"
27
+ maker.channel.about = "http://feeds.rssboard.org/rssboard"
28
+ maker.channel.title = "Automatic Ruby"
29
+ maker.channel.description = "Automatic Ruby"
30
+ maker.channel.link = "http://www.rssboard.org/rss-specification"
31
+ maker.items.do_sort = true
32
+ doc = Nokogiri::HTML(html)
33
+ (doc/:a).each {|link|
34
+ unless link[:href].nil?
35
+ item = maker.items.new_item
36
+ item.title = "Automatic Ruby"
37
+ item.link = link[:href]
38
+ item.date = Time.now
39
+ item.description = "Automatic::Plugin::Subscription::Link"
40
+ end
41
+ }
42
+ }
43
+ @return_feeds << rss
44
+ end
45
+ end
46
+
20
47
  def run
21
- @return_feed = []
48
+ @return_feeds = []
22
49
  @config['urls'].each {|url|
23
50
  begin
24
- Automatic::Log.puts("info", "Parsing: #{url}")
25
- html = open(url).read
26
- unless html.nil?
27
- rss = RSS::Maker.make("2.0") {|maker|
28
- xss = maker.xml_stylesheets.new_xml_stylesheet
29
- xss.href = "http://www.rssboard.org/rss-specification"
30
- maker.channel.about = "http://feeds.rssboard.org/rssboard"
31
- maker.channel.title = "Automatic Ruby"
32
- maker.channel.description = "Automatic Ruby"
33
- maker.channel.link = "http://www.rssboard.org/rss-specification"
34
- maker.items.do_sort = true
35
- doc = Nokogiri::HTML(html)
36
- (doc/:a).each {|link|
37
- unless link[:href].nil?
38
- item = maker.items.new_item
39
- item.title = "Automatic Ruby"
40
- item.link = link[:href]
41
- item.date = Time.now
42
- item.description = "Automatic::Plugin::Subscription::Link"
43
- end
44
- }
45
- }
46
- @return_feed << rss
47
- end
51
+ create_rss(url)
48
52
  rescue
49
53
  Automatic::Log.puts("error", "Fault in parsing: #{url}")
50
54
  end
51
55
  }
52
- @return_feed
56
+ @return_feeds
53
57
  end
54
58
  end
55
59
  end
@@ -0,0 +1,67 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Name:: Automatic::Plugin::Subscription::Tumblr
3
+ # Author:: 774 <http://id774.net>
4
+ # Created:: Oct 16, 2012
5
+ # Updated:: Oct 16, 2012
6
+ # Copyright:: 774 Copyright (c) 2012
7
+ # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
+
9
+ module Automatic::Plugin
10
+ class SubscriptionTumblr
11
+ require 'open-uri'
12
+ require 'nokogiri'
13
+ require 'rss'
14
+
15
+ def initialize(config, pipeline=[])
16
+ @config = config
17
+ @pipeline = pipeline
18
+ end
19
+
20
+ def create_rss(url)
21
+ Automatic::Log.puts("info", "Parsing: #{url}")
22
+ html = open(url).read
23
+ unless html.nil?
24
+ rss = RSS::Maker.make("2.0") {|maker|
25
+ xss = maker.xml_stylesheets.new_xml_stylesheet
26
+ xss.href = "http://www.rssboard.org/rss-specification"
27
+ maker.channel.about = "http://feeds.rssboard.org/rssboard"
28
+ maker.channel.title = "Automatic Ruby"
29
+ maker.channel.description = "Automatic Ruby"
30
+ maker.channel.link = "http://www.rssboard.org/rss-specification"
31
+ maker.items.do_sort = true
32
+ doc = Nokogiri::HTML(html)
33
+ (doc/:a).each {|link|
34
+ unless link[:href].nil?
35
+ item = maker.items.new_item
36
+ item.title = "Automatic Ruby"
37
+ item.link = link[:href]
38
+ item.date = Time.now
39
+ item.description = "Automatic::Plugin::Subscription::Link"
40
+ end
41
+ }
42
+ }
43
+ @return_feeds << rss
44
+ end
45
+ end
46
+
47
+ def run
48
+ @return_feeds = []
49
+ @config['urls'].each {|url|
50
+ begin
51
+ create_rss(url)
52
+ unless @config['pages'].nil?
53
+ @config['pages'].times {|i|
54
+ if i > 0
55
+ old_url = url + "/page/" + (i+1).to_s
56
+ create_rss(old_url)
57
+ end
58
+ }
59
+ end
60
+ rescue
61
+ Automatic::Log.puts("error", "Fault in parsing: #{url}")
62
+ end
63
+ }
64
+ @return_feeds
65
+ end
66
+ end
67
+ end
@@ -2,7 +2,7 @@
2
2
  # Name:: Automatic::Plugin::Subscription::Twitter
3
3
  # Author:: 774 <http://id774.net>
4
4
  # Created:: Sep 9, 2012
5
- # Updated:: Sep 9, 2012
5
+ # Updated:: Oct 16, 2012
6
6
  # Copyright:: 774 Copyright (c) 2012
7
7
  # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
8
 
@@ -17,41 +17,45 @@ module Automatic::Plugin
17
17
  @pipeline = pipeline
18
18
  end
19
19
 
20
+ def create_rss(url)
21
+ Automatic::Log.puts("info", "Parsing: #{url}")
22
+ html = open(url).read
23
+ unless html.nil?
24
+ rss = RSS::Maker.make("2.0") {|maker|
25
+ xss = maker.xml_stylesheets.new_xml_stylesheet
26
+ xss.href = "http://twitter.com"
27
+ maker.channel.about = "http://twitter.com/index.rdf"
28
+ maker.channel.title = "Twitter"
29
+ maker.channel.description = "Twitter"
30
+ maker.channel.link = "http://twitter.com/"
31
+ maker.items.do_sort = true
32
+ doc = Nokogiri::HTML(html)
33
+ doc.xpath("/html/body/div").search('[@class="content"]').each {|content|
34
+ item = maker.items.new_item
35
+ item.title = content.search('[@class="username js-action-profile-name"]').text.to_s
36
+ content.search('[@class="tweet-timestamp js-permalink js-nav"]').each {|node|
37
+ item.link = "http://twitter.com" + node['href'].to_s
38
+ }
39
+ content.search('[@class="_timestamp js-short-timestamp js-relative-timestamp"]').each {|node|
40
+ item.date = Time.at(node['data-time'].to_i)
41
+ }
42
+ item.description = content.search('[@class="js-tweet-text"]').text.to_s
43
+ }
44
+ }
45
+ @return_feeds << rss
46
+ end
47
+ end
48
+
20
49
  def run
21
- @return_feed = []
50
+ @return_feeds = []
22
51
  @config['urls'].each {|url|
23
52
  begin
24
- Automatic::Log.puts("info", "Parsing: #{url}")
25
- html = open(url).read
26
- unless html.nil?
27
- rss = RSS::Maker.make("2.0") {|maker|
28
- xss = maker.xml_stylesheets.new_xml_stylesheet
29
- xss.href = "http://twitter.com"
30
- maker.channel.about = "http://twitter.com/index.rdf"
31
- maker.channel.title = "Twitter"
32
- maker.channel.description = "Twitter"
33
- maker.channel.link = "http://twitter.com/"
34
- maker.items.do_sort = true
35
- doc = Nokogiri::HTML(html)
36
- doc.xpath("/html/body/div").search('[@class="content"]').each {|content|
37
- item = maker.items.new_item
38
- item.title = content.search('[@class="username js-action-profile-name"]').text.to_s
39
- content.search('[@class="tweet-timestamp js-permalink js-nav"]').each {|node|
40
- item.link = "http://twitter.com" + node['href'].to_s
41
- }
42
- content.search('[@class="_timestamp js-short-timestamp js-relative-timestamp"]').each {|node|
43
- item.date = Time.at(node['data-time'].to_i)
44
- }
45
- item.description = content.search('[@class="js-tweet-text"]').text.to_s
46
- }
47
- }
48
- @return_feed << rss
49
- end
53
+ create_rss(url)
50
54
  rescue
51
55
  Automatic::Log.puts("error", "Fault in parsing: #{url}")
52
56
  end
53
57
  }
54
- @return_feed
58
+ @return_feeds
55
59
  end
56
60
  end
57
61
  end
@@ -3,7 +3,7 @@
3
3
  # Author:: kzgs
4
4
  # 774 <http://id774.net>
5
5
  # Created:: Mar 9, 2012
6
- # Updated:: Jun 18, 2012
6
+ # Updated:: Oct 16, 2012
7
7
  # Copyright:: kzgs Copyright (c) 2012
8
8
  # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
9
9
 
@@ -26,7 +26,7 @@ describe Automatic do
26
26
 
27
27
  describe "#version" do
28
28
  specify {
29
- Automatic.const_get(:VERSION).should == "12.9.1"
29
+ Automatic.const_get(:VERSION).should == "12.10.0"
30
30
  }
31
31
  end
32
32
 
@@ -37,7 +37,7 @@ describe Automatic do
37
37
  }
38
38
  end
39
39
 
40
- describe "#user_dir= in test env" do
40
+ describe "#user_dir= in test env" do
41
41
  before(:all) do
42
42
  Automatic.user_dir = File.join(APP_ROOT, "spec/user_dir")
43
43
  end
@@ -16,6 +16,7 @@ describe Automatic::Plugin::SubscriptionLink do
16
16
  Automatic::Plugin::SubscriptionLink.new(
17
17
  { 'urls' => [] })
18
18
  }
19
+
19
20
  its(:run) { should be_empty }
20
21
  end
21
22
 
@@ -25,6 +26,7 @@ describe Automatic::Plugin::SubscriptionLink do
25
26
  { 'urls' => ["invalid_url"] }
26
27
  )
27
28
  }
29
+
28
30
  its(:run) { should be_empty }
29
31
  end
30
32
 
@@ -0,0 +1,57 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Name:: Automatic::Plugin::Subscription::Tumblr
3
+ # Author:: 774 <http://id774.net>
4
+ # Created:: Oct 16, 2012
5
+ # Updated:: Oct 16, 2012
6
+ # Copyright:: 774 Copyright (c) 2012
7
+ # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
+
9
+ require File.expand_path(File.dirname(__FILE__) + '../../../spec_helper')
10
+
11
+ require 'subscription/tumblr'
12
+
13
+ describe Automatic::Plugin::SubscriptionTumblr do
14
+ context "with empty URLs" do
15
+ subject {
16
+ Automatic::Plugin::SubscriptionTumblr.new(
17
+ { 'urls' => [] })
18
+ }
19
+
20
+ its(:run) { should be_empty }
21
+ end
22
+
23
+ context "with URLs whose invalid URL" do
24
+ subject {
25
+ Automatic::Plugin::SubscriptionTumblr.new(
26
+ { 'urls' => ["invalid_url"] }
27
+ )
28
+ }
29
+
30
+ its(:run) { should be_empty }
31
+ end
32
+
33
+ context "with URLs whose valid URL" do
34
+ subject {
35
+ Automatic::Plugin::SubscriptionTumblr.new(
36
+ { 'urls' => [
37
+ "http://reblog.id774.net"]
38
+ }
39
+ )
40
+ }
41
+
42
+ its(:run) { should have(1).item }
43
+ end
44
+
45
+ context "with URLs and Pages" do
46
+ subject {
47
+ Automatic::Plugin::SubscriptionTumblr.new(
48
+ { 'urls' => [
49
+ "http://reblog.id774.net"],
50
+ 'pages' => 10
51
+ }
52
+ )
53
+ }
54
+
55
+ its(:run) { should have(10).item }
56
+ end
57
+ end
@@ -16,6 +16,7 @@ describe Automatic::Plugin::SubscriptionTwitter do
16
16
  Automatic::Plugin::SubscriptionTwitter.new(
17
17
  { 'urls' => [] })
18
18
  }
19
+
19
20
  its(:run) { should be_empty }
20
21
  end
21
22
 
@@ -25,6 +26,7 @@ describe Automatic::Plugin::SubscriptionTwitter do
25
26
  { 'urls' => ["invalid_url"] }
26
27
  )
27
28
  }
29
+
28
30
  its(:run) { should be_empty }
29
31
  end
30
32
 
@@ -11,12 +11,14 @@ plugins:
11
11
  feeds:
12
12
  - http://reblog.id774.net/rss
13
13
 
14
+ - module: FilterImageSource
15
+
16
+ - module: FilterTumblrResize
17
+
14
18
  - module: StorePermalink
15
19
  config:
16
20
  db: test_image.db
17
21
 
18
- - module: FilterImageSource
19
-
20
22
  - module: StoreTargetLink
21
23
  config:
22
24
  path: /tmp
@@ -6,19 +6,18 @@ global:
6
6
  level: info
7
7
 
8
8
  plugins:
9
- - module: SubscriptionFeed
9
+ - module: SubscriptionTumblr
10
10
  config:
11
- feeds:
12
- - http://reblog.id774.net/rss
11
+ urls:
12
+ - http://reblog.id774.net
13
+ pages: 2
14
+
15
+ - module: FilterImage
13
16
 
14
17
  - module: StorePermalink
15
18
  config:
16
19
  db: test_tumblr.db
17
20
 
18
- - module: FilterImageSource
19
-
20
- - module: FilterTumblrResize
21
-
22
21
  - module: StoreTargetLink
23
22
  config:
24
23
  path: /tmp
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: automatic
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.9.1
4
+ version: 12.10.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-18 00:00:00.000000000 Z
12
+ date: 2012-10-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sqlite3
@@ -254,6 +254,7 @@ files:
254
254
  - plugins/store/target_link.rb
255
255
  - plugins/subscription/feed.rb
256
256
  - plugins/subscription/link.rb
257
+ - plugins/subscription/tumblr.rb
257
258
  - plugins/subscription/twitter.rb
258
259
  - script/bootstrap
259
260
  - script/build
@@ -279,13 +280,13 @@ files:
279
280
  - spec/plugins/store/target_link_spec.rb
280
281
  - spec/plugins/subscription/feed_spec.rb
281
282
  - spec/plugins/subscription/link_spec.rb
283
+ - spec/plugins/subscription/tumblr_spec.rb
282
284
  - spec/plugins/subscription/twitter_spec.rb
283
285
  - spec/spec_helper.rb
284
286
  - spec/user_dir/plugins/store/mock.rb
285
287
  - test/fixtures/sampleOPML.xml
286
288
  - test/integration/test_activerecord.yml
287
289
  - test/integration/test_fulltext.yml
288
- - test/integration/test_get_image.yml
289
290
  - test/integration/test_googlealert.yml
290
291
  - test/integration/test_hatenabookmark.yml
291
292
  - test/integration/test_ignore.yml
@@ -1,24 +0,0 @@
1
- global:
2
- timezone: Asia/Tokyo
3
- cache:
4
- base: /tmp
5
- log:
6
- level: info
7
-
8
- plugins:
9
- - module: SubscriptionLink
10
- config:
11
- urls:
12
- - http://reblog.id774.net/
13
-
14
- - module: FilterImage
15
-
16
- - module: StorePermalink
17
- config:
18
- db: test_link.db
19
-
20
- - module: StoreTargetLink
21
- config:
22
- path: /tmp
23
- interval: 2
24
-