general_units 0.0.3 → 0.0.4
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/lib/general_units/derivatives/box.rb +25 -15
- data/lib/general_units/units/length.rb +1 -1
- data/lib/general_units/units/weight.rb +1 -1
- data/lib/general_units/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b587736e5f764d47a5633f38ae9e871078a9d2d
|
4
|
+
data.tar.gz: 91594f7393deb805d8a15ffbdeddaeaded832e18
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ec7e49bc0fb3bf97304216b650fbb1f23db262ca31475db84be92448b116e2d9e033be3a3002e3ab176dc9d715d5cdf30a79cb112614c321bad755de23eb98c
|
7
|
+
data.tar.gz: f75851118b3fcbbeda331e3999d2a6d205984ffd6fac174ea65512f4ce84eb552078055c9f729323c7399e6213ca6f0b9bf060085437096a2537417f98e708dc
|
@@ -8,7 +8,7 @@ module GeneralUnits
|
|
8
8
|
|
9
9
|
attr_reader *VALUES, :unit
|
10
10
|
|
11
|
-
delegate :to_f, :to => :
|
11
|
+
delegate :to_f, :to => :volume
|
12
12
|
delegate :hash, :to => :attributes
|
13
13
|
|
14
14
|
def initialize(length = 0, width = 0, height = 0, unit)
|
@@ -23,10 +23,18 @@ module GeneralUnits
|
|
23
23
|
def values
|
24
24
|
VALUES.map {|v| self.send(v)}
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
def amount
|
28
|
+
values.sum
|
29
|
+
end
|
30
|
+
|
31
|
+
def volume
|
28
32
|
length * width * height
|
29
33
|
end
|
34
|
+
|
35
|
+
def has_space?
|
36
|
+
length > 0 && width > 0 && height > 0
|
37
|
+
end
|
30
38
|
|
31
39
|
def convert_to(unit)
|
32
40
|
Box.new(*values.map {|v| v.convert_to(unit).amount}, unit)
|
@@ -42,7 +50,7 @@ module GeneralUnits
|
|
42
50
|
|
43
51
|
def accommodates?(*boxes)
|
44
52
|
boxes.map! {|box| validate_capacity(box)}
|
45
|
-
boxes.sum(&:
|
53
|
+
boxes.sum(&:volume) < volume && includes?(Box.new(boxes.map(&:length).max, boxes.map(&:width).max, boxes.map(&:height).max, unit))
|
46
54
|
end
|
47
55
|
|
48
56
|
def same_size?(other_object)
|
@@ -64,6 +72,8 @@ module GeneralUnits
|
|
64
72
|
def ==(other_object)
|
65
73
|
other_object = validate_capacity(other_object)
|
66
74
|
length == other_object.length && width == other_object.width && height == other_object.height
|
75
|
+
rescue
|
76
|
+
false
|
67
77
|
end
|
68
78
|
|
69
79
|
def eql?(other_object)
|
@@ -72,45 +82,45 @@ module GeneralUnits
|
|
72
82
|
|
73
83
|
def <=>(other_object)
|
74
84
|
other_object = validate_capacity_or_length(other_object)
|
75
|
-
|
85
|
+
volume <=> case other_object
|
76
86
|
when Length then other_object
|
77
|
-
when Box then other_object.
|
87
|
+
when Box then other_object.volume
|
78
88
|
end
|
79
89
|
end
|
80
90
|
|
81
91
|
def >(other_object)
|
82
92
|
other_object = validate_capacity_or_length(other_object)
|
83
|
-
|
93
|
+
volume > case other_object
|
84
94
|
when Length then other_object
|
85
|
-
when Box then other_object.
|
95
|
+
when Box then other_object.volume
|
86
96
|
end
|
87
97
|
end
|
88
98
|
|
89
99
|
def <(other_object)
|
90
100
|
other_object = validate_capacity_or_length(other_object)
|
91
|
-
|
101
|
+
volume < case other_object
|
92
102
|
when Length then other_object
|
93
|
-
when Box then other_object.
|
103
|
+
when Box then other_object.volume
|
94
104
|
end
|
95
105
|
end
|
96
106
|
|
97
107
|
def >=(other_object)
|
98
108
|
other_object = validate_capacity_or_length(other_object)
|
99
|
-
|
109
|
+
volume >= case other_object
|
100
110
|
when Length then other_object
|
101
|
-
when Box then other_object.
|
111
|
+
when Box then other_object.volume
|
102
112
|
end
|
103
113
|
end
|
104
114
|
|
105
115
|
def <=(other_object)
|
106
116
|
other_object = validate_capacity_or_length(other_object)
|
107
|
-
|
117
|
+
volume <= case other_object
|
108
118
|
when Length then other_object
|
109
|
-
when Box then other_object.
|
119
|
+
when Box then other_object.volume
|
110
120
|
end
|
111
121
|
end
|
112
122
|
|
113
|
-
delegate :positive?, :negative?, :to => :
|
123
|
+
delegate :positive?, :negative?, :to => :volume
|
114
124
|
|
115
125
|
def +(other_object)
|
116
126
|
other_object = validate_capacity_or_length(other_object)
|
@@ -144,7 +154,7 @@ module GeneralUnits
|
|
144
154
|
end
|
145
155
|
end
|
146
156
|
|
147
|
-
delegate :div, :divmod, :modulo, :%, :remainder, :abs, :zero?, :nonzero?, :coerce, :to => :
|
157
|
+
delegate :div, :divmod, :modulo, :%, :remainder, :abs, :zero?, :nonzero?, :coerce, :to => :volume
|
148
158
|
|
149
159
|
### ARITHMETICS END ###
|
150
160
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: general_units
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Valery Kvon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n
|