Skip to content

Commit b3e6465

Browse files
Merge pull request #8 from Souravgoswami/PrettifyBytes_Update
Prettify bytes update
2 parents 48210df + 38d5d36 commit b3e6465

File tree

1 file changed

+66
-68
lines changed

1 file changed

+66
-68
lines changed

lib/linux_stat/prettify_bytes.rb

Lines changed: 66 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,24 @@ module LinuxStat
88

99
module PrettifyBytes
1010
# Kilo = Kilobyte (1000 - 1), and so on...
11-
# 8.times { |x| puts 1000.**(x.next).to_s << '.00' }
12-
KILO = 1000.00
13-
MEGA = 1000000.00
14-
GIGA = 1000000000.00
15-
TERA = 1000000000000.00
16-
PETA = 1000000000000000.00
17-
EXA = 1000000000000000000.00
18-
ZETTA = 1000000000000000000000.00
19-
YOTTA = 1000000000000000000000000.00
11+
KILO = 1e3
12+
MEGA = 1e6
13+
GIGA = 1e9
14+
TERA = 1e12
15+
PETA = 1e15
16+
EXA = 1e18
17+
ZETTA = 1e21
18+
YOTTA = 1e24
2019

2120
# Binary suffixes
22-
# 8.times { |x| puts 1024.**(x.next).to_s << '.00' }
23-
KIBI = 1024.00
24-
MEBI = 1048576.00
25-
GIBI = 1073741824.00
26-
TEBI = 1099511627776.00
27-
PEBI = 1125899906842624.00
28-
EXBI = 1152921504606846976.00
29-
ZEBI = 1180591620717411303424.00
30-
YOBI = 1208925819614629174706176.00
21+
KIBI = 1024.0
22+
MEBI = KIBI ** 2
23+
GIBI = KIBI ** 3
24+
TEBI = KIBI ** 4
25+
PEBI = KIBI ** 5
26+
EXBI = KIBI ** 6
27+
ZEBI = KIBI ** 7
28+
YOBI = KIBI ** 8
3129

