rbtclk 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f856f46825997cd5eb17503537fa07efaacf3587
4
- data.tar.gz: 6fae1cb2024b28adf1cdf39e9f5091a77253007d
3
+ metadata.gz: 36989cdcf0479af2abae38d31b549887c9458794
4
+ data.tar.gz: 1c9439e5978b46deb1803ea01fe47210116d2505
5
5
  SHA512:
6
- metadata.gz: 49dcec2a49152a56cad842e01a8984b3c07ff3d13a1445b39bb8c3a8a0d4c99c7c04509df46165f1b235d962db009376b63a349807acd4e7a92ea79e9c738867
7
- data.tar.gz: fd70404e4be93060457f7427f456210ba037b7689d56fcdff7c68c765c2d3c568b49e86686d40f48dbaa9c2bedefa2c13a6e3b813af5157678aec3417acaaea3
6
+ metadata.gz: 93b1399d2fae3bb8e757145d7a0648f42f2ec8d645dbf9d88c6f7c001458368c96a4ef815e4bf4914d3fc0628e2e9a2f500f9647786af85334276c26716fff04
7
+ data.tar.gz: e0d5e06c5eff70e2a69e51f06ca91b73181390bf67ae4050de09bd047fcac42be490e6d52425ed1d6e625eedc9003b5908bace4bebed01bdfeebfba4678e870a
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  A light-weight timer application that can run in terminal emulators :rabbit:
4
4
 
