simple_countdown 0.0.1

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.
@@ -0,0 +1,10 @@
1
+ = simple_countdown
2
+
3
+ A small and simple contdown.
4
+
5
+ Usage:
6
+
7
+ require 'simple_countdown'
8
+
9
+ SimpleCountdown.new.show("Time before Rapture", Time.local(2011,"may",21,18,0,0))
10
+
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,85 @@
1
+ class SimpleCountdown
2
+ def initialize
3
+ @progress = 100
4
+ @last_lenght = 8
5
+ end
6
+
7
+ def show(title, end_time)
8
+ block = lambda { sleep 1; sleep 1;sleep 1;sleep 1;sleep 1;sleep 1;sleep 1; sleep 1 while remainding_time() > 0 }
9
+ @title = title
10
+ @end_time = end_time
11
+ @delta = remainding_time()
12
+ print @title + " "
13
+ start_progress
14
+ while remainding_time() > 0
15
+ update
16
+ sleep 1
17
+ # update
18
+ end
19
+ finish_progress
20
+ end
21
+
22
+ def update
23
+ progressbar_length = 106 + @last_lenght + @title.length
24
+ move_cursor = "\e[#{progressbar_length}D"
25
+ print move_cursor + (" " * progressbar_length) + move_cursor
26
+ STDOUT.flush
27
+ print "\e[33m#{@title} \e[0m"
28
+ render_progress(remainding_time_percentage())
29
+ end
30
+
31
+ def method_missing(method, *args, &block)
32
+ @self_before_instance_eval.send method, *args, &block
33
+ end
34
+
35
+ private
36
+
37
+ def format_time (t)
38
+ t = t.to_i
39
+ sec = t % 60
40
+ min = (t / 60) % 60
41
+ hour = t / 3600
42
+ sprintf("%02d:%02d:%02d", hour, min, sec);
43
+ end
44
+
45
+ def render_progress(percent)
46
+ @progress = percent
47
+ printable_time = format_time(remainding_time())
48
+
49
+ print "\e[33m[\e[0m"
50
+
51
+ print "\e[31m=\e[0m" * [[percent.to_i, 46].min, 0].max
52
+ print " " * [46 - [percent.to_i, 46].min, 46].min
53
+ print "\e[33m#{printable_time}\e[0m"
54
+ print "\e[31m=\e[0m" * [percent.to_i - 54, 0].max
55
+ print " " * [46 - (percent.to_i - 54), 46].min
56
+
57
+ print "\e[33m]\e[0m"
58
+
59
+ new_lenght = printable_time.length
60
+ if @last_lenght > new_lenght
61
+ print " " * (@last_lenght - new_lenght)
62
+ print "\e[#{@last_lenght - new_lenght}D"
63
+ end
64
+ @last_lenght = new_lenght
65
+
66
+ STDOUT.flush
67
+ end
68
+
69
+ def start_progress
70
+ # render_progress(100)
71
+ end
72
+
73
+ def finish_progress
74
+ puts
75
+ end
76
+
77
+ def remainding_time_percentage
78
+ remainding_time() * 100 / @delta
79
+ end
80
+
81
+ def remainding_time
82
+ @end_time - Time.now
83
+ end
84
+
85
+ end
@@ -0,0 +1,26 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{simple_countdown}
3
+ s.version = "0.0.1"
4
+
5
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
+ s.authors = ["Roberto Decurnex"]
7
+ s.date = %q{2011-05-20}
8
+ s.description = %q{A countdown for the terminal.}
9
+ s.email = %q{nex.development@gmail.com}
10
+ s.extra_rdoc_files = [
11
+ "README.rdoc"
12
+ ]
13
+ s.files = [
14
+ "README.rdoc",
15
+ "VERSION",
16
+ "lib/simple_countdown.rb",
17
+ "simple_countdown.gemspec",
18
+ ]
19
+ s.homepage = %q{http://github.com/robertodecurnex/simple_cowntdown}
20
+ s.require_paths = ["lib"]
21
+ s.rubygems_version = %q{1.3.7}
22
+ s.summary = %q{A simple countdown}
23
+ s.test_files = [
24
+ ]
25
+ end
26
+
metadata ADDED
@@ -0,0 +1,57 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: simple_countdown
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - Roberto Decurnex
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-05-20 00:00:00 Z
14
+ dependencies: []
15
+
16
+ description: A countdown for the terminal.
17
+ email: nex.development@gmail.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README.rdoc
24
+ files:
25
+ - README.rdoc
26
+ - VERSION
27
+ - lib/simple_countdown.rb
28
+ - simple_countdown.gemspec
29
+ homepage: http://github.com/robertodecurnex/simple_cowntdown
30
+ licenses: []
31
+
32
+ post_install_message:
33
+ rdoc_options: []
34
+
35
+ require_paths:
36
+ - lib
37
+ required_ruby_version: !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: "0"
43
+ required_rubygems_version: !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: "0"
49
+ requirements: []
50
+
51
+ rubyforge_project:
52
+ rubygems_version: 1.7.2
53
+ signing_key:
54
+ specification_version: 3
55
+ summary: A simple countdown
56
+ test_files: []
57
+