filesize 0.0.1 → 0.0.2

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.
data/CHANGELOG CHANGED
@@ -1 +1,3 @@
1
- v0.0.1. first version. enjoy!
1
+ Version 0.0.2 -- 2010-10-04
2
+ * Fixing float handling
3
+ * Use yardoc for documentation
@@ -5,7 +5,7 @@ That means:
5
5
  * Parsing strings (e.g. "1 GiB") and saving it internally as bytes
6
6
  * Handling both SI and binary prefixes
7
7
  * Converting from any type and unit to any other (SI to SI, SI to Binary and so on)
8
- * doing calculatings with filesizes (in a smart way, see Usage for more)
8
+ * doing calculations with filesizes (in a smart way, see Usage for more)
9
9
  * filesize.rb also provides some default sizes, like the ones of DVDs
10
10
 
11
11
  ## Usage
@@ -1,34 +1,17 @@
1
1
  # -*- encoding: utf-8 -*-
2
-
3
2
  Gem::Specification.new do |s|
4
- s.name = %q{filesize}
5
- s.version = "0.0.1"
3
+ s.name = "filesize"
4
+ s.version = "0.0.2"
6
5
 
7
- s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
6
  s.authors = ["Dominik Honnef"]
9
- s.cert_chain = ["/home/dominikh/.rubyforge/gem-public_cert.pem"]
10
7
  s.date = %q{2009-07-26}
