filesize 0.1.0 → 0.1.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4a40982cb8ea531ae79dfce2cd06391e4f00f4cd
4
+ data.tar.gz: 1ec01b8c640c1788a4668f1de8ffb1427cbf113e
5
+ SHA512:
6
+ metadata.gz: e039c7cfce3ea31ddf7b013e4250e942d835fa975ee1a8fbda57eda779fea9c4bcec72c6a0763afac893bcbbc02245d74ae2ca98fccd743688c1cdcb8d90373f
7
+ data.tar.gz: 2d208660a67c829b4e3fa2c5a81685a9e65311dfe3f1ba3e12733263bac9b1b54d9a9ba2c0f1c81c3430c1788aea4da3b4c8559294721f582e5c18d57406cbda
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2009 Dominik Honnef
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
File without changes
@@ -3,9 +3,9 @@ class Filesize
3
3
 
4
4
  TYPE_PREFIXES = {
5
5
  # Unit prefixes used for SI file sizes.
6
- SI: %w{k M G T P E Z Y},
6
+ :SI => %w{k M G T P E Z Y},
7
7
  # Unit prefixes used for binary file sizes.
8
- BINARY: %w{Ki Mi Gi Ti Pi Ei Zi Yi}
8
+ :BINARY => %w{Ki Mi Gi Ti Pi Ei Zi Yi}
9
9
  }
10
10
 
11
11
  # @deprecated Please use TYPE_PREFIXES[:SI] instead
@@ -52,7 +52,7 @@ class Filesize
52
52
  to_type = to_parts[:type]
53
53
  size = @bytes
54
54
 
55
- pos = (@type[:prefixes].map { |s| s[0].downcase }.index(prefix.downcase) || -1) + 1
55
+ pos = (@type[:prefixes].map { |s| s[0].chr.downcase }.index(prefix.downcase) || -1) + 1
56
56
 
57
57
  size = size/(to_type[:multiplier].to_f**(pos)) unless pos < 1
58
58
  end
@@ -134,7 +134,7 @@ class Filesize
134
134
 
135
135
  raise ArgumentError, "Unparseable filesize" unless type
136
136
 
137
- offset = (type[:prefixes].map { |s| s[0].downcase }.index(prefix.downcase) || -1) + 1
137
+ offset = (type[:prefixes].map { |s| s[0].chr.downcase }.index(prefix.downcase) || -1) + 1
138
138
 
139
139
  new(size * (type[:multiplier] ** (offset)), type)
140
140
  end
