simple_countdown 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+