3230
class << self
3331
##
@@ -50,28 +48,36 @@ def convert_decimal(n, precision: 2)
5048
"#{"%.#{precision}f" % n} byte#{?s.freeze if n != 1}"
5149
elsif n < MEGA
5250
n /= KILO
53-
"#{"%.#{precision}f" % n} kilobyte#{?s.freeze if n != 1}"
51+
n = n.round(precision)
52+
%(#{"%.#{precision}f" % n} kilobyte#{?s.freeze if n. != 1})
5453
elsif n < GIGA
5554
n /= MEGA
56-
"#{"%.#{precision}f" % n} megabyte#{?s.freeze if n != 1}"
55+
n = n.round(precision)
56+
%(#{"%.#{precision}f" % n} megabyte#{?s.freeze if n != 1})
5757
elsif n < TERA
5858
n /= GIGA
59-
"#{"%.#{precision}f" % n} gigabyte#{?s.freeze if n != 1}"
59+
n = n.round(precision)
60+
%(#{"%.#{precision}f" % n} gigabyte#{?s.freeze if n != 1})
6061
elsif n < PETA
6162
n /= TERA
62-
"#{"%.#{precision}f" % n} terabyte#{?s.freeze if n != 1}"
63+
n = n.round(precision)
64+
%(#{"%.#{precision}f" % n} terabyte#{?s.freeze if n != 1})
6365
elsif n < EXA
6466
n /= PETA
65-
"#{"%.#{precision}f" % n} petabyte#{?s.freeze if n != 1}"
67+
n = n.round(precision)
68+
%(#{"%.#{precision}f" % n} petabyte#{?s.freeze if n != 1})
6669
elsif n < ZETTA
6770
n /= EXA
68-
"#{"%.#{precision}f" % n} exabyte#{?s.freeze if n != 1}"
71+
n = n.round(precision)
72+
%(#{"%.#{precision}f" % n} exabyte#{?s.freeze if n != 1})
6973
elsif n < YOTTA
7074
n /= ZETTA
71-
"#{"%.#{precision}f" % n} zettabyte#{?s.freeze if n != 1}"
75+
n = n.round(precision)
76+
%(#{"%.#{precision}f" % n} zettabyte#{?s.freeze if n != 1})
7277
else
7378
n /= YOTTA
74-
"#{"%.#{precision}f" % n} yottabyte#{?s.freeze if n != 1}"
79+
n = n.round(precision)
80+
%(#{"%.#{precision}f" % n} yottabyte#{?s.freeze if n != 1})
7581
end
7682
end
7783

@@ -91,31 +97,39 @@ def convert_decimal(n, precision: 2)
9197
# => "1.0 gibibyte"
9298
def convert_binary(n, precision: 2)
9399
if n < KIBI
94-
"#{"%.#{precision}f" % n} byte#{?s.freeze if n != 1}"
100+
%Q(#{"%.#{precision}f" % n} byte#{?s.freeze if n != 1})
95101
elsif n < MEBI
96102
n /= KIBI
97-
"#{"%.#{precision}f" % n} kibibyte#{?s.freeze if n != 1}"
103+
n = n.round(precision)
104+
%Q(#{"%.#{precision}f" % n} kibibyte#{?s.freeze if n != 1})
98105
elsif n < GIBI
99106
n /= MEBI
100-
"#{"%.#{precision}f" % n} mebibyte#{?s.freeze if n != 1}"
107+
n = n.round(precision)
108+
%Q(#{"%.#{precision}f" % n} mebibyte#{?s.freeze if n != 1})
101109
elsif n < TEBI
102110
n /= GIBI
103-
"#{"%.#{precision}f" % n} gibibyte#{?s.freeze if n != 1}"
111+
n = n.round(precision)
112+
%Q(#{"%.#{precision}f" % n} gibibyte#{?s.freeze if n != 1})
104113
elsif n < PEBI
105114
n /= TEBI
106-
"#{"%.#{precision}f" % n} tebibyte#{?s.freeze if n != 1}"
115+
n = n.round(precision)
116+
%Q(#{"%.#{precision}f" % n} tebibyte#{?s.freeze if n != 1})
107117
elsif n < EXBI
108118
n /= PEBI
109-
"#{"%.#{precision}f" % n} pebibyte#{?s.freeze if n != 1}"
119+
n = n.round(precision)
120+
%Q(#{"%.#{precision}f" % n} pebibyte#{?s.freeze if n != 1})
110121
elsif n < ZEBI
111122
n /= EXBI
112-
"#{"%.#{precision}f" % n} exbiyte#{?s.freeze if n != 1}"
123+
n = n.round(precision)
124+
%Q(#{"%.#{precision}f" % n} exbiyte#{?s.freeze if n != 1})
113125
elsif n < YOBI
114126
n /= ZEBI
115-
"#{"%.#{precision}f" % n} zebibyte#{?s.freeze if n != 1}"
127+
n = n.round(precision)
128+
%Q(#{"%.#{precision}f" % n} zebibyte#{?s.freeze if n != 1})
116129
else
117130
n /= YOBI
118-
"#{"%.#{precision}f" % n} yobibyte#{?s.freeze if n != 1}"
131+
n = n.round(precision)
132+
%Q(#{"%.#{precision}f" % n} yobibyte#{?s.freeze if n != 1})
119133
end
120134
end
121135

@@ -137,29 +151,21 @@ def convert_short_decimal(n, precision: 2)
137151
if n < KILO
138152
"#{"%.#{precision}f" % n} B"
139153
elsif n < MEGA
140-
n /= KILO
141-
"#{"%.#{precision}f" % n} kB"
154+
%(#{"%.#{precision}f" % n.fdiv(KILO)} kB)
142155
elsif n < GIGA
143-
n /= MEGA
144-
"#{"%.#{precision}f" % n} MB"
156+
%(#{"%.#{precision}f" % n.fdiv(MEGA)} MB)
145157
elsif n < TERA
146-
n /= GIGA
147-
"#{"%.#{precision}f" % n} GB"
158+
%(#{"%.#{precision}f" % n.fdiv(GIGA)} GB)
148159
elsif n < PETA
149-
n /= TERA
150-
"#{"%.#{precision}f" % n} TB"
160+
%(#{"%.#{precision}f" % n.fdiv(TERA)} TB)
151161
elsif n < EXA
152-
n /= PETA
153-
"#{"%.#{precision}f" % n} PB"
162+
%(#{"%.#{precision}f" % n.fdiv(PETA)} PB)
154163
elsif n < ZETTA
155-
n /= EXA
156-
"#{"%.#{precision}f" % n} EB"
164+
%(#{"%.#{precision}f" % n.fdiv(EXA)} EB)
157165
elsif n < YOTTA
158-
n /= ZETTA
159-
"#{"%.#{precision}f" % n} ZB"
166+
%(#{"%.#{precision}f" % n.fdiv(ZETTA)} ZB)
160167
else
161-
n /= YOTTA
162-
"#{"%.#{precision}f" % n} YB"
168+
%(#{"%.#{precision}f" % n.fdiv(YOTTA)} YB)
163169
end
164170
end
165171

@@ -181,31 +187,23 @@ def convert_short_decimal(n, precision: 2)
181187
# => "1.0 GiB"
182188
def convert_short_binary(n, precision: 2)
183189
if n < KIBI
184-
"#{"%.#{precision}f" % n} B"
190+
%(#{"%.#{precision}f" % n} B)
185191
elsif n < MEBI
186-
n /= KIBI
187-
"#{"%.#{precision}f" % n} KiB"
192+
%(#{"%.#{precision}f" % n.fdiv(KIBI)} KiB)
188193
elsif n < GIBI
189-
n /= MEBI
190-
"#{"%.#{precision}f" % n} MiB"
194+
%(#{"%.#{precision}f" % n.fdiv(MEBI)} MiB)
191195
elsif n < TEBI
192-
n /= GIBI
193-
"#{"%.#{precision}f" % n} GiB"
196+
%(#{"%.#{precision}f" % n.fdiv(GIBI)} GiB)
194197
elsif n < PEBI
195-
n /= TEBI
196-
"#{"%.#{precision}f" % n} TiB"
198+
%(#{"%.#{precision}f" % n.fdiv(TEBI)} TiB)
197199
elsif n < EXBI
198-
n /= PEBI
199-
"#{"%.#{precision}f" % n} PiB"
200+
%(#{"%.#{precision}f" % n.fdiv(PEBI)} PiB)
200201
elsif n < ZEBI
201-
n /= EXBI
202-
"#{"%.#{precision}f" % n} EiB"
202+
%(#{"%.#{precision}f" % n.fdiv(EXBI)} EiB)
203203
elsif n < YOBI
204-
n /= ZEBI
205-
"#{"%.#{precision}f" % n} ZiB"
204+
%(#{"%.#{precision}f" % n.fdiv(ZEBI)} ZiB)
206205
else
207-
n /= YOBI
208-
"#{"%.#{precision}f" % n} YiB"
206+
%(#{"%.#{precision}f" % n.fdiv(YOBI)} YiB)
209207
end
210208
end
211209
end

0 commit comments

Comments
 (0)