@@ -0,0 +1,162 @@
1
+ require 'spec_helper'
2
+ require 'filesize'
3
+ require 'bigdecimal'
4
+
5
+ describe Filesize do
6
+ describe '::PREFIXES' do
7
+ it 'are the SI prefixes' do
8
+ expect(Filesize::PREFIXES).to eq Filesize::TYPE_PREFIXES[:SI]
9
+ end
10
+ end
11
+
12
+ describe '::SI' do
13
+ it 'has the right multiplier' do
14
+ expect(Filesize::SI[:multiplier]).to eq 1000
15
+ end
16
+
17
+ it 'has the right prefixes' do
18
+ expect(Filesize::SI[:prefixes]).to eq Filesize::TYPE_PREFIXES[:SI]
19
+ end
20
+ end
21
+
22
+ describe '::BINARY' do
23
+ it 'has the right multiplier' do
24
+ expect(Filesize::BINARY[:multiplier]).to eq 1024
25
+ end
26
+
27
+ it 'has the right prefixes' do
28
+ expect(Filesize::BINARY[:prefixes]).to eq Filesize::TYPE_PREFIXES[:BINARY]
29
+ end
30
+ end
31
+
32
+ describe '.from' do
33
+ context 'SI units' do
34
+ it 'parses kilobytes' do
35
+ expect(Filesize.from('1 kB').to).to eq 1000
36
+ end
37
+
38
+ it 'parses megabytes' do
39
+ expect(Filesize.from('1 MB').to).to eq 1000 * 1000
40
+ end
41
+ end
42
+
43
+ context 'BINARY units' do
44
+ it 'parses kilobytes' do
45
+ expect(Filesize.from('1 KiB').to).to eq 1024
46
+ end
47
+
48
+ it 'parses megabytes' do
49
+ expect(Filesize.from('1 MiB').to).to eq 1024 * 1024
50
+ end
51
+ end
52
+ end
53
+
54
+ describe '#to_i' do
55
+ it 'returns the bytes' do
56
+ expect(Filesize.new(555).to_i).to eq 555
57
+ end
58
+ end
59
+
60
+ describe '#to' do
61
+ it 'returns the number of bytes (default)' do
62
+ expect(Filesize.new(555).to).to eq 555
63
+ end
64
+
65
+ it 'returns the number for the specified unit (BINARY)' do
66
+ expect(Filesize.new(1024).to('KiB')).to eq 1.00
67
+ end
68
+
69
+ it 'returns the number for the specified unit (SI)' do
70
+ expect(Filesize.new(1000).to('kB')).to eq 1.00
71
+ end
72
+ end
73
+
74
+ describe "#<=>" do
75
+ it 'compares correctly' do
76
+ [["1024 B", "1025 B", -1],
77
+ ["1025 B", "1024 B", 1],
78
+ ["1024 B", "1024 B", 0],
79
+ ["1024 B", "1 KiB", 0]].each do |left, right, expected|
80
+ expect(Filesize.from(left) <=> Filesize.from(right)).to eq expected
81
+ end
82
+ end
83
+ end
84
+
85
+ describe '#to_s' do
86
+ it 'returns the number of bytes (default) with its unit' do
87
+ expect(Filesize.new(555).to_s).to eq '555.00 B'
88
+ end
89
+
90
+ it 'returns the number of for the specified unit with its unit (BINARY)' do
91
+ expect(Filesize.new(1024).to_s('KiB')).to eq '1.00 KiB'
92
+ end
93
+
94
+ it 'returns the number of for the specified unit with its unit (SI)' do
95
+ expect(Filesize.new(1000).to_s('kB')).to eq '1.00 kB'
96
+ end
97
+ end
98
+
99
+ describe '#pretty' do
100
+ it 'returns the number of the most matching prefix with its unit (BINARY default)' do
101
+ expect(Filesize.new(1024).pretty).to eq '1.00 KiB'
102
+ end
103
+
104
+ it 'returns the number of the most matching prefix with its unit (SI)' do
105
+ expect(Filesize.new(1000, Filesize::SI).pretty).to eq '1.00 kB'
106
+ end
107
+ end
108
+
109
+ describe '::Floppy' do
110
+ it 'has the right size in bytes' do
111
+ expect(Filesize::Floppy.to_i).to eq 1_509_376
112
+ end
113
+ end
114
+
115
+ describe '::CD' do
116
+ it 'has the right size in bytes' do
117
+ expect(Filesize::CD.to_i).to eq 700_000_000
118
+ end
119
+ end
120
+
121
+ describe '::DVD_5' do
122
+ it 'has the right size in bytes' do
123
+ expect(Filesize::DVD_5.to_i).to eq 4_702_989_189
124
+ end
125
+ end
126
+
127
+ describe '::DVD' do
128
+ it 'has the right size in bytes' do
129
+ expect(Filesize::DVD.to_i).to eq 4_702_989_189
130
+ end
131
+ end
132
+
133
+ describe '::DVD_9' do
134
+ it 'has the right size in bytes' do
135
+ expect(Filesize::DVD_9.to_i).to eq 8_504_035_246
136
+ end
137
+ end
138
+
139
+ describe '::DVD_10' do
140
+ it 'has the right size in bytes' do
141
+ expect(Filesize::DVD_10.to_i).to eq 9_405_978_378
142
+ end
143
+ end
144
+
145
+ describe '::DVD_14' do
146
+ it 'has the right size in bytes' do
147
+ expect(Filesize::DVD_14.to_i).to eq 13_207_024_435
148
+ end
149
+ end
150
+
151
+ describe '::DVD_18' do
152
+ it 'has the right size in bytes' do
153
+ expect(Filesize::DVD_18.to_i).to eq 26_414_048_870
154
+ end
155
+ end
156
+
157
+ describe '::ZIP' do
158
+ it 'has the right size in bytes' do
159
+ expect(Filesize::ZIP.to_i).to eq 100_000_000
160
+ end
161
+ end
162
+ end
@@ -0,0 +1,3 @@
1
+ RSpec.configure do |config|
2
+ config.order = "random"
3
+ end
metadata CHANGED
@@ -1,30 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filesize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
5
- prerelease:
4
+ version: 0.1.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Dominik Honnef
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2009-07-26 00:00:00.000000000 Z
11
+ date: 2015-09-05 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rspec
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
19
  version: '3.0'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
