automatic 12.9.1 → 12.10.0

Sign up to get free protection for your applications and to get access to all the features.
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
-