cline 0.2.8 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -1,3 +1,2 @@
1
1
  rvm:
2
- - '1.9.2-p290'
3
- - '1.9.3-p0'
2
+ - '1.9.3-p125'
data/README.md CHANGED
@@ -1,76 +1,89 @@
1
- # Cline - CLI Line Notifier
1
+ # Cline - CLI Line Notifier [![Build Status](https://secure.travis-ci.org/hibariya/cline.png?branch=master)](http://travis-ci.org/hibariya/cline)
2
2
 
3
3
  Cline is a simple notification tool.
4
4
 
5
- ~~~~
5
+ ```
6
6
  +------------+ +-----------+ +-----------+
7
7
  | Collectors | ----------> | Cline | ----------> | OutStream |
8
8
  +------------+ +-----------+ +-----------+
9
9
  Collect any notifications Pool notifications Put anywhere
10
- ~~~~
10
+ ```
11
11
 
12
12
  ## Installation and Setting
13
13
 
14
- ~~~~
14
+ ```
15
15
  $ gem install cline
16
16
  $ cline init
17
- ~~~~
17
+ ```
18
18
 
19
19
  In ~/.cline/config:
20
20
 
21
- ~~~~ruby
21
+ ```ruby
22
22
  Cline.configure do |config|
23
23
  config.pool_size = 2000
24
24
 
25
- config.out_stream = Cline::OutStreams::WithGrowl.new($stdout)
26
- # Or
25
+ config.out_stream = Cline::OutStreams::WithNotify.new($stdout)
26
+ ## Or
27
27
  # config.out_stream = $stdout
28
28
 
29
29
  config.append_collector Cline::Collectors::Feed
30
+ ## Github:
31
+ # config.append_collector Cline::Collectors::Github
32
+ # Cline::Collectors::Github.login_name = 'hibariya'
30
33
  end
31
- ~~~~
34
+ ```
32
35
 
33
36
  Write your RSS feeds OPML file:
34
37
 
35
- ~~~~
38
+ ```
36
39
  $ curl http://foo.examle.com/url/to/opml.xml > ~/.cline/feeds.xml
37
- ~~~~
40
+ ```
38
41
 
39
42
  Collect notifications:
40
43
 
41
- ~~~~
44
+ ```
42
45
  $ cline collect
43
- ~~~~
46
+ ```
44
47
 
45
48
  Show notifications:
46
49
 
47
- ~~~~
48
- $ cline tick --offset 0 --interval 5
49
- ~~~~
50
+ ```
51
+ $ cline tick 0 5 # Or: cline tick --offset 0 --interval 5
52
+ [2012/05/02 02:34][9][w6] Introducing DuckDuckHack - Gabriel Weinberg's Blog http://www.gabrielweinberg.com/blog/2012/05/introducing-duckduckhack.html
53
+ | | |
54
+ `-- time | `-- alias
55
+ `----- display count
56
+ ```
57
+
58
+ Open URL in the message:
59
+
60
+ ```
61
+ $ cline open w6
62
+ ```
50
63
 
51
64
  ## Use case
52
65
 
53
66
  in ~/.screenrc
54
67
 
55
- ~~~~
68
+ ```
56
69
  backtick 0 0 0 cline tick 0 60
57
- ~~~~
70
+ ```
58
71
 
59
72
  ## initialize Database
60
73
 
61
74
  `init` command initialize new sqlite3 database.
62
75
 
63
- ~~~~
76
+ ```
64
77
  $ cline init
65
- ~~~~
78
+ ```
66
79
 
67
80
  ## Collect
68
81
 
69
82
  `collect` command collect new notifications from `Cline.collectors`.
70
83
 
71
- ~~~~
84
+ ```
72
85
  $ cline collect
73
- ~~~~
86
+ ```
74
87
 
75
88
  ### Custom Collector
76
89
 
@@ -78,7 +91,7 @@ in ~/.screenrc
78
91
 
79
92
  example:
80
93
 
81
- ~~~~ruby
94
+ ```ruby
82
95
  class MyCollector < Cline::Collectors::Base
83
96
  def self.collect
84
97
  new.sources.each do |source|
@@ -90,23 +103,23 @@ example:
90
103
  # get new sources...
91
104
  end
92
105
  end
