rbtclk 0.3.4 → 0.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.
- 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
|