11
- s.description = %q{filesize is a small class for handling filesizes with both the SI and binary prefixes, allowing conversion from any size to any other size.}
12
- s.email = %q{dominikho@gmx.net}
13
- s.extra_rdoc_files = ["README.markdown", "CHANGELOG", "lib/filesize.rb"]
14
- s.files = ["Rakefile", "README.markdown", "CHANGELOG", "lib/filesize.rb", "Manifest", "filesize.gemspec"]
15
- s.has_rdoc = true
16
- s.homepage = %q{http://filesize.rubyforge.org/}
17
- s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Filesize", "--main", "README.markdown"]
18
- s.require_paths = ["lib"]
19
- s.required_ruby_version = Gem::Requirement.new(">= 1.8.6")
20
- s.rubyforge_project = %q{filesize}
21
- s.rubygems_version = %q{1.3.1}
22
- s.signing_key = %q{/home/dominikh/.rubyforge/gem-private_key.pem}
23
- s.summary = %q{filesize is a small class for handling filesizes with both the SI and binary prefixes, allowing conversion from any size to any other size.}
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
24
10
 
25
- if s.respond_to? :specification_version then
26
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
27
- s.specification_version = 2
28
-
29
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
30
- else
31
- end
32
- else
33
- end
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"
34
17
  end
@@ -1,20 +1,26 @@
1
1
  class Filesize
2
+ # Set of rules describing file sizes according to SI units.
2
3
  SI = {:regexp => /^([\d,.]+)?\s?([kmgtpezy]?)b$/i, :multiplier => 1000, :presuffix => ''}
4
+ # Set of rules describing file sizes according to binary units.
3
5
  BINARY = {:regexp => /^([\d,.]+)?\s?(?:([kmgtpezy])i)?b$/i, :multiplier => 1024, :presuffix => 'i'}
6
+ # Unit prefixes used for file sizes.
4
7
  PREFIXES = %w{k M G T P E Z Y}
5
8
 
9
+ # @param [Number] size A file size, in bytes.
10
+ # @param [SI, BINARY] type Which type to use for conversions.
6
11
  def initialize(size, type = BINARY)
7
12
  @bytes = size.to_i
8
13
  @type = type
9
14
  end
10
15
 
11
- # Returns the size in bytes
16
+ # @return [Number] Returns the size in bytes.
12
17
  def to_i
13
18
  @bytes
14
19
  end
15
20
  alias_method :to_int, :to_i
16
21
 
17
- # Returns the size in the given unit, as a float
22
+ # @param [String] unit Which unit to convert to.
23
+ # @return [Float] Returns the size in a given unit.
18
24
  def to(unit = 'B')
19
25
  to_parts = self.class.parse(unit)
20
26
  prefix = to_parts[:prefix]
@@ -32,13 +38,18 @@ class Filesize
32
38
  end
33
39
  alias_method :to_f, :to
34
40
 
35
- # Same as to_f, but as a string, with the unit appended
41
+ # @param (see #to_f)
42
+ # @return [String] Same as {#to_f}, but as a string, with the unit appended.
43
+ # @see #to_f
36
44
  def to_s(unit = 'B')
37
45
  "%.2f %s" % [to(unit).to_f.to_s, unit]
38
46
  end
39
47
 
40
- # Same as to_s but with an automatic determinition of the most
41
- # sensible unit
48
+ # Same as {#to_s} but with an automatic determination of the most
49
+ # sensible unit.
50
+ #
51
+ # @return [String]
52
+ # @see #to_s
42
53
  def pretty
43
54
  size = @bytes
44
55
  if size < @type[:multiplier]
@@ -53,18 +64,22 @@ class Filesize
53
64
  to_s(unit)
54
65
  end
55
66
 
67
+ # @return [Filesize]
56
68
  def +(other)
57
69
  self.class.new(@bytes + other.to_i, @type)
58
70
  end
59
71
 
72
+ # @return [Filesize]
60
73
  def -(other)
61
74
  self.class.new(@bytes - other.to_i, @type)
62
75
  end
63
76
 
77
+ # @return [Filesize]
64
78
  def *(other)
65
79
  self.class.new(@bytes * other.to_i, @type)
66
80
  end
67
81
 
82
+ # @return [Filesize]
68
83
  def /(other)
69
84
  result = @bytes / other.to_f
70
85
  if other.is_a? Filesize
@@ -74,11 +89,19 @@ class Filesize
74
89
  end
75
90
  end
76
91
 
92
+ # @return [Array<self, other>]
93
+ # @api private
77
94
  def coerce(other)
78
95
  return self, other
79
96
  end
80
97
 
81
98
  class << self
99
+ # Parses a string, which describes a file size, and returns a
100
+ # Filesize object.
101
+ #
102
+ # @param [String] arg A file size to parse.
103
+ # @raise [ArgumentError] Raised if the file size cannot be parsed properly.
104
+ # @return [Filesize]
82
105
  def from(arg)
83
106
  parts = parse(arg)
84
107
  prefix = parts[:prefix]
@@ -92,6 +115,8 @@ class Filesize
92
115
  new(size * (type[:multiplier] ** (offset)), type)
93
116
  end
94
117
 
118
+ # @return [Hash<:prefix, :size, :type>]
119
+ # @api private
95
120
  def parse(string)
96
121
  type = nil
97
122
  # in this order, so we prefer binary :)
@@ -103,19 +128,28 @@ class Filesize
103
128
  }
104
129
 
105
130
  prefix = $2 || ''
106
- size = ($1 || "0").gsub(", ", "").to_i
131
+ size = ($1 || 0).to_f
107
132
 
108
133
  return { :prefix => prefix, :size => size, :type => type}
109
134
  end
110
135
  end
111
136
 
137
+ # The size of a floppy disk
112
138
  Floppy = Filesize.from("1474 KiB")
139
+ # The size of a CD
113
140
  CD = Filesize.from("700 MB")
141
+ # The size of a common DVD
114
142
  DVD_5 = Filesize.from("4.38 GiB")
143
+ # The same as a DVD 5
115
144
  DVD = DVD_5
145
+ # The size of a single-sided dual-layer DVD
116
146
  DVD_9 = Filesize.from("7.92 GiB")
147
+ # The size of a double-sided single-layer DVD
117
148
  DVD_10 = DVD_5 * 2
