human_size 1.0.0 → 1.1.0
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 +4 -4
- data/CHANGELOG.md +9 -1
- data/README.md +7 -1
- data/example/example.rb +1 -3
- data/lib/human_size/overloads.rb +8 -0
- data/lib/human_size/version.rb +2 -2
- data/lib/human_size.rb +41 -66
- data/spec/human_size_spec.rb +15 -48
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 11fdc48e4306cd561cf09deda15f67b526acb8adb0deb28d1ffcf58f507fa77e
|
4
|
+
data.tar.gz: f5acea948b763c92736eb551e8de1ac25cd9630bb8cfcc670d55d8270789246e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f809185a8dbca0ad88a031ab084ccbe67080757cf39b42759fe1c6def90e56d3053924ce0de6fdaa2d26ea147043bbe251cd5ac6fc686f72fff0c6f99f2b92e6
|
7
|
+
data.tar.gz: 36bc70e14dd5f6dfb069f87fd0f778ab08e2ea16b043ccb49c5dbf3fec233a628aed11d722a1ae8d02134b985935d4947bf7df60a16eb18aa7fe6d1ad7ad145b
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,12 @@
|
|
1
|
-
## 1.
|
1
|
+
## 1.1.0 (January 24, 2019)
|
2
|
+
|
3
|
+
IMPROVEMENTS:
|
4
|
+
|
5
|
+
* Move the code inside of a module namespace. ([@TGWolf][])
|
6
|
+
* Extend the integer class so that int.human_size works. ([@TGWolf][])
|
7
|
+
* Update the documentation. ([@TGWolf][])
|
8
|
+
|
9
|
+
## 1.0.0 (January 18, 2019)
|
2
10
|
|
3
11
|
* Initial Release ([@TGWolf][])
|
4
12
|
|
data/README.md
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
# Human Size
|
10
10
|
|
11
|
-
|
11
|
+
Convert the number of bytes into a more human readable format.
|
12
12
|
|
13
13
|
## Installation
|
14
14
|
|
@@ -29,7 +29,13 @@ Or install it yourself as:
|
|
29
29
|
## Usage
|
30
30
|
|
31
31
|
```ruby
|
32
|
+
require 'human_size'
|
32
33
|
|
34
|
+
puts Humansize::Size.human_size(10)
|
35
|
+
|
36
|
+
# or
|
37
|
+
|
38
|
+
puts 10.human_size
|
33
39
|
```
|
34
40
|
|
35
41
|
## Development
|
data/example/example.rb
CHANGED
@@ -7,10 +7,8 @@ test_value = [-10, 0, 9, 98, 987, 987_6, 987_65, 987_654, 987_654_3, 987_654_32,
|
|
7
7
|
printf "\t%20s | %20s | %20s |\n", 'Original', 'Binary', 'Si'
|
8
8
|
printf "\t%20s + %20s + %20s +\n", '-' * 20, '-' * 20, '-' * 20
|
9
9
|
|
10
|
-
h = HumanSize.new
|
11
|
-
|
12
10
|
test_value.each do |x|
|
13
|
-
printf "\t%20s | %20s | %20s |\n", x,
|
11
|
+
printf "\t%20s | %20s | %20s |\n", x, x.human_size, x.human_size(false)
|
14
12
|
end
|
15
13
|
|
16
14
|
printf "\t%20s + %20s + %20s +\n", '-' * 20, '-' * 20, '-' * 20
|
data/lib/human_size/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
VERSION = '1.
|
1
|
+
module HumanSize
|
2
|
+
VERSION = '1.1.0'.freeze
|
3
3
|
end
|
data/lib/human_size.rb
CHANGED
@@ -1,68 +1,43 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
|
8
|
-
|
9
|
-
#
|
10
|
-
#
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
#
|
41
|
-
|
42
|
-
# Unit prefixes used for binary file sizes.
|
43
|
-
'BINARY' => ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'Pib', 'EiB', 'ZiB', 'YiB']
|
44
|
-
}
|
45
|
-
|
46
|
-
return 'unknown' if bytes < 0
|
47
|
-
return '0.0 B' if bytes.zero?
|
48
|
-
|
49
|
-
units = if a_kilobyte_is_1024_bytes
|
50
|
-
suffixes_table['BINARY']
|
51
|
-
else
|
52
|
-
suffixes_table['SI']
|
53
|
-
end
|
54
|
-
|
55
|
-
multiple = if a_kilobyte_is_1024_bytes
|
56
|
-
1024
|
57
|
-
else
|
58
|
-
1000
|
59
|
-
end
|
60
|
-
|
61
|
-
exp = (Math.log(bytes) / Math.log(multiple)).to_i
|
62
|
-
exp = units.length if exp > units.length
|
63
|
-
|
64
|
-
# rubocop:disable Layout/SpaceAroundOperators
|
65
|
-
format('%<bytes>.1f %<unit>s', bytes: bytes.to_f / multiple ** exp, unit: units[exp])
|
66
|
-
# rubocop:enable Layout/SpaceAroundOperators
|
1
|
+
require_relative 'human_size/version'
|
2
|
+
require_relative 'human_size/overloads'
|
3
|
+
|
4
|
+
#
|
5
|
+
# Add docs
|
6
|
+
#
|
7
|
+
module HumanSize
|
8
|
+
#
|
9
|
+
# Add docs
|
10
|
+
#
|
11
|
+
class Size
|
12
|
+
def self.human_size(bytes, a_kilobyte_is_1024_bytes = true)
|
13
|
+
suffixes_table = {
|
14
|
+
# Unit prefixes used for SI file sizes.
|
15
|
+
'SI' => ['B', 'KB', 'MB', 'GB', 'TB', 'Pb', 'EB', 'ZB', 'YB'],
|
16
|
+
# Unit prefixes used for binary file sizes.
|
17
|
+
'BINARY' => ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'Pib', 'EiB', 'ZiB', 'YiB']
|
18
|
+
}
|
19
|
+
|
20
|
+
return 'unknown' if bytes < 0
|
21
|
+
return '0.0 B' if bytes.zero?
|
22
|
+
|
23
|
+
units = if a_kilobyte_is_1024_bytes
|
24
|
+
suffixes_table['BINARY']
|
25
|
+
else
|
26
|
+
suffixes_table['SI']
|
27
|
+
end
|
28
|
+
|
29
|
+
multiple = if a_kilobyte_is_1024_bytes
|
30
|
+
1024
|
31
|
+
else
|
32
|
+
1000
|
33
|
+
end
|
34
|
+
|
35
|
+
exp = (Math.log(bytes) / Math.log(multiple)).to_i
|
36
|
+
exp = units.length if exp > units.length
|
37
|
+
|
38
|
+
# rubocop:disable Layout/SpaceAroundOperators
|
39
|
+
format('%<bytes>.1f %<unit>s', bytes: bytes.to_f / multiple ** exp, unit: units[exp])
|
40
|
+
# rubocop:enable Layout/SpaceAroundOperators
|
41
|
+
end
|
67
42
|
end
|
68
43
|
end
|
data/spec/human_size_spec.rb
CHANGED
@@ -7,99 +7,66 @@ RSpec.describe HumanSize do
|
|
7
7
|
expect(HumanSize::VERSION).not_to be nil
|
8
8
|
end
|
9
9
|
|
10
|
-
context 'Class
|
10
|
+
context 'Class Accessor Method' do
|
11
11
|
before(:each) do
|
12
|
-
@
|
12
|
+
@hs = HumanSize::Size
|
13
13
|
end
|
14
14
|
|
15
15
|
context 'Binary (1024 bytes per Megabyte)) mode' do
|
16
16
|
it 'says unknown for bytes < 0' do
|
17
|
-
expect(@
|
17
|
+
expect(@hs.human_size(-1)).to eql('unknown')
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'says 0.0 B for 0 bytes' do
|
21
|
-
expect(@
|
21
|
+
expect(@hs.human_size(0)).to eql('0.0 B')
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'says 941.9 MiB for 987654321 bytes' do
|
25
|
-
expect(@
|
25
|
+
expect(@hs.human_size(987_654_321)).to eql('941.9 MiB')
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
29
|
context 'SI (1000 bytes per Megabyte) mode' do
|
30
30
|
it 'says unknown for bytes < 0' do
|
31
|
-
expect(@
|
31
|
+
expect(@hs.human_size(-1, false)).to eql('unknown')
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'says 0.0 B for 0 bytes' do
|
35
|
-
expect(@
|
35
|
+
expect(@hs.human_size(0, false)).to eql('0.0 B')
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'says 987.7 MB for 987654321 bytes' do
|
39
|
-
expect(@
|
39
|
+
expect(@hs.human_size(987_654_321, false)).to eql('987.7 MB')
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
context '
|
45
|
-
before(:each) do
|
46
|
-
@h = HumanSizeStatic
|
47
|
-
end
|
48
|
-
|
44
|
+
context 'String Accessor Method' do
|
49
45
|
context 'Binary (1024 bytes per Megabyte)) mode' do
|
50
46
|
it 'says unknown for bytes < 0' do
|
51
|
-
expect(
|
47
|
+
expect(-1.human_size).to eql('unknown')
|
52
48
|
end
|
53
49
|
|
54
50
|
it 'says 0.0 B for 0 bytes' do
|
55
|
-
expect(
|
51
|
+
expect(0.human_size).to eql('0.0 B')
|
56
52
|
end
|
57
53
|
|
58
54
|
it 'says 941.9 MiB for 987654321 bytes' do
|
59
|
-
expect(
|
55
|
+
expect(987_654_321.human_size).to eql('941.9 MiB')
|
60
56
|
end
|
61
57
|
end
|
62
58
|
|
63
59
|
context 'SI (1000 bytes per Megabyte)) mode' do
|
64
60
|
it 'says unknown for bytes < 0' do
|
65
|
-
expect(
|
66
|
-
end
|
67
|
-
|
68
|
-
it 'says 0.0 B for 0 bytes' do
|
69
|
-
expect(@h.human_size(0, false)).to eql('0.0 B')
|
70
|
-
end
|
71
|
-
|
72
|
-
it 'says 987.7 MB for 987654321 bytes' do
|
73
|
-
expect(@h.human_size(987_654_321, false)).to eql('987.7 MB')
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
context 'Direct method access' do
|
79
|
-
context 'Binary (1024 bytes per Megabyte)) mode' do
|
80
|
-
it 'says unknown for bytes < 0' do
|
81
|
-
expect(human_size(-1)).to eql('unknown')
|
82
|
-
end
|
83
|
-
|
84
|
-
it 'says 0.0 B for 0 bytes' do
|
85
|
-
expect(human_size(0)).to eql('0.0 B')
|
86
|
-
end
|
87
|
-
|
88
|
-
it 'says 941.9 MiB for 987654321 bytes' do
|
89
|
-
expect(human_size(987_654_321)).to eql('941.9 MiB')
|
90
|
-
end
|
91
|
-
end
|
92
|
-
context 'SI (1000 bytes per Megabyte)) mode' do
|
93
|
-
it 'says unknown for bytes < 0' do
|
94
|
-
expect(human_size(-1, false)).to eql('unknown')
|
61
|
+
expect(-1.human_size(false)).to eql('unknown')
|
95
62
|
end
|
96
63
|
|
97
64
|
it 'says 0.0 B for 0 bytes' do
|
98
|
-
expect(human_size(
|
65
|
+
expect(0.human_size(false)).to eql('0.0 B')
|
99
66
|
end
|
100
67
|
|
101
68
|
it 'says 987.7 MB for 987654321 bytes' do
|
102
|
-
expect(human_size(
|
69
|
+
expect(987_654_321.human_size(false)).to eql('987.7 MB')
|
103
70
|
end
|
104
71
|
end
|
105
72
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: human_size
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Gurney aka Wolf
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-01-
|
11
|
+
date: 2019-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -76,6 +76,7 @@ files:
|
|
76
76
|
- example/example.rb
|
77
77
|
- human_size.gemspec
|
78
78
|
- lib/human_size.rb
|
79
|
+
- lib/human_size/overloads.rb
|
79
80
|
- lib/human_size/version.rb
|
80
81
|
- spec/human_size_spec.rb
|
81
82
|
- spec/spec_helper.rb
|