rbtclk 0.3.4 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +31 -3
- data/config/default.rb +3 -0
- data/lib/rbtclk.rb +6 -3
- data/lib/rbtclk/config_loader.rb +7 -7
- data/lib/rbtclk/countdown_timer.rb +7 -2
- data/lib/rbtclk/sound_player.rb +32 -0
- data/lib/rbtclk/version.rb +1 -1
- data/sound/bell.mp3 +0 -0
- data/spec/rbtclk/config_loader_spec.rb +7 -0
- data/spec/rbtclk_spec.rb +16 -11
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 249cb25def3f52ad44433d4f871f72cbd75cf7a3
|
4
|
+
data.tar.gz: c547d281e2e035742cae671576296f0d34532b21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db87de5f550c2e183fed77957ee96e2d424fae85045df107ff0b3499ca1f946d156285b9cc75d31d6cf8c487c8981bb74ad90d1cc19e5f5237fc966eac417fc6
|
7
|
+
data.tar.gz: 5670e0ad318bb2579747af6df0ea412772a39a23b2a2371c25b4b1f8f85cc02dfed857035edff072bd6c44324bfb6665f48f2826028479dce6439fad93a0bf4c
|
data/README.md
CHANGED
@@ -7,6 +7,21 @@ A light-weight timer application that can run in terminal emulators :rabbit:
|
|
7
7
|
## Requirement
|
8
8
|
|
9
9
|
- Ruby 2.0 or later.
|
10
|
+
- afplay or mpg123
|
11
|
+
|
12
|
+
This application is tested on OS X 10.10 and Arch Linux.
|
13
|
+
|
14
|
+
Rbtclk needs a sound player tool like afplay or mpg123.
|
15
|
+
OS X has normally afplay as default.
|
16
|
+
If you use other UNIX like system, you should install mpg123.
|
17
|
+
|
18
|
+
On Arch Linux,
|
19
|
+
|
20
|
+
```shell
|
21
|
+
$ sudo pacman -S mpg123
|
22
|
+
```
|
23
|
+
|
24
|
+
Rbtclk works without sound player tools, but alerming by sound file is disabled.
|
10
25
|
|
11
26
|
## Installation
|
12
27
|
|
@@ -34,7 +49,7 @@ $ rbtclk
|
|
34
49
|
|
35
50
|
### Mode
|
36
51
|
|
37
|
-
This application supports some modes; clock, countup and countdown.
|
52
|
+
This application supports some modes; clock, countup and countdown.
|
38
53
|
|
39
54
|
#### Example
|
40
55
|
|
@@ -83,10 +98,14 @@ $ rbtclk -m countdown --time 90
|
|
83
98
|
#### #### ## #### ## ## #### ####
|
84
99
|
```
|
85
100
|
|
101
|
+
When remaining time reaches 0, rbtclk produces a sound to alert.
|
102
|
+
This function is experimental!
|
103
|
+
You can use this feature on only OS X.
|
104
|
+
|
86
105
|
### Change font
|
87
106
|
|
88
107
|
This application depends on artii library (https://github.com/miketierney/artii).
|
89
|
-
You can use any fonts
|
108
|
+
You can use any fonts are supported by artii.
|
90
109
|
|
91
110
|
#### Example
|
92
111
|
|
@@ -187,6 +206,9 @@ Rbtclk.configure do |c|
|
|
187
206
|
|
188
207
|
# You can specify limit time as seconds in countdown timer.
|
189
208
|
c.time = "180"
|
209
|
+
|
210
|
+
# The alarm sound is suppressed if no_alarm is true.
|
211
|
+
c.no_alarm = false
|
190
212
|
end
|
191
213
|
```
|
192
214
|
|
@@ -196,7 +218,9 @@ end
|
|
196
218
|
- [x] Countup Timer
|
197
219
|
- [x] Countdown Timer
|
198
220
|
- [x] Configuration by ~/.rbtclk
|
199
|
-
- [
|
221
|
+
- [x] Sound
|
222
|
+
- [ ] Sound on Linux/BSD
|
223
|
+
- [ ] Controlling sound by command line options
|
200
224
|
- [ ] Refactoring
|
201
225
|
|
202
226
|
## Code Status
|
@@ -210,3 +234,7 @@ end
|
|
210
234
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
211
235
|
4. Push to the branch (`git push origin my-new-feature`)
|
212
236
|
5. Create a new Pull Request
|
237
|
+
|
238
|
+
## Special Thanks!
|
239
|
+
Alert sound is distributed by [Taira Komori](http://taira-komori.jpn.org/freesounden.html).
|
240
|
+
Thanks!
|
data/config/default.rb
CHANGED
data/lib/rbtclk.rb
CHANGED
@@ -24,6 +24,7 @@ module Rbtclk
|
|
24
24
|
opt.on("--version") { |v| params[:version] = v }
|
25
25
|
opt.on("--color COLOR") { |c| params[:color] = c }
|
26
26
|
opt.on("--time TIME") { |t| params[:time] = t }
|
27
|
+
opt.on("--noalarm") { |n| params[:no_alarm] = n }
|
27
28
|
|
28
29
|
opt.parse!(args)
|
29
30
|
end
|
@@ -63,15 +64,17 @@ module Rbtclk
|
|
63
64
|
font: params[:font] || FONT,
|
64
65
|
format: params[:format] || FORMAT,
|
65
66
|
color: params[:color] || COLOR,
|
66
|
-
time: params[:time] || TIME
|
67
|
+
time: params[:time] || TIME,
|
68
|
+
no_alarm: params[:no_alarm] || NO_ALARM}
|
67
69
|
end
|
68
70
|
|
69
71
|
def remove_extra_params(params)
|
70
|
-
params.delete(:mode)
|
71
|
-
|
72
72
|
if params[:mode] != "countdown"
|
73
73
|
params.delete(:time)
|
74
|
+
params.delete(:no_alarm)
|
74
75
|
end
|
76
|
+
|
77
|
+
params.delete(:mode)
|
75
78
|
end
|
76
79
|
end
|
77
80
|
|
data/lib/rbtclk/config_loader.rb
CHANGED
@@ -10,11 +10,8 @@ module Rbtclk
|
|
10
10
|
def load_config
|
11
11
|
dot_rbtclk_in_home = File.expand_path(".rbtclk", "~")
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
else
|
16
|
-
load File.expand_path("../../../config/default.rb", __FILE__)
|
17
|
-
end
|
13
|
+
load File.expand_path("../../../config/default.rb", __FILE__)
|
14
|
+
load dot_rbtclk_in_home if File.exist?(dot_rbtclk_in_home)
|
18
15
|
end
|
19
16
|
|
20
17
|
# Methods for configuration DSL
|
@@ -22,9 +19,12 @@ module Rbtclk
|
|
22
19
|
self.instance_eval(&block)
|
23
20
|
end
|
24
21
|
|
25
|
-
%w(mode font format color time).each do |attr|
|
22
|
+
%w(mode font format color time no_alarm).each do |attr|
|
26
23
|
define_method "#{attr}=" do |value|
|
27
|
-
|
24
|
+
const_name = attr.to_s.upcase
|
25
|
+
|
26
|
+
remove_const const_name if const_defined?(const_name)
|
27
|
+
const_set const_name, value
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
@@ -6,17 +6,20 @@
|
|
6
6
|
require "artii"
|
7
7
|
require "curses"
|
8
8
|
require "rbtclk/color_code"
|
9
|
+
require "rbtclk/sound_player"
|
9
10
|
|
10
11
|
module Rbtclk
|
11
12
|
class CountdownTimer
|
12
13
|
include ColorCode
|
13
14
|
|
14
|
-
def initialize(font: "clb8x8", format: "%X", color: "black", time: 180)
|
15
|
+
def initialize(font: "clb8x8", format: "%X", color: "black", time: 180, no_alarm: false)
|
15
16
|
@artii = Artii::Base.new(font: font)
|
16
17
|
@format = format
|
17
18
|
@color = color
|
18
19
|
@time = time.to_i
|
20
|
+
@no_alarm = no_alarm
|
19
21
|
@elapsed = 0
|
22
|
+
@sound_player = SoundPlayer.new
|
20
23
|
end
|
21
24
|
|
22
25
|
def show
|
@@ -37,10 +40,12 @@ module Rbtclk
|
|
37
40
|
sleep 1
|
38
41
|
end
|
39
42
|
|
43
|
+
@sound_player.play unless @no_alarm
|
44
|
+
|
40
45
|
toggle_marker = true
|
41
46
|
loop do
|
42
47
|
blink(toggle_marker)
|
43
|
-
|
48
|
+
toggle_marker = !toggle_marker
|
44
49
|
sleep 1
|
45
50
|
end
|
46
51
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# Rbtclk
|
2
|
+
# Copyright (c) 2014 Moza USANE
|
3
|
+
# This software is released under the MIT License.
|
4
|
+
# http://opensource.org/licenses/mit-license.php
|
5
|
+
|
6
|
+
require "open3"
|
7
|
+
|
8
|
+
module Rbtclk
|
9
|
+
class SoundPlayer
|
10
|
+
def initialize
|
11
|
+
sound_file_path = File.expand_path("../../../sound/bell.mp3", __FILE__)
|
12
|
+
|
13
|
+
@command_line = if command_exist?("afplay")
|
14
|
+
"afplay #{sound_file_path}"
|
15
|
+
elsif command_exist?("mpg123")
|
16
|
+
"mpg123 -q #{sound_file_path}"
|
17
|
+
else
|
18
|
+
":" # do noghing
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def play
|
23
|
+
spawn @command_line
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def command_exist?(command)
|
29
|
+
Open3.capture3("which #{command}")[2].success?
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/rbtclk/version.rb
CHANGED
data/sound/bell.mp3
ADDED
Binary file
|
@@ -19,6 +19,7 @@ RSpec.describe Rbtclk::ConfigLoader do
|
|
19
19
|
c.format = "cheshire-cat"
|
20
20
|
c.color = "queen-of-hearts"
|
21
21
|
c.time = "march-hare"
|
22
|
+
c.no_alarm = true
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
@@ -27,6 +28,7 @@ RSpec.describe Rbtclk::ConfigLoader do
|
|
27
28
|
it { expect(target_klass::FORMAT).to eq "cheshire-cat" }
|
28
29
|
it { expect(target_klass::COLOR).to eq "queen-of-hearts" }
|
29
30
|
it { expect(target_klass::TIME).to eq "march-hare" }
|
31
|
+
it { expect(target_klass::NO_ALARM).to eq true }
|
30
32
|
end
|
31
33
|
|
32
34
|
describe ".mode" do
|
@@ -53,4 +55,9 @@ RSpec.describe Rbtclk::ConfigLoader do
|
|
53
55
|
before { target_klass.time = "march-hare" }
|
54
56
|
it { expect(target_klass::TIME).to eq "march-hare" }
|
55
57
|
end
|
58
|
+
|
59
|
+
describe ".no_alarm" do
|
60
|
+
before { target_klass.no_alarm = true }
|
61
|
+
it { expect(target_klass::NO_ALARM).to eq true }
|
62
|
+
end
|
56
63
|
end
|
data/spec/rbtclk_spec.rb
CHANGED
@@ -28,7 +28,8 @@ RSpec.describe Rbtclk do
|
|
28
28
|
font: "clb8x8",
|
29
29
|
format: "%X",
|
30
30
|
color: "black",
|
31
|
-
time: "180"
|
31
|
+
time: "180",
|
32
|
+
no_alarm: false}
|
32
33
|
end
|
33
34
|
|
34
35
|
before do
|
@@ -60,31 +61,35 @@ RSpec.describe Rbtclk do
|
|
60
61
|
describe "#remove_extra_params" do
|
61
62
|
context "params contains :mode value" do
|
62
63
|
let(:params_that_has_no_mode) do
|
63
|
-
filled_params.
|
64
|
-
|
64
|
+
dup_params = filled_params.dup
|
65
|
+
dup_params.delete(:mode)
|
66
|
+
dup_params
|
65
67
|
end
|
66
68
|
|
67
|
-
let(:
|
68
|
-
params_that_has_no_mode.
|
69
|
-
|
69
|
+
let(:params_that_has_no_mode_and_no_time_and_no_alarm) do
|
70
|
+
dup_params = params_that_has_no_mode.dup
|
71
|
+
dup_params.delete(:time)
|
72
|
+
dup_params.delete(:no_alarm)
|
73
|
+
dup_params
|
70
74
|
end
|
71
75
|
|
72
76
|
context "mode is clock" do
|
73
77
|
specify ":mode and :time values are removed" do
|
74
78
|
Rbtclk.remove_extra_params(filled_params)
|
75
|
-
expect(filled_params).to
|
79
|
+
expect(filled_params).to eql params_that_has_no_mode_and_no_time_and_no_alarm
|
76
80
|
end
|
77
81
|
end
|
78
82
|
|
79
83
|
context "mode is countdown" do
|
80
84
|
let(:filled_params_whose_mode_is_clock) do
|
81
|
-
|
82
|
-
|
85
|
+
dup_params = filled_params.dup
|
86
|
+
dup_params[:mode] = "countdown"
|
87
|
+
dup_params
|
83
88
|
end
|
84
89
|
|
85
90
|
specify ":mode and :time values are removed" do
|
86
|
-
Rbtclk.remove_extra_params(
|
87
|
-
expect(filled_params_whose_mode_is_clock).to
|
91
|
+
Rbtclk.remove_extra_params(filled_params_whose_mode_is_clock)
|
92
|
+
expect(filled_params_whose_mode_is_clock).to eql params_that_has_no_mode
|
88
93
|
end
|
89
94
|
end
|
90
95
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbtclk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Moza USANE
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -131,8 +131,10 @@ files:
|
|
131
131
|
- lib/rbtclk/config_loader.rb
|
132
132
|
- lib/rbtclk/countdown_timer.rb
|
133
133
|
- lib/rbtclk/countup_timer.rb
|
134
|
+
- lib/rbtclk/sound_player.rb
|
134
135
|
- lib/rbtclk/version.rb
|
135
136
|
- rbtclk.gemspec
|
137
|
+
- sound/bell.mp3
|
136
138
|
- spec/rbtclk/color_code_spec.rb
|
137
139
|
- spec/rbtclk/config_loader_spec.rb
|
138
140
|
- spec/rbtclk_spec.rb
|