118
- DVD_14 = Filesize.from("7.92 GiB") + DVD_5
149
+ # The size of a double-sided DVD, combining a DVD-9 and a DVD-5
150
+ DVD_14 = DVD_9 + DVD_5
151
+ # The size of a double-sided dual-layer DVD
119
152
  DVD_18 = DVD_14 * 2
153
+ # The size of a Zip disk
120
154
  ZIP = Filesize.from("100 MB")
121
155
  end
metadata CHANGED
@@ -1,41 +1,25 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filesize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 2
9
+ version: 0.0.2
5
10
  platform: ruby
6
11
  authors:
7
12
  - Dominik Honnef
8
13
  autorequire:
9
14
  bindir: bin
10
- cert_chain:
11
- - |
12
- -----BEGIN CERTIFICATE-----
13
- MIIDMDCCAhigAwIBAgIBADANBgkqhkiG9w0BAQUFADA+MRIwEAYDVQQDDAlkb21p
14
- bmlraG8xEzARBgoJkiaJk/IsZAEZFgNnbXgxEzARBgoJkiaJk/IsZAEZFgNuZXQw
15
- HhcNMDkwNzI0MjE1NDQ3WhcNMTAwNzI0MjE1NDQ3WjA+MRIwEAYDVQQDDAlkb21p
16
- bmlraG8xEzARBgoJkiaJk/IsZAEZFgNnbXgxEzARBgoJkiaJk/IsZAEZFgNuZXQw
17
- ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgfogFNoAcdrR5mK0t5NiN
18
- MbWCH2QVLqOvpuaHN6uiaE30R9fT+1CcF97PSboMHMKaQFgiyAcBj8c2uGw5Sk7+
19
- Kv9TE2TIIG8l8oslnf9PVqrHSz823IjzbXo4WET4khI2v02pE2wx/souJ4PRgnEr
20
- gxQaOF7fqJRT2eYiZAMQye1y9tNSShRoKP3JIlp51KBXUMzGdzq4Mopp32zhEcio
21
- yEzcp1PYqu6D1Pr00fS/Alurnp/My5o3oIk0vBfJ6Q8j/6OSk+ck5xev2Z2Y9AUK
22
- iwipCxKrAsfOjpPc/Y66okMeTmKxx5N/8h/xNp/HiUApHQwjbYgFOAwmht5UzoPp
23
- AgMBAAGjOTA3MAkGA1UdEwQCMAAwHQYDVR0OBBYEFLlluBMEZ3rFvxFcB+ULjUNd
24
- V+7WMAsGA1UdDwQEAwIEsDANBgkqhkiG9w0BAQUFAAOCAQEAoDJGicQwBqMnhMkC
25
- JY7bgsrIwxoTMQT6B1keUtt9VQ3deywQu0ogawNmee5wy5oFqnMZFcSCXcJE/zIE
26
- iuSYU5t87iF09BIsSHWg2OlHAB4+GTUL0PkVsCVBDFukqEiXpNcqMUjTr8U+fe7V
27
- oD/qvzyMG1ooAFuTDfPknIQxTcavdnmUmO9Sfw10yXkomX8jjwaGduF/JHDIufub
28
- /f4b22rpLBhrOD6dqHCl7WuAfAhpobLqc7sa6Ro8caSUnpq9blOrT/PRtiTXwN6h
29
- p3eI3JV0LC6/tMHoeLAbHqauVbWUqDB+AfFw24sgZBqFA+MtMkDpqZ+BKiwiHl+S
30
- YEfDWg==
31
- -----END CERTIFICATE-----
15
+ cert_chain: []
32
16
 
33
17
  date: 2009-07-26 00:00:00 +02:00
34
18
  default_executable:
35
19
  dependencies: []
36
20
 
37
21
  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.
38
- email: dominikho@gmx.net
22
+ email: dominikh@fork-bomb.org
39
23
  executables: []
40
24
 
41
25
  extensions: []