93
- ~~~~
106
+ ```
94
107
 
95
- Cline::Collectors::Base class provides create_or_pass method.
108
+ Cline::Collectors::Base class provides `create_or_pass` method.
96
109
  It create a new unique notification.
97
110
 
98
111
  ### Registration
99
112
 
100
113
  in ~/.cline/config
101
114
 
102
- ~~~~ruby
115
+ ```ruby
103
116
  require 'path/to/my_collector'
104
117
 
105
118
  Cline.configure do |config|
106
119
  # ...
107
120
  config.append_collector MyCollector
108
121
  end
109
- ~~~~
122
+ ```
110
123
 
111
124
  ## Notifier
112
125
 
@@ -119,23 +132,42 @@ Cline's notifier required `puts` instance method.
119
132
 
120
133
  example:
121
134
 
122
- ~~~~ruby
135
+ ```ruby
123
136
  class MyNotifier
124
137
  def puts(str)
125
138
  # implement notifier behaviour...
126
139
  end
127
140
  end
128
- ~~~~
141
+ ```
129
142
 
130
143
  ### Registration
131
144
 
132
145
  in ~/.cline/config
133
146
 
134
- ~~~~ruby
147
+ ```ruby
135
148
  require 'path/to/my_notifier'
136
149
 
137
150
  Cline.configure do |config|
138
151
  # ...
139
152
  config.out_stream = MyNotifier.new
140
153
  end
