ruby-progressbar-cli 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b07766838b70806f80a3c0b8ae10e48b3658c55d
4
+ data.tar.gz: fd53590cd4e7a75dc2d855a30e92cd619bfb6cfa
5
+ SHA512:
6
+ metadata.gz: 3ccd349bc063383cc214c3ea31ed843c2ca01806bbf6c46c1423b4b705486669ca79ffff32e0b0547d5610a7d6f4ab859251b940ae7add6a3f2d1d551f1b9aec
7
+ data.tar.gz: 07adf7e3dacad3da7954a35fda28576a972f14249dd0fcc5f6e4f3732c3fdeffd17eb72906338ec0bb79933d0e74d329c0bfd75150e240b924839e87323954e2
@@ -0,0 +1,51 @@
1
+ require_relative 'string_format'
2
+
3
+ class ProgressBar
4
+
5
+ attr_reader :percentage
6
+
7
+ def initialize(title: "Progress", count: 100)
8
+ @start_time = Time.now
9
+ @percentage = 0
10
+ @initial_string = "\u2591" * 50
11
+ @title = title
12
+ @count = count
13
+ end
14
+
15
+ def percentage=(value)
16
+ @percentage = value
17
+ increment(0)
18
+ end
19
+
20
+ def increment(value = 1)
21
+ unless value.zero?
22
+ @percentage += value * 100.0 / @count
23
+ error_check(@percentage)
24
+ end
25
+ rounded_percentage = @percentage.round(5)
26
+ normalized_percentage = rounded_percentage.to_i / 2
27
+ progress = "\u2588" * normalized_percentage
28
+ remaining = @initial_string[normalized_percentage..49]
29
+ print "\r#{@title}: #{progress.green}#{remaining} #{rounded_percentage.to_i}%"
30
+ puts "\nCompleted in #{time_taken}" if rounded_percentage == 100
31
+ end
32
+
33
+ private
34
+
35
+ def time_taken
36
+ seconds = (Time.now - @start_time).round
37
+ if seconds < 60
38
+ "#{seconds}s"
39
+ elsif seconds < 3600
40
+ "#{seconds / 60}m #{seconds % 60}s"
41
+ else
42
+ "#{seconds / 3600}h #{(seconds / 60) % 60}m #{seconds % 60}s"
43
+ end
44
+ end
45
+
46
+ def error_check(value)
47
+ return if value.is_a?(Numeric) && value.between?(0, 100)
48
+ raise ArgumentError, 'Value must be a number between 0 and 100'
49
+ end
50
+
51
+ end
@@ -0,0 +1,89 @@
1
+ class String
2
+ # foreground colors
3
+ def black
4
+ "\e[30m#{self}\e[0m"
5
+ end
6
+
7
+ def red
8
+ "\e[31m#{self}\e[0m"
9
+ end
10
+
11
+ def green
12
+ "\e[32m#{self}\e[0m"
13
+ end
14
+
15
+ def yellow
16
+ "\e[33m#{self}\e[0m"
17
+ end
18
+
19
+ def blue
20
+ "\e[34m#{self}\e[0m"
21
+ end
22
+
23
+ def pink
24
+ "\e[35m#{self}\e[0m"
25
+ end
26
+
27
+ def light_blue
28
+ "\e[36m#{self}\e[0m"
29
+ end
30
+
31
+ def grey
32
+ "\e[37m#{self}\e[0m"
33
+ end
34
+
35
+ # back ground colors
36
+ def bg_black
37
+ "\e[40m#{self}\e[0m"
38
+ end
39
+
40
+ def bg_red
41
+ "\e[41m#{self}\e[0m"
42
+ end
43
+
44
+ def bg_green
45
+ "\e[42m#{self}\e[0m"
46
+ end
47
+
48
+ def bg_brown
49
+ "\e[43m#{self}\e[0m"
50
+ end
51
+
52
+ def bg_blue
53
+ "\e[44m#{self}\e[0m"
54
+ end
55
+
56
+ def bg_magenta
57
+ "\e[45m#{self}\e[0m"
58
+ end
59
+
60
+ def bg_cyan
61
+ "\e[46m#{self}\e[0m"
62
+ end
63
+
64
+ def bg_gray
65
+ "\e[47m#{self}\e[0m"
66
+ end
67
+
68
+ # formatting
69
+ def bold
70
+ "\e[1m#{self}\e[22m"
71
+ end
72
+
73
+ def italic
74
+ "\e[3m#{self}\e[23m"
75
+ end
76
+
77
+ def underline
78
+ "\e[4m#{self}\e[24m"
79
+ end
80
+
81
+ def blink
82
+ "\e[5m#{self}\e[25m"
83
+ end
84
+
85
+ def reverse_color
86
+ "\e[7m#{self}\e[27m"
87
+ end
88
+
89
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby-progressbar-cli
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Tony Sunny
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-06-01 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple library to display progressbar in stdout.
14
+ email: tonysunnymails@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/progress_bar.rb
20
+ - lib/string_format.rb
21
+ homepage:
22
+ licenses:
23
+ - NGPL
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 2.6.12
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: Progress Bar is a simple library to display progress bar in terminal.
45
+ test_files: []