@@ -45,42 +29,43 @@ extra_rdoc_files:
45
29
  - CHANGELOG
46
30
  - lib/filesize.rb
47
31
  files:
48
- - Rakefile
49
32
  - README.markdown
50
33
  - CHANGELOG
51
34
  - lib/filesize.rb
52
- - Manifest
53
35
  - filesize.gemspec
54
36
  has_rdoc: true
55
37
  homepage: http://filesize.rubyforge.org/
38
+ licenses: []
39
+
56
40
  post_install_message:
57
- rdoc_options:
58
- - --line-numbers
59
- - --inline-source
60
- - --title
61
- - Filesize
62
- - --main
63
- - README.markdown
41
+ rdoc_options: []
42
+
64
43
  require_paths:
65
44
  - lib
66
45
  required_ruby_version: !ruby/object:Gem::Requirement
46
+ none: false
67
47
  requirements:
68
48
  - - ">="
69
49
  - !ruby/object:Gem::Version
50
+ segments:
51
+ - 1
52
+ - 8
53
+ - 6
70
54
  version: 1.8.6
71
- version:
72
55
  required_rubygems_version: !ruby/object:Gem::Requirement
56
+ none: false
73
57
  requirements:
74
58
  - - ">="
75
59
  - !ruby/object:Gem::Version
76
- version: "1.2"
77
- version:
60
+ segments:
61
+ - 0
62
+ version: "0"
78
63
  requirements: []
79
64
 
80
65
  rubyforge_project: filesize
81
- rubygems_version: 1.3.1
66
+ rubygems_version: 1.3.7
82
67
  signing_key:
83
- specification_version: 2
68
+ specification_version: 3
84
69
  summary: filesize is a small class for handling filesizes with both the SI and binary prefixes, allowing conversion from any size to any other size.
85
70
  test_files: []
86
71
 
data.tar.gz.sig DELETED
@@ -1,3 +0,0 @@
1
- ��[�f�;k����9��M b����TF�;�8i�P���R_������N���S"T�o-A������k;m�D�D'��m{G��OE��G�i��֟��y� �^� ��la����ʘ�4#�
2
- �RA��ae���5��B� �5��鴄
3
- `"�v�8G� ;�償u�R�ba�#Ĩ$U�k,��4�����-�S�qH��&���q9�"� �.e�, �
data/Manifest DELETED
@@ -1,5 +0,0 @@
1
- Rakefile
2
- README.markdown
3
- CHANGELOG
4
- lib/filesize.rb
5
- Manifest
data/Rakefile DELETED
@@ -1,17 +0,0 @@
1
- require 'echoe'
2
- Echoe.new('filesize') do |p|
3
- p.author = "Dominik Honnef"
4
- p.email = "dominikho@gmx.net"
5
-
6
- p.description = %q{filesize is a small class for handling filesizes with both the SI and binary prefixes, allowing conversion from any size to any other size.}
7
- p.summary = %q{filesize is a small class for handling filesizes with both the SI and binary prefixes, allowing conversion from any size to any other size.}
8
-
9
- p.url = "http://filesize.rubyforge.org/"
10
- p.docs_host = "rubyforge.org:/var/www/gforge-projects/"
11
-
12
- p.ruby_version = '>= 1.8.6'
13
-
14
- p.require_signed = true
15
-
16
- p.project = 'filesize'
17
- end
metadata.gz.sig DELETED
@@ -1,3 +0,0 @@
1
- J>M���y�+}�ɻ�� &����<�Ł{�} *�G͘��j�xn���s����K�}�Z��TLvt�8�����(j�����y0j�7'���0vi�jM�
+ �|FG��cz!_g��µr&L�-�/[pZ~��֜�m������<��0Úͼ5_y�Ғ��/?2YaZҝy�R�&8�K��M�7���7W}_���������<6e���g��uu
2
- �29����
3
- �a�� @8�&P� y��r