26
  version: '3.0'
30
27
  description: filesize is a small class for handling filesizes with both the SI and
@@ -32,39 +29,37 @@ description: filesize is a small class for handling filesizes with both the SI a
32
29
  email: dominikh@fork-bomb.org
33
30
  executables: []
34
31
  extensions: []
35
- extra_rdoc_files:
36
- - README.markdown
37
- - CHANGELOG
38
- - lib/filesize.rb
32
+ extra_rdoc_files: []
39
33
  files:
40
- - README.markdown
41
- - CHANGELOG
34
+ - LICENSE
35
+ - README.md
42
36
  - lib/filesize.rb
43
- - filesize.gemspec
44
- homepage: http://filesize.rubyforge.org/
45
- licenses: []
37
+ - spec/lib/filesize_spec.rb
38
+ - spec/spec_helper.rb
39
+ homepage: https://github.com/dominikh/filesize
40
+ licenses:
41
+ - MIT
42
+ metadata: {}
46
43
  post_install_message:
47
44
  rdoc_options: []
48
45
  require_paths:
49
46
  - lib
50
47
  required_ruby_version: !ruby/object:Gem::Requirement
51
- none: false
52
48
  requirements:
53
- - - ! '>='
49
+ - - ">="
54
50
  - !ruby/object:Gem::Version
55
51
  version: 1.8.6
56
52
  required_rubygems_version: !ruby/object:Gem::Requirement
57
- none: false
58
53
  requirements:
59
- - - ! '>='
54
+ - - ">="
60
55
  - !ruby/object:Gem::Version
61
56
  version: '0'
62
57
  requirements: []
63
- rubyforge_project: filesize
64
- rubygems_version: 1.8.23
58
+ rubyforge_project:
59
+ rubygems_version: 2.4.5.1
65
60
  signing_key:
66
- specification_version: 3
61
+ specification_version: 4
67
62
  summary: filesize is a small class for handling filesizes with both the SI and binary
68
63
  prefixes, allowing conversion from any size to any other size.
69
64
  test_files: []
70
- has_rdoc:
65
+ has_rdoc: yard
data/CHANGELOG DELETED
@@ -1,3 +0,0 @@
1
- Version 0.0.2 -- 2010-10-04
2
- * Fixing float handling
3
- * Use yardoc for documentation
@@ -1,19 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- Gem::Specification.new do |s|
3
- s.name = "filesize"
4
- s.version = "0.1.0"
5
-
6
- s.authors = ["Dominik Honnef"]
7
- s.date = %q{2009-07-26}
8
- s.description = "filesize is a small class for handling filesizes with both the SI and binary prefixes, allowing conversion from any size to any other size."
9
- s.summary = s.description
10
-
11
- s.email = "dominikh@fork-bomb.org"
12
- s.extra_rdoc_files = ["README.markdown", "CHANGELOG", "lib/filesize.rb"]
13
- s.files = ["README.markdown", "CHANGELOG", "lib/filesize.rb", "filesize.gemspec"]
14
- s.homepage = "http://filesize.rubyforge.org/"
15
- s.required_ruby_version = ">= 1.8.6"
16
- s.rubyforge_project = "filesize"
17
-
18
- s.add_development_dependency "rspec", "~> 3.0"
19
- end