141
- ~~~~
154
+ ```
155
+
156
+ ## Filtering
157
+
158
+ Use ActiveRecord validators.
159
+
160
+ ```ruby
161
+ Cline.configure do |config|
162
+ # ...
163
+ config.notification.validates :message, length: {maximum: 100}
164
+ end
165
+ ```
166
+
167
+ ## Contributing
168
+
169
+ 1. Fork it
170
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
171
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
172
+ 4. Push to the branch (`git push origin my-new-feature`)
173
+ 5. Create new Pull Request
data/cline.gemspec CHANGED
@@ -1,43 +1,38 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "cline/version"
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'cline/version'
4
4
 
5
5
  Gem::Specification.new do |s|
6
- s.name = "cline"
6
+ s.name = 'cline'
7
7
  s.version = Cline::VERSION
8
- s.authors = ["hibariya"]
9
- s.email = ["celluloid.key@gmail.com"]
10
- s.homepage = "https://github.com/hibariya/cline"
8
+ s.authors = ['hibariya']
9
+ s.email = ['celluloid.key@gmail.com']
10
+ s.homepage = 'https://github.com/hibariya/cline'
11
11
  s.summary = %q{CLI Line Notifier}
12
12
  s.description = %q{Cline - CLI Line Notifier}
13
13
 
14
14
  #s.post_install_message = <<-EOM
15
15
  #EOM
16
16
 
17
- #s.rubyforge_project = "cline"
18
-
19
17
  s.files = `git ls-files`.split("\n")
20
18
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
22
- s.require_paths = ["lib"]
23
-
24
- # specify any dependencies here; for example:
25
- # s.add_development_dependency "rspec"
26
- # s.add_runtime_dependency "rest-client"
20
+ s.require_paths = ['lib']
27
21
 
28
- s.add_runtime_dependency 'thor', ['>= 0.14.6']
22
+ s.add_runtime_dependency 'thor', ['>= 0.14.6']
29
23
  s.add_runtime_dependency 'activerecord', ['>= 3.1.1']
30
- s.add_runtime_dependency 'sqlite3', ['>= 1.3.4']
31
- s.add_runtime_dependency 'feedzirra', ['~> 0.0.31'] # FIXME builder dependency workaround...
32
- s.add_runtime_dependency 'notify', ['>= 0.3.0']
24
+ s.add_runtime_dependency 'sqlite3', ['>= 1.3.4']
25
+ s.add_runtime_dependency 'feedzirra', ['~> 0.0.31'] # FIXME builder dependency workaround...
26
+ s.add_runtime_dependency 'notify', ['>= 0.3.0']
27
+ s.add_runtime_dependency 'launchy', ['>= 2.1.0']
33
28
 
34
- s.add_development_dependency 'rake', ['>= 0.9.2']
35
- s.add_development_dependency 'ir_b', ['>= 1.4.0']
36
- s.add_development_dependency 'tapp', ['>= 1.1.0']
37
- s.add_development_dependency 'rspec', ['>= 2.6.0']
38
- s.add_development_dependency 'rr', ['>= 1.0.4']
39
- s.add_development_dependency 'fabrication', ['>= 1.2.0']
40
- s.add_development_dependency 'fuubar', ['>= 0.0.6']
41
- s.add_development_dependency 'simplecov', ['>= 0.5.3']
29
+ s.add_development_dependency 'rake', ['>= 0.9.2']
30
+ s.add_development_dependency 'ir_b', ['>= 1.4.0']
31
+ s.add_development_dependency 'tapp', ['>= 1.1.0']
32
+ s.add_development_dependency 'rspec', ['>= 2.6.0']
33
+ s.add_development_dependency 'rr', ['>= 1.0.4']
34
+ s.add_development_dependency 'fabrication', ['>= 1.2.0']
35
+ s.add_development_dependency 'fuubar', ['>= 0.0.6']
36
+ s.add_development_dependency 'simplecov', ['>= 0.5.3']
42
37
  s.add_development_dependency 'activesupport', ['>= 3.1.1']
43
38
  end
data/lib/cline.rb CHANGED
@@ -62,9 +62,9 @@ require 'thor'
62
62
  require 'sqlite3'
63
63
  require 'active_record'
64
64
 
65
- require "cline/version"
66
- require "cline/configure"
67
- require "cline/notification"
68
- require "cline/command"
69
- require "cline/collectors"
70
- require "cline/out_streams"
65
+ require 'cline/version'
66
+ require 'cline/configure'
67
+ require 'cline/notification'
68
+ require 'cline/command'
69
+ require 'cline/collectors'
70
+ require 'cline/out_streams'
@@ -10,9 +10,9 @@ module Cline::Collectors
10
10
  return if oldest_notification && oldest_notification.notified_at.to_time > notified_at
11
11
 
12
12
  Cline::Notification.instance_exec message, notified_at do |message, notified_at|
13
- create(message: message, notified_at: notified_at) unless find_by_message_and_notified_at(message, notified_at)
13
+ create!(message: message, notified_at: notified_at) unless find_by_message_and_notified_at(message, notified_at)
14
14
  end
15
- rescue ActiveRecord::StatementInvalid => e
15
+ rescue ActiveRecord::StatementInvalid, ActiveRecord::RecordInvalid => e
16
16
  puts e.class, e.message
17
17
  end
18
18
 
data/lib/cline/command.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  # coding: utf-8
2
2
 
3
+ require 'launchy'
4
+
3
5
  module Cline
4
6
  class Command < Thor
5
7
  def self.start(*)
@@ -15,13 +17,13 @@ module Cline
15
17
  '-i' => :init,
16
18
  '-v' => :version
17
19
 
18
- desc 'show', 'Show a latest message'
20
+ desc :show, 'Show a latest message'
19
21
  method_options offset: :integer
20
22
  def show(offset = options[:offset] || 0)
21
23
  Notification.display offset
22
24
  end
23
25
 
24
- desc 'tick', 'Rotate message'
26
+ desc :tick, 'Rotate message'
25
27
  method_options offset: :integer, interval: :integer
26
28
  def tick(offset = options[:offset] || 0, interval = options[:interval] || 60)
27
29
  loop do
@@ -30,7 +32,7 @@ module Cline
30
32
  end
31
33
  end
32
34
 
33
- desc 'search', 'Search by query'
35
+ desc :search, 'Search by query'
34
36
  method_options query: :string
35
37
  def search(keyword = optoins[:query])
36
38
  Notification.by_keyword(keyword).each do |notification|
@@ -38,20 +40,32 @@ module Cline
38
40
  end
39
41
  end
40
42
 
41
- desc 'status', 'Show status'
43
+ desc :open, 'Open the URL in the message if exists'
44
+ method_options hint: :string
45
+ def open(alias_string = options[:hint])
46
+ notification = Notification.by_alias_string(alias_string).last
47
+
48
+ if notification && url = notification.detect_url
49
+ Launchy.open url
50
+ else
51
+ say 'No URL found', :red
52
+ end
53
+ end
54
+
55
+ desc :status, 'Show status'
42
56
  def status
43
57
  say "displayed : #{Notification.displayed.count}", :green
44
58
  say "total : #{Notification.count}", :cyan
45
59
  end
46
60
 
47
- desc 'collect', 'Collect sources'
61
+ desc :collect, 'Collect sources'
48
62
  def collect
49
63
  Cline.collectors.each &:collect
50
64
 
51
65
  clean_obsoletes
52
66
  end
53
67
 
54
- desc 'init', 'Init database'
68
+ desc :init, 'Init database'
55
69
  def init
56
70
  ActiveRecord::Base.connection.create_table(:notifications) do |t|
57
71
  t.text :message, null: false, default: ''
@@ -60,7 +74,7 @@ module Cline
60
74
  end
61
75
  end
62
76
 
63
- desc 'recent', 'Show recent notification'
77
+ desc :recent, 'Show recent notification'
64
78
  method_options limit: :integer
65
79
  def recent(limit = options[:limit] || 1)
66
80
  Notification.recent_notified.limit(limit).each do |notification|
@@ -68,7 +82,7 @@ module Cline
68
82
  end
69
83
  end
70
84
 
71
- desc 'version', 'Show version.'
85
+ desc :version, 'Show version.'
72
86
  def version
73
87
  say "cline version #{Cline::VERSION}"
74
88
  end
@@ -1,17 +1,20 @@
1
1
  # coding: utf-8
2
2
 
3
+ require 'forwardable'
4
+
3
5
  module Cline
4
- def self.configure(&config)
5
- config.call Configure.new
6
+ def self.configure(&block)
7
+ configure = Configure.new
8
+ block ? block.(configure) : configure
6
9
  end
7
10
 
8
11
  class Configure
9
- def pool_size=(size)
10
- Cline.pool_size = size
11
- end
12
+ extend Forwardable
13
+
14
+ def_delegators Cline, :pool_size=, :out_stream=
12
15
 
13
- def out_stream=(stream)
14
- Cline.out_stream = stream
16
+ def notification
17
+ Cline::Notification
15
18
  end
16
19
 
17
20
  def append_collector(collector)
@@ -1,11 +1,21 @@
1
1
  # coding: utf-8
2
2
 
3
+ require 'uri'
4
+
3
5
  module Cline
4
6
  class Notification < ActiveRecord::Base
5
7
  validate :notified_at, presence: true
6
8
  validate :message, presence: true, uniqueness: true
7
9
  validate :display_count, presence: true, numerically: true
8
10
 
11
+ scope :with_id_alias, -> {
12
+ select('(id - (SELECT MIN(id) FROM notifications)) AS id_alias, *')
13
+ }
14
+
15
+ scope :by_alias_string, ->(alias_string) {
16
+ with_id_alias.where('id_alias = ?', alias_string.to_i(36))
17
+ }
18
+
9
19
  scope :by_keyword, ->(word) {
10
20
  where('message like ?', "%#{word}%").order('notified_at DESC, display_count')
11
21
  }
@@ -14,7 +24,7 @@ module Cline
14
24
  order(:display_count).order(:notified_at).limit(limit).offset(offset)
15
25
  }
16
26
 
17
- scope :displayed, where('display_count > 0')
27
+ scope :displayed, -> { where('display_count > 0') }
18
28
 
19
29
  scope :recent_notified, ->(limit = 1) {
20
30
  n = earliest.first
@@ -27,8 +37,11 @@ module Cline
27
37
  end
28
38
 
29
39
  class << self
30
- def display(offset)
31
- earliest(1, offset).first.display
40
+ def display(offset = 0)
41
+ with_id_alias.
42
+ earliest(1, offset).
43
+ first.
44
+ display
32
45
  end
33
46
 
34
47
  def normalize_message(m)
@@ -36,7 +49,7 @@ module Cline
36
49
  end
37
50
 
38
51
  def clean(pool_size)
39
- order('notified_at DESC').
52
+ order('notified_at DESC').
40
53
  order(:display_count).
41
54
  offset(pool_size).
42
55
  destroy_all
@@ -44,13 +57,33 @@ module Cline
44
57
  end
45
58
 
46
59
  def display
47
- Cline.out_stream.puts display_message
60
+ Cline.out_stream.tap do |out|
61
+ out.puts display_message
62
+
63
+ out.flush if out.respond_to?(:flush)
64
+ end
48
65
 
49
66
  increment! :display_count
50
67
  end
51
68
 
52
69
  def display_message
53
- "[#{notified_at}][#{display_count}] #{message}"
70
+ display_time = notified_at.strftime('%Y/%m/%d %H:%M')
71
+
72
+ "[#{display_time}][#{display_count}][#{id_alias_string}] #{message}"
73
+ end
74
+
75
+ def detect_url(protocols = %w(http https))
76
+ regexp = URI.regexp(protocols)
77
+
78
+ if match = message.match(regexp)
79
+ match.to_s
80
+ else
81
+ nil
82
+ end
83
+ end
84
+
85
+ def id_alias_string
86
+ id_alias.to_i.to_s(36)
54
87
  end
55
88
  end
56
89
  end
@@ -21,6 +21,7 @@ module Cline::OutStreams
21
21
 
22
22
  def puts(str)
23
23
  puts_stream str
24
+
24
25
  Notify.notify '', str
25
26
  end
26
27
 
data/lib/cline/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Cline
2
- VERSION = "0.2.8"
2
+ VERSION = '0.3.0'
3
3
  end
data/spec/fabricators.rb CHANGED
@@ -3,4 +3,5 @@
3
3
  Fabricator(:notification, class_name: Cline::Notification) do
4
4
  message { sequence(:message) {|i| "message ##{i}" } }
5
5
  notified_at { Time.now }
6
+ display_count 0
6
7
  end
@@ -1,6 +1,6 @@
1
1
  # coding: utf-8
2
2
 
3
- require_relative '../spec_helper'
3
+ require 'spec_helper'
4
4
 
5
5
  describe Cline do
6
6
  describe '#load_config_if_exists' do
@@ -1,38 +1,58 @@
1
1
  # coding: utf-8
2
2
 
3
- require_relative '../spec_helper'
3
+ require 'spec_helper'
4
4
 
5
5
  describe Cline::Collectors::Base do
6
- describe '.oldest_notification' do
7
- let(:oldest_notified_at) { 100.days.ago }
6
+ describe '.create_or_pass' do
7
+ describe '.oldest_notification' do
8
+ let(:oldest_notified_at) { 100.days.ago }
8
9
 
9
- before do
10
- Cline::Collectors::Base.send :reset_oldest_notification
11
- Cline::Notification.create(message: 'awesome', notified_at: oldest_notified_at)
12
- end
13
-
14
- context 'too old notification' do
15
10
  before do
16
- flunk unless Cline::Notification.count == 1
11
+ Cline::Collectors::Base.send :reset_oldest_notification
12
+ Cline::Notification.create(message: 'awesome', notified_at: oldest_notified_at)
13
+ end
14
+
15
+ context 'too old notification' do
16
+ before do
17
+ flunk unless Cline::Notification.count == 1
17
18
 
18
- Cline::Collectors::Base.create_or_pass('too old', oldest_notified_at - 1.day)
19
+ Cline::Collectors::Base.create_or_pass('too old', oldest_notified_at - 1.day)
20
+ end
21
+
22
+ subject { Cline::Notification.count }
23
+
24
+ it { should == 1 }
19
25
  end
20
26
 
21
- subject { Cline::Notification.count }
27
+ context 'newly notification' do
28
+ before do
29
+ flunk unless Cline::Notification.count == 1
30
+
31
+ Cline::Collectors::Base.create_or_pass('newly', oldest_notified_at + 1.day)
32
+ end
22
33
 
23
- it { should == 1 }
34
+ subject { Cline::Notification.count }
35
+
36
+ it { should == 2 }
37
+ end
24
38
  end
25
39
 
26
- context 'newly notification' do
40
+ context 'invalid(filtered) notification' do
27
41
  before do
28
- flunk unless Cline::Notification.count == 1
29
-
30
- Cline::Collectors::Base.create_or_pass('newly', oldest_notified_at + 1.day)
42
+ Cline.configure do |config|
43
+ config.notification.validates :message, length: {maximum: 1000}
44
+ end
31
45
  end
32
46
 
33
- subject { Cline::Notification.count }
47
+ subject { capture(:stdout) { Cline::Collectors::Base.create_or_pass('a'*1001, Time.now) } }
34
48
 
35
- it { should == 2 }
49
+ it { should match 'ActiveRecord::RecordInvalid' }
50
+
51
+ describe 'Cline::Notification.count' do
52
+ subject { Cline::Notification.count }
53
+
54
+ it { should == 0 }
55
+ end
36
56
  end
37
57
  end
38
58
  end
@@ -1,6 +1,6 @@
1
1
  # coding: utf-8
2
2
 
3
- require_relative '../spec_helper'
3
+ require 'spec_helper'
4
4
 
5
5
  describe Cline::Notification do
6
6
  describe '.ealiest' do
@@ -87,11 +87,25 @@ describe Cline::Notification do
87
87
  its(:message) { should_not match /\n/ }
88
88
  end
89
89
 
90
- describe '#display' do
91
- let!(:notification) { Fabricate(:notification, display_count: 0) }
90
+ describe '.display' do
91
+ let!(:notification) { Fabricate(:notification, message: 'hi', notified_at: '2011-01-01 00:00:00', display_count: 0) }
92
92
 
93
- specify 'display_count should incremented' do
94
- -> { notification.display }.should change(notification, :display_count).by(1)
93
+ before do
94
+ Cline::Notification.display
95
+
96
+ Cline.out_stream.rewind
97
+ end
98
+
99
+ describe 'stdout' do
100
+ subject { Cline.out_stream.read.strip }
101
+
102
+ it { should == '[2011/01/01 00:00][0][0] hi' }
103
+ end
104
+
105
+ describe 'display_count' do
106
+ subject { notification.reload }
107
+
108
+ its(:display_count) { should == 1 }
95
109
  end
96
110
  end
97
111
  end
data/spec/spec_helper.rb CHANGED
@@ -34,4 +34,6 @@ RSpec.configure do |config|
34
34
 
35
35
  Cline.boot
36
36
  end
37
+
38
+ config.include ExampleGroupHelper
37
39
  end
@@ -0,0 +1,16 @@
1
+ # coding: utf-8
2
+
3
+ module ExampleGroupHelper
4
+ def capture(stream)
5
+ begin
6
+ stream = stream.to_s
7
+ eval "$#{stream} = StringIO.new"
8
+ yield
9
+ result = eval("$#{stream}").string
10
+ ensure
11
+ eval("$#{stream} = #{stream.upcase}")
12
+ end
13
+
14
+ result
15
+ end
16
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-28 00:00:00.000000000 Z
12
+ date: 2012-05-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
- requirement: &70133751717980 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 0.14.6
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70133751717980
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.14.6
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: activerecord
27
- requirement: &70133751717400 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: 3.1.1
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *70133751717400
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 3.1.1
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: sqlite3
38
- requirement: &70133751716800 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: 1.3.4
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *70133751716800
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.3.4
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: feedzirra
49
- requirement: &70133751732440 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ~>
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: 0.0.31
55
70
  type: :runtime
56
71
  prerelease: false
57
- version_requirements: *70133751732440
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 0.0.31
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: notify
60
- requirement: &70133751731960 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,10 +85,31 @@ dependencies:
65
85
  version: 0.3.0
66
86
  type: :runtime
67
87
  prerelease: false
68
- version_requirements: *70133751731960
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 0.3.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: launchy
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: 2.1.0
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: 2.1.0
69
110
  - !ruby/object:Gem::Dependency
70
111
  name: rake
71
- requirement: &70133751731420 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
72
113
  none: false
73
114
  requirements:
74
115
  - - ! '>='
@@ -76,10 +117,15 @@ dependencies:
76
117
  version: 0.9.2
77
118
  type: :development
78
119
  prerelease: false
79
- version_requirements: *70133751731420
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: 0.9.2
80
126
  - !ruby/object:Gem::Dependency
81
127
  name: ir_b
82
- requirement: &70133751730900 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
83
129
  none: false
84
130
  requirements:
85
131
  - - ! '>='
@@ -87,10 +133,15 @@ dependencies:
87
133
  version: 1.4.0
88
134
  type: :development
89
135
  prerelease: false
90
- version_requirements: *70133751730900
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: 1.4.0
91
142
  - !ruby/object:Gem::Dependency
92
143
  name: tapp
93
- requirement: &70133751730320 !ruby/object:Gem::Requirement
144
+ requirement: !ruby/object:Gem::Requirement
94
145
  none: false
95
146
  requirements:
96
147
  - - ! '>='
@@ -98,10 +149,15 @@ dependencies:
98
149
  version: 1.1.0
99
150
  type: :development
100
151
  prerelease: false
101
- version_requirements: *70133751730320
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: 1.1.0
102
158
  - !ruby/object:Gem::Dependency
103
159
  name: rspec
104
- requirement: &70133751729600 !ruby/object:Gem::Requirement
160
+ requirement: !ruby/object:Gem::Requirement
105
161
  none: false
106
162
  requirements:
107
163
  - - ! '>='
@@ -109,10 +165,15 @@ dependencies:
109
165
  version: 2.6.0
110
166
  type: :development
111
167
  prerelease: false
112
- version_requirements: *70133751729600
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: 2.6.0
113
174
  - !ruby/object:Gem::Dependency
114
175
  name: rr
115
- requirement: &70133751726700 !ruby/object:Gem::Requirement
176
+ requirement: !ruby/object:Gem::Requirement
116
177
  none: false
117
178
  requirements:
118
179
  - - ! '>='
@@ -120,10 +181,15 @@ dependencies:
120
181
  version: 1.0.4
121
182
  type: :development
122
183
  prerelease: false
123
- version_requirements: *70133751726700
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: 1.0.4
124
190
  - !ruby/object:Gem::Dependency
125
191
  name: fabrication
126
- requirement: &70133751725960 !ruby/object:Gem::Requirement
192
+ requirement: !ruby/object:Gem::Requirement
127
193
  none: false
128
194
  requirements:
129
195
  - - ! '>='
@@ -131,10 +197,15 @@ dependencies:
131
197
  version: 1.2.0
132
198
  type: :development
133
199
  prerelease: false
134
- version_requirements: *70133751725960
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: 1.2.0
135
206
  - !ruby/object:Gem::Dependency
136
207
  name: fuubar
137
- requirement: &70133751725200 !ruby/object:Gem::Requirement
208
+ requirement: !ruby/object:Gem::Requirement
138
209
  none: false
139
210
  requirements:
140
211
  - - ! '>='
@@ -142,10 +213,15 @@ dependencies:
142
213
  version: 0.0.6
143
214
  type: :development
144
215
  prerelease: false
145
- version_requirements: *70133751725200
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: 0.0.6
146
222
  - !ruby/object:Gem::Dependency
147
223
  name: simplecov
148
- requirement: &70133751740580 !ruby/object:Gem::Requirement
224
+ requirement: !ruby/object:Gem::Requirement
149
225
  none: false
150
226
  requirements:
151
227
  - - ! '>='
@@ -153,10 +229,15 @@ dependencies:
153
229
  version: 0.5.3
154
230
  type: :development
155
231
  prerelease: false
156
- version_requirements: *70133751740580
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ! '>='
236
+ - !ruby/object:Gem::Version
237
+ version: 0.5.3
157
238
  - !ruby/object:Gem::Dependency
158
239
  name: activesupport
159
- requirement: &70133751740100 !ruby/object:Gem::Requirement
240
+ requirement: !ruby/object:Gem::Requirement
160
241
  none: false
161
242
  requirements:
162
243
  - - ! '>='
@@ -164,7 +245,12 @@ dependencies:
164
245
  version: 3.1.1
165
246
  type: :development
166
247
  prerelease: false
167
- version_requirements: *70133751740100
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - ! '>='
252
+ - !ruby/object:Gem::Version
253
+ version: 3.1.1
168
254
  description: Cline - CLI Line Notifier
169
255
  email:
170
256
  - celluloid.key@gmail.com
@@ -209,6 +295,7 @@ files:
209
295
  - spec/lib/notification_spec.rb
210
296
  - spec/spec_helper.rb
211
297
  - spec/support/.gitkeep
298
+ - spec/support/example_group_helper.rb
212
299
  - spec/tmp/.gitkeep
213
300
  homepage: https://github.com/hibariya/cline
214
301
  licenses: []
@@ -222,15 +309,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
222
309
  - - ! '>='
223
310
  - !ruby/object:Gem::Version
224
311
  version: '0'
312
+ segments:
313
+ - 0
314
+ hash: 35415735698241322
225
315
  required_rubygems_version: !ruby/object:Gem::Requirement
226
316
  none: false
227
317
  requirements:
228
318
  - - ! '>='
229
319
  - !ruby/object:Gem::Version
230
320
  version: '0'
321
+ segments:
322
+ - 0
323
+ hash: 35415735698241322
231
324
  requirements: []
232
325
  rubyforge_project:
233
- rubygems_version: 1.8.11
326
+ rubygems_version: 1.8.23
234
327
  signing_key:
235
328
  specification_version: 3
236
329
  summary: CLI Line Notifier
@@ -254,4 +347,5 @@ test_files:
254
347
  - spec/lib/notification_spec.rb
255
348
  - spec/spec_helper.rb
256
349
  - spec/support/.gitkeep
350
+ - spec/support/example_group_helper.rb
257
351
  - spec/tmp/.gitkeep