ruby-progressbar-cli 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.
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: []