5
+ ![screenshot](https://raw.github.com/wiki/mozamimy/rbtclk/images/screenshot.gif)
6
+
5
7
  ## Requirement
6
8
 
7
9
  - Ruby 2.0 or later.
@@ -135,6 +137,18 @@ $ rbtclk --format "* %H:%M *"
135
137
  # # ## #### ## #### #### # #
136
138
  ```
137
139
 
140
+ ### Enable color
141
+
142
+ Rbtclk can show clock with ANSI colors.
143
+ Black(default), red, green, yellow, blue, magenta, cyan and white are available.
144
+
145
+ #### Example
146
+
147
+ ```shell
148
+ $ rbtclk -c magenta
149
+ $ rbtclk --color magenta
150
+ ```
151
+
138
152
  ## Progress Report
139
153
 
140
154
  - [x] Clock
data/lib/rbtclk.rb CHANGED
@@ -1,4 +1,3 @@
1
- require "curses"
2
1
  require "optparse"
3
2
  require "rbtclk/version"
4
3
  require "rbtclk/clock"
@@ -13,16 +12,31 @@ module Rbtclk
13
12
  opt.on("--mode MODE") { |m| params[:mode] = m }
14
13
  opt.on("--format FORMAT") { |f| params[:format] = f }
15
14
  opt.on("--font FONT") { |f| params[:font] = f }
15
+ opt.on("--version") { |v| params[:version] = v }
16
+ opt.on("--color COLOR") { |c| params[:color] = c }
16
17
 
17
18
  opt.parse!(args)
18
19
  end
19
20
 
20
- case params[:mode] || "clock"
21
+ if params[:version]
22
+ puts Rbtclk::VERSION
23
+ exit
24
+ else
25
+ display_clock(params)
26
+ end
27
+ end
28
+
29
+ def display_clock(params)
30
+ params = fill(params)
31
+
32
+ case params[:mode]
21
33
  when "clock"
22
- timer = Clock.new(font: params[:font] || "clb8x8", format: params[:format] || "%X")
34
+ remove_extra_params(params)
35
+ timer = Clock.new(params)
23
36
  timer.show
24
37
  when "countup"
25
- timer = CountupTimer.new(font: params[:font] || "clb8x8", format: params[:format] || "%X")
38
+ remove_extra_params(params)
39
+ timer = CountupTimer.new(params)
26
40
  timer.show
27
41
  else
28
42
  warn "#{params[:mode]} mode is not supported."
@@ -30,5 +44,16 @@ module Rbtclk
30
44
  exit(1)
31
45
  end
32
46
  end
47
+
48
+ def fill(params)
49
+ {mode: params[:mode] || "clock",
50
+ font: params[:font] || "clb8x8",
51
+ format: params[:format] || "%X",
52
+ color: params[:color] || "black"}
53
+ end
54
+
55
+ def remove_extra_params(params)
56
+ params.delete(:mode)
57
+ end
33
58
  end
34
59
  end
data/lib/rbtclk/clock.rb CHANGED
@@ -1,15 +1,22 @@
1
1
  require "artii"
2
2
  require "curses"
3
+ require "rbtclk/color_code"
3
4
 
4
5
  module Rbtclk
5
6
  class Clock
6
- def initialize(font: "clb8x8", format: "%X")
7
+ include ColorCode
8
+
9
+ def initialize(font: "clb8x8", format: "%X", color: "black")
7
10
  @artii = Artii::Base.new(font: font)
8
11
  @format = format
12
+ @color = color
9
13
  end
10
14
 
11
15
  def show
12
16
  Curses.init_screen
17
+ Curses.start_color
18
+ Curses.use_default_colors
19
+ Curses.init_pair(1, translate(@color), -1)
13
20
  Curses.curs_set(0)
14
21
 
15
22
  begin
@@ -41,6 +48,7 @@ module Rbtclk
41
48
  def refresh
42
49
  Curses.clear
43
50
  Curses.setpos(0, 0)
51
+ Curses.attron(Curses.color_pair(1))
44
52
  Curses.addstr(@artii.asciify(Time.now.strftime(@format)))
45
53
  Curses.refresh
46
54
  end
@@ -0,0 +1,10 @@
1
+ require "curses"
2
+
3
+ module Rbtclk
4
+ module ColorCode
5
+ def translate(color_name)
6
+ color_name = color_name.to_s
7
+ Curses.const_get("COLOR_#{color_name.upcase}")
8
+ end
9
+ end
10
+ end
@@ -1,17 +1,25 @@
1
1
  require "artii"
2
2
  require "curses"
3
3
  require "time"
4
+ require "rbtclk/color_code"
4
5
 
5
6
  module Rbtclk
6
7
  class CountupTimer
7
- def initialize(font: "clb8x8", format: "%X")
8
- @artii = Artii::Base.new(font: font, format: "%X")
8
+ include ColorCode
9
+
10
+ def initialize(font: "clb8x8", format: "%X", color: "black")
11
+ @artii = Artii::Base.new(font: font)
9
12
  @format = format
13
+ @color = color
10
14
  end
11
15
 
12
16
  def show
13
17
  Curses.init_screen
18
+ Curses.start_color
19
+ Curses.use_default_colors
20
+ Curses.init_pair(1, translate(@color), -1)
14
21
  Curses.curs_set(0)
22
+
15
23
  @start_time = Time.now
16
24
 
17
25
  begin
@@ -26,7 +34,8 @@ module Rbtclk
26
34
  loop do
27
35
  case Curses.getch
28
36
  when "q"
29
- exit
37
+ Thread.kill(view_thread)
38
+ Thread.kill(input_thread)
30
39
  end
31
40
  end
32
41
  end
@@ -42,6 +51,7 @@ module Rbtclk
42
51
  def refresh
43
52
  Curses.clear
44
53
  Curses.setpos(0, 0)
54
+ Curses.attron(Curses.color_pair(1))
45
55
  Curses.addstr(@artii.asciify((Time.parse("1/1") + (Time.now - @start_time)).strftime(@format)))
46
56
  Curses.refresh
47
57
  end
@@ -1,3 +1,3 @@
1
1
  module Rbtclk
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,18 @@
1
+ require "spec_helper"
2
+ require "curses"
3
+
4
+ RSpec.describe Rbtclk::ColorCode do
5
+ include Rbtclk::ColorCode
6
+
7
+ describe "#translate" do
8
+ context "the argument is string" do
9
+ subject { translate("magenta") }
10
+ it { expect(subject).to eq Curses::COLOR_MAGENTA }
11
+ end
12
+
13
+ context "the argument is symbol" do
14
+ subject { translate(:magenta) }
15
+ it { expect(subject).to eq Curses::COLOR_MAGENTA }
16
+ end
17
+ end
18
+ end
data/spec/rbtclk_spec.rb CHANGED
@@ -1,5 +1,52 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  RSpec.describe Rbtclk do
4
- pending "Write later."
4
+ describe "#run" do
5
+ pending "this is pending bcause on the issue#3 (https://github.com/mozamimy/rbtclk/issues/3)"
6
+ end
7
+
8
+ describe "#display_clock" do
9
+ pending "this is pending bcause on the issue#3 (https://github.com/mozamimy/rbtclk/issues/3)"
10
+ end
11
+
12
+ describe "methods related with params" do
13
+ let(:filled_params) do
14
+ {mode: "clock",
15
+ font: "clb8x8",
16
+ format: "%X",
17
+ color: "black"}
18
+ end
19
+
20
+ describe "#fill" do
21
+ context "there are no blank elements in the argument" do
22
+ subject { Rbtclk.fill(filled_params) }
23
+ it { expect(subject).to eq filled_params }
24
+ end
25
+
26
+ context "there in a blank element in the argument" do
27
+ let(:not_filled_params) do
28
+ {mode: "clock",
29
+ font: "clb8x8",
30
+ format: "%X"}
31
+ end
32
+
33
+ subject { Rbtclk.fill(not_filled_params) }
34
+ it { expect(subject).to eq filled_params }
35
+ end
36
+ end
37
+
38
+ describe "#remove_extra_params" do
39
+ let(:params_that_has_no_mode) do
40
+ filled_params.delete(:mode)
41
+ filled_params
42
+ end
43
+
44
+ context "params contains :mode value" do
45
+ specify ":mode value is removed" do
46
+ Rbtclk.remove_extra_params(filled_params)
47
+ expect(filled_params).to eq params_that_has_no_mode
48
+ end
49
+ end
50
+ end
51
+ end
5
52
  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.1.1
4
+ version: 0.2.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: 2014-11-03 00:00:00.000000000 Z
11
+ date: 2014-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -126,9 +126,11 @@ files:
126
126
  - bin/rbtclk
127
127
  - lib/rbtclk.rb
128
128
  - lib/rbtclk/clock.rb
129
+ - lib/rbtclk/color_code.rb
129
130
  - lib/rbtclk/countup_timer.rb
130
131
  - lib/rbtclk/version.rb
131
132
  - rbtclk.gemspec
133
+ - spec/rbtclk/color_code_spec.rb
132
134
  - spec/rbtclk_spec.rb
133
135
  - spec/spec_helper.rb
134
136
  homepage: http://quellencode.org/
@@ -156,5 +158,6 @@ signing_key:
156
158
  specification_version: 4
157
159
  summary: A light-weight timer application that can run in terminal emulators.
158
160
  test_files:
161
+ - spec/rbtclk/color_code_spec.rb
159
162
  - spec/rbtclk_spec.rb
160
163
  - spec/spec_helper.rb