ski_binding_calculator 0.5.2 → 0.6.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.
- data/config/binding_codes.yml +20 -7
- data/config/binding_settings.yml +349 -146
- data/lib/ski_binding_calculator/calculator.rb +70 -17
- data/lib/ski_binding_calculator.rb +0 -1
- data/ski_binding_calculator.gemspec +3 -3
- data/spec/lib/calculator_spec.rb +110 -29
- data/spec/lib/config_loader_spec.rb +2 -2
- metadata +18 -5
- data/lib/ski_binding_calculator/person.rb +0 -20
- data/spec/lib/person_spec.rb +0 -58
data/config/binding_codes.yml
CHANGED
@@ -1,41 +1,54 @@
|
|
1
1
|
#weight [kg]
|
2
2
|
#height [cm]
|
3
|
+
#Code A
|
3
4
|
- !ruby/object:SkiBinding::Code
|
4
5
|
weight: !ruby/range 10..13
|
5
|
-
height:
|
6
|
+
height: ~
|
7
|
+
#Code B
|
6
8
|
- !ruby/object:SkiBinding::Code
|
7
9
|
weight: !ruby/range 14..17
|
8
|
-
height:
|
10
|
+
height: ~
|
11
|
+
#Code C
|
9
12
|
- !ruby/object:SkiBinding::Code
|
10
13
|
weight: !ruby/range 18..21
|
11
|
-
height:
|
14
|
+
height: ~
|
15
|
+
#Code D
|
12
16
|
- !ruby/object:SkiBinding::Code
|
13
17
|
weight: !ruby/range 22..25
|
14
|
-
height:
|
18
|
+
height: ~
|
19
|
+
#Code E
|
15
20
|
- !ruby/object:SkiBinding::Code
|
16
21
|
weight: !ruby/range 26..30
|
17
|
-
height:
|
22
|
+
height: ~
|
23
|
+
#Code F
|
18
24
|
- !ruby/object:SkiBinding::Code
|
19
25
|
weight: !ruby/range 31..35
|
20
|
-
height:
|
26
|
+
height: ~
|
27
|
+
#Code G
|
21
28
|
- !ruby/object:SkiBinding::Code
|
22
29
|
weight: !ruby/range 36..41
|
23
|
-
height:
|
30
|
+
height: ~
|
31
|
+
#Code H
|
24
32
|
- !ruby/object:SkiBinding::Code
|
25
33
|
weight: !ruby/range 42..48
|
26
34
|
height: !ruby/range 1..148
|
35
|
+
#Code I
|
27
36
|
- !ruby/object:SkiBinding::Code
|
28
37
|
weight: !ruby/range 49..57
|
29
38
|
height: !ruby/range 149..157
|
39
|
+
#Code J
|
30
40
|
- !ruby/object:SkiBinding::Code
|
31
41
|
weight: !ruby/range 58..66
|
32
42
|
height: !ruby/range 158..166
|
43
|
+
#Code K
|
33
44
|
- !ruby/object:SkiBinding::Code
|
34
45
|
weight: !ruby/range 67..78
|
35
46
|
height: !ruby/range 167..178
|
47
|
+
#Code L
|
36
48
|
- !ruby/object:SkiBinding::Code
|
37
49
|
weight: !ruby/range 79..94
|
38
50
|
height: !ruby/range 179..194
|
51
|
+
#Code M
|
39
52
|
- !ruby/object:SkiBinding::Code
|
40
53
|
weight: !ruby/range
|
41
54
|
begin: 95
|
data/config/binding_settings.yml
CHANGED
@@ -3,72 +3,101 @@
|
|
3
3
|
# forward_lean [Nm]
|
4
4
|
-
|
5
5
|
- !ruby/object:SkiBinding::Setting
|
6
|
-
shoe_size_range: !ruby/range 1..
|
6
|
+
shoe_size_range: !ruby/range 1..230
|
7
7
|
z_value: 0.75
|
8
8
|
twist: &turning_moment 8
|
9
|
-
forward_lean: &forward_lean 29
|
10
|
-
- !ruby/object:SkiBinding::Setting
|
9
|
+
forward_lean: &forward_lean 29
|
10
|
+
- !ruby/object:SkiBinding::Setting
|
11
|
+
shoe_size_range: !ruby/range 231..250
|
12
|
+
z_value: 0.75
|
13
|
+
twist: *turning_moment
|
14
|
+
forward_lean: *forward_lean
|
15
|
+
- !ruby/object:SkiBinding::Setting
|
11
16
|
shoe_size_range: !ruby/range 251..270
|
12
17
|
z_value: 0.75
|
13
18
|
twist: *turning_moment
|
14
19
|
forward_lean: *forward_lean
|
15
|
-
- !ruby/object:SkiBinding::Setting
|
16
|
-
shoe_size_range:
|
20
|
+
- !ruby/object:SkiBinding::Setting
|
21
|
+
shoe_size_range: !ruby/range 271..290
|
22
|
+
z_value: ~
|
23
|
+
twist: ~
|
24
|
+
forward_lean: ~
|
25
|
+
- !ruby/object:SkiBinding::Setting
|
26
|
+
shoe_size_range: !ruby/range 291..310
|
17
27
|
z_value: ~
|
18
28
|
twist: ~
|
19
29
|
forward_lean: ~
|
20
|
-
- !ruby/object:SkiBinding::Setting
|
21
|
-
shoe_size_range:
|
30
|
+
- !ruby/object:SkiBinding::Setting
|
31
|
+
shoe_size_range: !ruby/range 311..330
|
22
32
|
z_value: ~
|
23
33
|
twist: ~
|
24
34
|
forward_lean: ~
|
25
|
-
- !ruby/object:SkiBinding::Setting
|
26
|
-
shoe_size_range:
|
35
|
+
- !ruby/object:SkiBinding::Setting
|
36
|
+
shoe_size_range: !ruby/range 331..350
|
27
37
|
z_value: ~
|
28
38
|
twist: ~
|
29
39
|
forward_lean: ~
|
30
|
-
- !ruby/object:SkiBinding::Setting
|
31
|
-
shoe_size_range:
|
40
|
+
- !ruby/object:SkiBinding::Setting
|
41
|
+
shoe_size_range: !ruby/range
|
42
|
+
begin: 351
|
43
|
+
end: .inf
|
32
44
|
z_value: ~
|
33
45
|
twist: ~
|
34
46
|
forward_lean: ~
|
35
|
-
-
|
47
|
+
-
|
36
48
|
- !ruby/object:SkiBinding::Setting
|
37
|
-
shoe_size_range: !ruby/range 1..
|
38
|
-
z_value: 1
|
49
|
+
shoe_size_range: !ruby/range 1..230
|
50
|
+
z_value: 1.0
|
39
51
|
twist: &turning_moment 11
|
40
|
-
forward_lean: &forward_lean 40
|
52
|
+
forward_lean: &forward_lean 40
|
53
|
+
- !ruby/object:SkiBinding::Setting
|
54
|
+
shoe_size_range: !ruby/range 231..250
|
55
|
+
z_value: 0.75
|
56
|
+
twist: *turning_moment
|
57
|
+
forward_lean: *forward_lean
|
41
58
|
- !ruby/object:SkiBinding::Setting
|
42
59
|
shoe_size_range: !ruby/range 251..270
|
43
|
-
z_value:
|
60
|
+
z_value: 0.75
|
44
61
|
twist: *turning_moment
|
45
62
|
forward_lean: *forward_lean
|
46
63
|
- !ruby/object:SkiBinding::Setting
|
47
64
|
shoe_size_range: !ruby/range 271..290
|
48
65
|
z_value: 0.75
|
49
66
|
twist: *turning_moment
|
50
|
-
forward_lean:
|
51
|
-
- !ruby/object:SkiBinding::Setting
|
52
|
-
shoe_size_range:
|
67
|
+
forward_lean: *forward_lean
|
68
|
+
- !ruby/object:SkiBinding::Setting
|
69
|
+
shoe_size_range: !ruby/range 291..310
|
53
70
|
z_value: ~
|
54
71
|
twist: ~
|
55
72
|
forward_lean: ~
|
56
|
-
- !ruby/object:SkiBinding::Setting
|
57
|
-
shoe_size_range:
|
73
|
+
- !ruby/object:SkiBinding::Setting
|
74
|
+
shoe_size_range: !ruby/range 311..330
|
58
75
|
z_value: ~
|
59
76
|
twist: ~
|
60
77
|
forward_lean: ~
|
61
|
-
- !ruby/object:SkiBinding::Setting
|
62
|
-
shoe_size_range:
|
78
|
+
- !ruby/object:SkiBinding::Setting
|
79
|
+
shoe_size_range: !ruby/range 331..350
|
63
80
|
z_value: ~
|
64
81
|
twist: ~
|
65
82
|
forward_lean: ~
|
66
|
-
-
|
67
83
|
- !ruby/object:SkiBinding::Setting
|
68
|
-
shoe_size_range: !ruby/range
|
84
|
+
shoe_size_range: !ruby/range
|
85
|
+
begin: 351
|
86
|
+
end: .inf
|
87
|
+
z_value: ~
|
88
|
+
twist: ~
|
89
|
+
forward_lean: ~
|
90
|
+
-
|
91
|
+
- !ruby/object:SkiBinding::Setting
|
92
|
+
shoe_size_range: !ruby/range 1..230
|
69
93
|
z_value: 1.5
|
70
94
|
twist: &turning_moment 14
|
71
95
|
forward_lean: &forward_lean 52
|
96
|
+
- !ruby/object:SkiBinding::Setting
|
97
|
+
shoe_size_range: !ruby/range 231..250
|
98
|
+
z_value: 1.25
|
99
|
+
twist: *turning_moment
|
100
|
+
forward_lean: *forward_lean
|
72
101
|
- !ruby/object:SkiBinding::Setting
|
73
102
|
shoe_size_range: !ruby/range 251..270
|
74
103
|
z_value: 1.25
|
@@ -76,30 +105,42 @@
|
|
76
105
|
forward_lean: *forward_lean
|
77
106
|
- !ruby/object:SkiBinding::Setting
|
78
107
|
shoe_size_range: !ruby/range 271..290
|
79
|
-
z_value: 1
|
108
|
+
z_value: 1.0
|
80
109
|
twist: *turning_moment
|
81
110
|
forward_lean: *forward_lean
|
82
|
-
- !ruby/object:SkiBinding::Setting
|
83
|
-
shoe_size_range:
|
111
|
+
- !ruby/object:SkiBinding::Setting
|
112
|
+
shoe_size_range: !ruby/range 291..310
|
84
113
|
z_value: ~
|
85
114
|
twist: ~
|
86
115
|
forward_lean: ~
|
87
|
-
- !ruby/object:SkiBinding::Setting
|
88
|
-
shoe_size_range:
|
116
|
+
- !ruby/object:SkiBinding::Setting
|
117
|
+
shoe_size_range: !ruby/range 311..330
|
89
118
|
z_value: ~
|
90
119
|
twist: ~
|
91
120
|
forward_lean: ~
|
92
|
-
- !ruby/object:SkiBinding::Setting
|
93
|
-
shoe_size_range:
|
121
|
+
- !ruby/object:SkiBinding::Setting
|
122
|
+
shoe_size_range: !ruby/range 331..350
|
123
|
+
z_value: ~
|
124
|
+
twist: ~
|
125
|
+
forward_lean: ~
|
126
|
+
- !ruby/object:SkiBinding::Setting
|
127
|
+
shoe_size_range: !ruby/range
|
128
|
+
begin: 351
|
129
|
+
end: .inf
|
94
130
|
z_value: ~
|
95
131
|
twist: ~
|
96
132
|
forward_lean: ~
|
97
133
|
-
|
98
134
|
- !ruby/object:SkiBinding::Setting
|
99
|
-
shoe_size_range: !ruby/range 1..
|
100
|
-
z_value:
|
135
|
+
shoe_size_range: !ruby/range 1..230
|
136
|
+
z_value: 2.0
|
101
137
|
twist: &turning_moment 17
|
102
138
|
forward_lean: &forward_lean 64
|
139
|
+
- !ruby/object:SkiBinding::Setting
|
140
|
+
shoe_size_range: !ruby/range 231..250
|
141
|
+
z_value: 1.75
|
142
|
+
twist: *turning_moment
|
143
|
+
forward_lean: *forward_lean
|
103
144
|
- !ruby/object:SkiBinding::Setting
|
104
145
|
shoe_size_range: !ruby/range 251..270
|
105
146
|
z_value: 1.5
|
@@ -115,25 +156,37 @@
|
|
115
156
|
z_value: 1.25
|
116
157
|
twist: *turning_moment
|
117
158
|
forward_lean: *forward_lean
|
118
|
-
- !ruby/object:SkiBinding::Setting
|
119
|
-
shoe_size_range:
|
159
|
+
- !ruby/object:SkiBinding::Setting
|
160
|
+
shoe_size_range: !ruby/range 311..330
|
161
|
+
z_value: ~
|
162
|
+
twist: ~
|
163
|
+
forward_lean: ~
|
164
|
+
- !ruby/object:SkiBinding::Setting
|
165
|
+
shoe_size_range: !ruby/range 331..350
|
120
166
|
z_value: ~
|
121
167
|
twist: ~
|
122
168
|
forward_lean: ~
|
123
|
-
- !ruby/object:SkiBinding::Setting
|
124
|
-
shoe_size_range:
|
169
|
+
- !ruby/object:SkiBinding::Setting
|
170
|
+
shoe_size_range: !ruby/range
|
171
|
+
begin: 351
|
172
|
+
end: .inf
|
125
173
|
z_value: ~
|
126
174
|
twist: ~
|
127
175
|
forward_lean: ~
|
128
176
|
-
|
129
177
|
- !ruby/object:SkiBinding::Setting
|
130
|
-
shoe_size_range: !ruby/range 1..
|
131
|
-
z_value: 2.
|
178
|
+
shoe_size_range: !ruby/range 1..230
|
179
|
+
z_value: 2.5
|
132
180
|
twist: &turning_moment 20
|
133
181
|
forward_lean: &forward_lean 75
|
134
182
|
- !ruby/object:SkiBinding::Setting
|
135
|
-
shoe_size_range: !ruby/range
|
136
|
-
z_value: 2
|
183
|
+
shoe_size_range: !ruby/range 231..250
|
184
|
+
z_value: 2.25
|
185
|
+
twist: *turning_moment
|
186
|
+
forward_lean: *forward_lean
|
187
|
+
- !ruby/object:SkiBinding::Setting
|
188
|
+
shoe_size_range: !ruby/range 251..270
|
189
|
+
z_value: 2.0
|
137
190
|
twist: *turning_moment
|
138
191
|
forward_lean: *forward_lean
|
139
192
|
- !ruby/object:SkiBinding::Setting
|
@@ -147,23 +200,35 @@
|
|
147
200
|
twist: *turning_moment
|
148
201
|
forward_lean: *forward_lean
|
149
202
|
- !ruby/object:SkiBinding::Setting
|
150
|
-
shoe_size_range: !ruby/range 311..330
|
203
|
+
shoe_size_range: !ruby/range 311..330
|
151
204
|
z_value: 1.5
|
152
205
|
twist: *turning_moment
|
153
206
|
forward_lean: *forward_lean
|
154
|
-
- !ruby/object:SkiBinding::Setting
|
155
|
-
shoe_size_range:
|
207
|
+
- !ruby/object:SkiBinding::Setting
|
208
|
+
shoe_size_range: !ruby/range 331..350
|
209
|
+
z_value: ~
|
210
|
+
twist: ~
|
211
|
+
forward_lean: ~
|
212
|
+
- !ruby/object:SkiBinding::Setting
|
213
|
+
shoe_size_range: !ruby/range
|
214
|
+
begin: 351
|
215
|
+
end: .inf
|
156
216
|
z_value: ~
|
157
217
|
twist: ~
|
158
218
|
forward_lean: ~
|
159
219
|
-
|
160
220
|
- !ruby/object:SkiBinding::Setting
|
161
|
-
shoe_size_range: !ruby/range 1..
|
162
|
-
z_value:
|
221
|
+
shoe_size_range: !ruby/range 1..230
|
222
|
+
z_value: 3.0
|
163
223
|
twist: &turning_moment 23
|
164
224
|
forward_lean: &forward_lean 87
|
165
225
|
- !ruby/object:SkiBinding::Setting
|
166
|
-
shoe_size_range: !ruby/range
|
226
|
+
shoe_size_range: !ruby/range 231..250
|
227
|
+
z_value: 2.75
|
228
|
+
twist: *turning_moment
|
229
|
+
forward_lean: *forward_lean
|
230
|
+
- !ruby/object:SkiBinding::Setting
|
231
|
+
shoe_size_range: !ruby/range 251..270
|
167
232
|
z_value: 2.5
|
168
233
|
twist: *turning_moment
|
169
234
|
forward_lean: *forward_lean
|
@@ -174,7 +239,7 @@
|
|
174
239
|
forward_lean: *forward_lean
|
175
240
|
- !ruby/object:SkiBinding::Setting
|
176
241
|
shoe_size_range: !ruby/range 291..310
|
177
|
-
z_value: 2
|
242
|
+
z_value: 2.0
|
178
243
|
twist: *turning_moment
|
179
244
|
forward_lean: *forward_lean
|
180
245
|
- !ruby/object:SkiBinding::Setting
|
@@ -183,21 +248,31 @@
|
|
183
248
|
twist: *turning_moment
|
184
249
|
forward_lean: *forward_lean
|
185
250
|
- !ruby/object:SkiBinding::Setting
|
186
|
-
shoe_size_range: !ruby/range
|
187
|
-
begin: 331
|
188
|
-
end: .inf
|
251
|
+
shoe_size_range: !ruby/range 331..350
|
189
252
|
z_value: 1.75
|
190
253
|
twist: *turning_moment
|
191
254
|
forward_lean: *forward_lean
|
255
|
+
- !ruby/object:SkiBinding::Setting
|
256
|
+
shoe_size_range: !ruby/range
|
257
|
+
begin: 351
|
258
|
+
end: .inf
|
259
|
+
z_value: ~
|
260
|
+
twist: ~
|
261
|
+
forward_lean: ~
|
192
262
|
-
|
193
263
|
- !ruby/object:SkiBinding::Setting
|
194
|
-
shoe_size_range: !ruby/range 1..
|
264
|
+
shoe_size_range: !ruby/range 1..230
|
265
|
+
z_value: ~
|
266
|
+
twist: ~
|
267
|
+
forward_lean: ~
|
268
|
+
- !ruby/object:SkiBinding::Setting
|
269
|
+
shoe_size_range: !ruby/range 231..250
|
195
270
|
z_value: 3.5
|
196
271
|
twist: &turning_moment 27
|
197
272
|
forward_lean: &forward_lean 102
|
198
273
|
- !ruby/object:SkiBinding::Setting
|
199
274
|
shoe_size_range: !ruby/range 251..270
|
200
|
-
z_value: 3
|
275
|
+
z_value: 3.0
|
201
276
|
twist: *turning_moment
|
202
277
|
forward_lean: *forward_lean
|
203
278
|
- !ruby/object:SkiBinding::Setting
|
@@ -216,31 +291,41 @@
|
|
216
291
|
twist: *turning_moment
|
217
292
|
forward_lean: *forward_lean
|
218
293
|
- !ruby/object:SkiBinding::Setting
|
219
|
-
shoe_size_range: !ruby/range
|
220
|
-
|
221
|
-
end: .inf
|
222
|
-
z_value: 2
|
294
|
+
shoe_size_range: !ruby/range 331..350
|
295
|
+
z_value: 2.0
|
223
296
|
twist: *turning_moment
|
224
297
|
forward_lean: *forward_lean
|
298
|
+
- !ruby/object:SkiBinding::Setting
|
299
|
+
shoe_size_range: !ruby/range
|
300
|
+
begin: 351
|
301
|
+
end: .inf
|
302
|
+
z_value: ~
|
303
|
+
twist: ~
|
304
|
+
forward_lean: ~
|
225
305
|
-
|
226
306
|
- !ruby/object:SkiBinding::Setting
|
227
|
-
shoe_size_range: !ruby/range 1..
|
228
|
-
z_value:
|
229
|
-
twist:
|
230
|
-
forward_lean:
|
307
|
+
shoe_size_range: !ruby/range 1..230
|
308
|
+
z_value: ~
|
309
|
+
twist: ~
|
310
|
+
forward_lean: ~
|
311
|
+
- !ruby/object:SkiBinding::Setting
|
312
|
+
shoe_size_range: !ruby/range 231..250
|
313
|
+
z_value: ~
|
314
|
+
twist: ~
|
315
|
+
forward_lean: ~
|
231
316
|
- !ruby/object:SkiBinding::Setting
|
232
317
|
shoe_size_range: !ruby/range 251..270
|
233
318
|
z_value: 3.5
|
234
|
-
twist:
|
235
|
-
forward_lean:
|
319
|
+
twist: &turning_moment 27
|
320
|
+
forward_lean: &forward_lean 102
|
236
321
|
- !ruby/object:SkiBinding::Setting
|
237
322
|
shoe_size_range: !ruby/range 271..290
|
238
|
-
z_value: 3
|
323
|
+
z_value: 3.0
|
239
324
|
twist: *turning_moment
|
240
325
|
forward_lean: *forward_lean
|
241
326
|
- !ruby/object:SkiBinding::Setting
|
242
327
|
shoe_size_range: !ruby/range 291..310
|
243
|
-
z_value: 3
|
328
|
+
z_value: 3.0
|
244
329
|
twist: *turning_moment
|
245
330
|
forward_lean: *forward_lean
|
246
331
|
- !ruby/object:SkiBinding::Setting
|
@@ -249,26 +334,36 @@
|
|
249
334
|
twist: *turning_moment
|
250
335
|
forward_lean: *forward_lean
|
251
336
|
- !ruby/object:SkiBinding::Setting
|
252
|
-
shoe_size_range: !ruby/range
|
253
|
-
begin: 331
|
254
|
-
end: .inf
|
337
|
+
shoe_size_range: !ruby/range 331..350
|
255
338
|
z_value: 2.5
|
256
339
|
twist: *turning_moment
|
257
340
|
forward_lean: *forward_lean
|
341
|
+
- !ruby/object:SkiBinding::Setting
|
342
|
+
shoe_size_range: !ruby/range
|
343
|
+
begin: 351
|
344
|
+
end: .inf
|
345
|
+
z_value: ~
|
346
|
+
twist: ~
|
347
|
+
forward_lean: ~
|
258
348
|
-
|
259
349
|
- !ruby/object:SkiBinding::Setting
|
260
|
-
shoe_size_range: !ruby/range 1..
|
261
|
-
z_value:
|
262
|
-
twist:
|
263
|
-
forward_lean:
|
350
|
+
shoe_size_range: !ruby/range 1..230
|
351
|
+
z_value: ~
|
352
|
+
twist: ~
|
353
|
+
forward_lean: ~
|
354
|
+
- !ruby/object:SkiBinding::Setting
|
355
|
+
shoe_size_range: !ruby/range 231..250
|
356
|
+
z_value: ~
|
357
|
+
twist: ~
|
358
|
+
forward_lean: ~
|
264
359
|
- !ruby/object:SkiBinding::Setting
|
265
360
|
shoe_size_range: !ruby/range 251..270
|
266
361
|
z_value: 4.5
|
267
|
-
twist:
|
268
|
-
forward_lean:
|
362
|
+
twist: &turning_moment 37
|
363
|
+
forward_lean: &forward_lean 141
|
269
364
|
- !ruby/object:SkiBinding::Setting
|
270
365
|
shoe_size_range: !ruby/range 271..290
|
271
|
-
z_value: 4
|
366
|
+
z_value: 4.0
|
272
367
|
twist: *turning_moment
|
273
368
|
forward_lean: *forward_lean
|
274
369
|
- !ruby/object:SkiBinding::Setting
|
@@ -282,26 +377,36 @@
|
|
282
377
|
twist: *turning_moment
|
283
378
|
forward_lean: *forward_lean
|
284
379
|
- !ruby/object:SkiBinding::Setting
|
285
|
-
shoe_size_range: !ruby/range
|
286
|
-
|
287
|
-
end: .inf
|
288
|
-
z_value: 3
|
380
|
+
shoe_size_range: !ruby/range 331..350
|
381
|
+
z_value: 3.0
|
289
382
|
twist: *turning_moment
|
290
383
|
forward_lean: *forward_lean
|
384
|
+
- !ruby/object:SkiBinding::Setting
|
385
|
+
shoe_size_range: !ruby/range
|
386
|
+
begin: 351
|
387
|
+
end: .inf
|
388
|
+
z_value: ~
|
389
|
+
twist: ~
|
390
|
+
forward_lean: ~
|
291
391
|
-
|
292
392
|
- !ruby/object:SkiBinding::Setting
|
293
|
-
shoe_size_range: !ruby/range 1..
|
294
|
-
z_value:
|
295
|
-
twist:
|
296
|
-
forward_lean:
|
393
|
+
shoe_size_range: !ruby/range 1..230
|
394
|
+
z_value: ~
|
395
|
+
twist: ~
|
396
|
+
forward_lean: ~
|
397
|
+
- !ruby/object:SkiBinding::Setting
|
398
|
+
shoe_size_range: !ruby/range 231..250
|
399
|
+
z_value: ~
|
400
|
+
twist: ~
|
401
|
+
forward_lean: ~
|
297
402
|
- !ruby/object:SkiBinding::Setting
|
298
403
|
shoe_size_range: !ruby/range 251..270
|
299
404
|
z_value: 5.5
|
300
|
-
twist:
|
301
|
-
forward_lean:
|
405
|
+
twist: &turning_moment 43
|
406
|
+
forward_lean: &forward_lean 165
|
302
407
|
- !ruby/object:SkiBinding::Setting
|
303
408
|
shoe_size_range: !ruby/range 271..290
|
304
|
-
z_value: 5
|
409
|
+
z_value: 5.0
|
305
410
|
twist: *turning_moment
|
306
411
|
forward_lean: *forward_lean
|
307
412
|
- !ruby/object:SkiBinding::Setting
|
@@ -311,30 +416,40 @@
|
|
311
416
|
forward_lean: *forward_lean
|
312
417
|
- !ruby/object:SkiBinding::Setting
|
313
418
|
shoe_size_range: !ruby/range 311..330
|
314
|
-
z_value: 4
|
419
|
+
z_value: 4.0
|
420
|
+
twist: *turning_moment
|
421
|
+
forward_lean: *forward_lean
|
422
|
+
- !ruby/object:SkiBinding::Setting
|
423
|
+
shoe_size_range: !ruby/range 331..350
|
424
|
+
z_value: 3.5
|
315
425
|
twist: *turning_moment
|
316
426
|
forward_lean: *forward_lean
|
317
427
|
- !ruby/object:SkiBinding::Setting
|
318
428
|
shoe_size_range: !ruby/range
|
319
|
-
begin:
|
429
|
+
begin: 351
|
320
430
|
end: .inf
|
321
|
-
z_value: 3.
|
431
|
+
z_value: 3.0
|
322
432
|
twist: *turning_moment
|
323
433
|
forward_lean: *forward_lean
|
324
434
|
-
|
325
435
|
- !ruby/object:SkiBinding::Setting
|
326
|
-
shoe_size_range: !ruby/range 1..
|
327
|
-
z_value:
|
328
|
-
twist:
|
329
|
-
forward_lean:
|
436
|
+
shoe_size_range: !ruby/range 1..230
|
437
|
+
z_value: ~
|
438
|
+
twist: ~
|
439
|
+
forward_lean: ~
|
440
|
+
- !ruby/object:SkiBinding::Setting
|
441
|
+
shoe_size_range: !ruby/range 231..250
|
442
|
+
z_value: ~
|
443
|
+
twist: ~
|
444
|
+
forward_lean: ~
|
330
445
|
- !ruby/object:SkiBinding::Setting
|
331
446
|
shoe_size_range: !ruby/range 251..270
|
332
447
|
z_value: 6.5
|
333
|
-
twist:
|
334
|
-
forward_lean:
|
448
|
+
twist: &turning_moment 50
|
449
|
+
forward_lean: &forward_lean 194
|
335
450
|
- !ruby/object:SkiBinding::Setting
|
336
451
|
shoe_size_range: !ruby/range 271..290
|
337
|
-
z_value: 6
|
452
|
+
z_value: 6.0
|
338
453
|
twist: *turning_moment
|
339
454
|
forward_lean: *forward_lean
|
340
455
|
- !ruby/object:SkiBinding::Setting
|
@@ -344,30 +459,40 @@
|
|
344
459
|
forward_lean: *forward_lean
|
345
460
|
- !ruby/object:SkiBinding::Setting
|
346
461
|
shoe_size_range: !ruby/range 311..330
|
347
|
-
z_value: 5
|
462
|
+
z_value: 5.0
|
463
|
+
twist: *turning_moment
|
464
|
+
forward_lean: *forward_lean
|
465
|
+
- !ruby/object:SkiBinding::Setting
|
466
|
+
shoe_size_range: !ruby/range 331..350
|
467
|
+
z_value: 4.5
|
348
468
|
twist: *turning_moment
|
349
469
|
forward_lean: *forward_lean
|
350
470
|
- !ruby/object:SkiBinding::Setting
|
351
471
|
shoe_size_range: !ruby/range
|
352
|
-
begin:
|
472
|
+
begin: 351
|
353
473
|
end: .inf
|
354
|
-
z_value: 4.
|
474
|
+
z_value: 4.0
|
355
475
|
twist: *turning_moment
|
356
476
|
forward_lean: *forward_lean
|
357
477
|
-
|
358
478
|
- !ruby/object:SkiBinding::Setting
|
359
|
-
shoe_size_range: !ruby/range 1..
|
360
|
-
z_value:
|
361
|
-
twist:
|
362
|
-
forward_lean:
|
479
|
+
shoe_size_range: !ruby/range 1..230
|
480
|
+
z_value: ~
|
481
|
+
twist: ~
|
482
|
+
forward_lean: ~
|
483
|
+
- !ruby/object:SkiBinding::Setting
|
484
|
+
shoe_size_range: !ruby/range 231..250
|
485
|
+
z_value: ~
|
486
|
+
twist: ~
|
487
|
+
forward_lean: ~
|
363
488
|
- !ruby/object:SkiBinding::Setting
|
364
489
|
shoe_size_range: !ruby/range 251..270
|
365
490
|
z_value: 7.5
|
366
|
-
twist:
|
367
|
-
forward_lean:
|
491
|
+
twist: &turning_moment 58
|
492
|
+
forward_lean: &forward_lean 229
|
368
493
|
- !ruby/object:SkiBinding::Setting
|
369
494
|
shoe_size_range: !ruby/range 271..290
|
370
|
-
z_value: 7
|
495
|
+
z_value: 7.0
|
371
496
|
twist: *turning_moment
|
372
497
|
forward_lean: *forward_lean
|
373
498
|
- !ruby/object:SkiBinding::Setting
|
@@ -377,65 +502,85 @@
|
|
377
502
|
forward_lean: *forward_lean
|
378
503
|
- !ruby/object:SkiBinding::Setting
|
379
504
|
shoe_size_range: !ruby/range 311..330
|
380
|
-
z_value: 6
|
505
|
+
z_value: 6.0
|
506
|
+
twist: *turning_moment
|
507
|
+
forward_lean: *forward_lean
|
508
|
+
- !ruby/object:SkiBinding::Setting
|
509
|
+
shoe_size_range: !ruby/range 331..350
|
510
|
+
z_value: 5.5
|
381
511
|
twist: *turning_moment
|
382
512
|
forward_lean: *forward_lean
|
383
513
|
- !ruby/object:SkiBinding::Setting
|
384
514
|
shoe_size_range: !ruby/range
|
385
|
-
begin:
|
515
|
+
begin: 351
|
386
516
|
end: .inf
|
387
|
-
z_value: 5.
|
517
|
+
z_value: 5.0
|
388
518
|
twist: *turning_moment
|
389
519
|
forward_lean: *forward_lean
|
390
520
|
-
|
391
521
|
- !ruby/object:SkiBinding::Setting
|
392
|
-
shoe_size_range: !ruby/range 1..
|
393
|
-
z_value:
|
394
|
-
twist:
|
395
|
-
forward_lean:
|
522
|
+
shoe_size_range: !ruby/range 1..230
|
523
|
+
z_value: ~
|
524
|
+
twist: ~
|
525
|
+
forward_lean: ~
|
526
|
+
- !ruby/object:SkiBinding::Setting
|
527
|
+
shoe_size_range: !ruby/range 231..250
|
528
|
+
z_value: ~
|
529
|
+
twist: ~
|
530
|
+
forward_lean: ~
|
396
531
|
- !ruby/object:SkiBinding::Setting
|
397
532
|
shoe_size_range: !ruby/range 251..270
|
398
|
-
z_value:
|
399
|
-
twist:
|
400
|
-
forward_lean:
|
533
|
+
z_value: ~
|
534
|
+
twist: ~
|
535
|
+
forward_lean: ~
|
401
536
|
- !ruby/object:SkiBinding::Setting
|
402
537
|
shoe_size_range: !ruby/range 271..290
|
403
538
|
z_value: 8.5
|
404
|
-
twist:
|
405
|
-
forward_lean:
|
539
|
+
twist: &turning_moment 67
|
540
|
+
forward_lean: &forward_lean 271
|
406
541
|
- !ruby/object:SkiBinding::Setting
|
407
542
|
shoe_size_range: !ruby/range 291..310
|
408
|
-
z_value: 8
|
543
|
+
z_value: 8.0
|
409
544
|
twist: *turning_moment
|
410
545
|
forward_lean: *forward_lean
|
411
546
|
- !ruby/object:SkiBinding::Setting
|
412
547
|
shoe_size_range: !ruby/range 311..330
|
413
|
-
z_value: 7
|
548
|
+
z_value: 7.0
|
549
|
+
twist: *turning_moment
|
550
|
+
forward_lean: *forward_lean
|
551
|
+
- !ruby/object:SkiBinding::Setting
|
552
|
+
shoe_size_range: !ruby/range 331..350
|
553
|
+
z_value: 6.5
|
414
554
|
twist: *turning_moment
|
415
555
|
forward_lean: *forward_lean
|
416
556
|
- !ruby/object:SkiBinding::Setting
|
417
557
|
shoe_size_range: !ruby/range
|
418
|
-
begin:
|
558
|
+
begin: 351
|
419
559
|
end: .inf
|
420
|
-
z_value: 6.
|
560
|
+
z_value: 6.0
|
421
561
|
twist: *turning_moment
|
422
562
|
forward_lean: *forward_lean
|
423
563
|
-
|
424
564
|
- !ruby/object:SkiBinding::Setting
|
425
|
-
shoe_size_range: !ruby/range 1..
|
426
|
-
z_value:
|
427
|
-
twist:
|
428
|
-
forward_lean:
|
565
|
+
shoe_size_range: !ruby/range 1..230
|
566
|
+
z_value: ~
|
567
|
+
twist: ~
|
568
|
+
forward_lean: ~
|
569
|
+
- !ruby/object:SkiBinding::Setting
|
570
|
+
shoe_size_range: !ruby/range 231..250
|
571
|
+
z_value: ~
|
572
|
+
twist: ~
|
573
|
+
forward_lean: ~
|
429
574
|
- !ruby/object:SkiBinding::Setting
|
430
575
|
shoe_size_range: !ruby/range 251..270
|
431
|
-
z_value:
|
432
|
-
twist:
|
433
|
-
forward_lean:
|
576
|
+
z_value: ~
|
577
|
+
twist: ~
|
578
|
+
forward_lean: ~
|
434
579
|
- !ruby/object:SkiBinding::Setting
|
435
580
|
shoe_size_range: !ruby/range 271..290
|
436
|
-
z_value: 10
|
437
|
-
twist:
|
438
|
-
forward_lean:
|
581
|
+
z_value: 10.0
|
582
|
+
twist: &turning_moment 78
|
583
|
+
forward_lean: &forward_lean 320
|
439
584
|
- !ruby/object:SkiBinding::Setting
|
440
585
|
shoe_size_range: !ruby/range 291..310
|
441
586
|
z_value: 9.5
|
@@ -446,43 +591,101 @@
|
|
446
591
|
z_value: 8.5
|
447
592
|
twist: *turning_moment
|
448
593
|
forward_lean: *forward_lean
|
594
|
+
- !ruby/object:SkiBinding::Setting
|
595
|
+
shoe_size_range: !ruby/range 331..350
|
596
|
+
z_value: 8.0
|
597
|
+
twist: *turning_moment
|
598
|
+
forward_lean: *forward_lean
|
449
599
|
- !ruby/object:SkiBinding::Setting
|
450
600
|
shoe_size_range: !ruby/range
|
451
|
-
begin:
|
601
|
+
begin: 351
|
452
602
|
end: .inf
|
453
|
-
z_value:
|
603
|
+
z_value: 7.5
|
454
604
|
twist: *turning_moment
|
455
605
|
forward_lean: *forward_lean
|
456
606
|
-
|
457
607
|
- !ruby/object:SkiBinding::Setting
|
458
|
-
shoe_size_range: !ruby/range 1..
|
459
|
-
z_value:
|
608
|
+
shoe_size_range: !ruby/range 1..230
|
609
|
+
z_value: ~
|
610
|
+
twist: ~
|
611
|
+
forward_lean: ~
|
612
|
+
- !ruby/object:SkiBinding::Setting
|
613
|
+
shoe_size_range: !ruby/range 231..250
|
614
|
+
z_value: ~
|
615
|
+
twist: ~
|
616
|
+
forward_lean: ~
|
617
|
+
- !ruby/object:SkiBinding::Setting
|
618
|
+
shoe_size_range: !ruby/range 251..270
|
619
|
+
z_value: ~
|
620
|
+
twist: ~
|
621
|
+
forward_lean: ~
|
622
|
+
- !ruby/object:SkiBinding::Setting
|
623
|
+
shoe_size_range: !ruby/range 271..290
|
624
|
+
z_value: 11.5
|
460
625
|
twist: &turning_moment 91
|
461
626
|
forward_lean: &forward_lean 380
|
462
627
|
- !ruby/object:SkiBinding::Setting
|
463
|
-
shoe_size_range: !ruby/range
|
464
|
-
z_value:
|
628
|
+
shoe_size_range: !ruby/range 291..310
|
629
|
+
z_value: 11.0
|
465
630
|
twist: *turning_moment
|
466
631
|
forward_lean: *forward_lean
|
467
632
|
- !ruby/object:SkiBinding::Setting
|
468
|
-
shoe_size_range: !ruby/range
|
469
|
-
z_value:
|
633
|
+
shoe_size_range: !ruby/range 311..330
|
634
|
+
z_value: 10.0
|
470
635
|
twist: *turning_moment
|
471
636
|
forward_lean: *forward_lean
|
472
637
|
- !ruby/object:SkiBinding::Setting
|
473
|
-
shoe_size_range: !ruby/range
|
474
|
-
z_value:
|
638
|
+
shoe_size_range: !ruby/range 331..350
|
639
|
+
z_value: 9.5
|
475
640
|
twist: *turning_moment
|
476
641
|
forward_lean: *forward_lean
|
642
|
+
- !ruby/object:SkiBinding::Setting
|
643
|
+
shoe_size_range: !ruby/range
|
644
|
+
begin: 351
|
645
|
+
end: .inf
|
646
|
+
z_value: 9.0
|
647
|
+
twist: *turning_moment
|
648
|
+
forward_lean: *forward_lean
|
649
|
+
-
|
650
|
+
- !ruby/object:SkiBinding::Setting
|
651
|
+
shoe_size_range: !ruby/range 1..230
|
652
|
+
z_value: ~
|
653
|
+
twist: ~
|
654
|
+
forward_lean: ~
|
655
|
+
- !ruby/object:SkiBinding::Setting
|
656
|
+
shoe_size_range: !ruby/range 231..250
|
657
|
+
z_value: ~
|
658
|
+
twist: ~
|
659
|
+
forward_lean: ~
|
660
|
+
- !ruby/object:SkiBinding::Setting
|
661
|
+
shoe_size_range: !ruby/range 251..270
|
662
|
+
z_value: ~
|
663
|
+
twist: ~
|
664
|
+
forward_lean: ~
|
665
|
+
- !ruby/object:SkiBinding::Setting
|
666
|
+
shoe_size_range: !ruby/range 271..290
|
667
|
+
z_value: ~
|
668
|
+
twist: ~
|
669
|
+
forward_lean: ~
|
670
|
+
- !ruby/object:SkiBinding::Setting
|
671
|
+
shoe_size_range: !ruby/range 291..310
|
672
|
+
z_value: ~
|
673
|
+
twist: ~
|
674
|
+
forward_lean: ~
|
477
675
|
- !ruby/object:SkiBinding::Setting
|
478
676
|
shoe_size_range: !ruby/range 311..330
|
479
|
-
z_value:
|
677
|
+
z_value: 12.0
|
678
|
+
twist: &turning_moment 105
|
679
|
+
forward_lean: &forward_lean 452
|
680
|
+
- !ruby/object:SkiBinding::Setting
|
681
|
+
shoe_size_range: !ruby/range 331..350
|
682
|
+
z_value: 11.0
|
480
683
|
twist: *turning_moment
|
481
684
|
forward_lean: *forward_lean
|
482
685
|
- !ruby/object:SkiBinding::Setting
|
483
686
|
shoe_size_range: !ruby/range
|
484
|
-
begin:
|
687
|
+
begin: 351
|
485
688
|
end: .inf
|
486
|
-
z_value:
|
689
|
+
z_value: 10.5
|
487
690
|
twist: *turning_moment
|
488
691
|
forward_lean: *forward_lean
|
@@ -3,36 +3,89 @@ require 'ski_binding_calculator/config_loader'
|
|
3
3
|
class SkiBinding::Calculator
|
4
4
|
extend SkiBinding::ConfigLoader
|
5
5
|
|
6
|
-
def self.setting(
|
7
|
-
|
8
|
-
self.
|
6
|
+
def self.setting(attrs)
|
7
|
+
attrs = self.prep_attributes(attrs)
|
8
|
+
attrs = self.age(attrs)
|
9
|
+
attrs = self.validate_type(attrs)
|
10
|
+
code = self.binding_code(attrs)
|
11
|
+
self.binding_setting(attrs, code)
|
9
12
|
end
|
10
13
|
|
11
14
|
private
|
12
|
-
|
13
|
-
|
15
|
+
def self.prep_attributes(attrs)
|
16
|
+
hashy = {}
|
17
|
+
hashy[:weight] = attrs[:weight].to_f || attrs["weight"].to_f
|
18
|
+
if hashy[:weight] < 10
|
19
|
+
raise ArgumentError, "Weight must be at least 10kg"
|
20
|
+
end
|
21
|
+
hashy[:height] = attrs[:height].to_f || attrs["height"].to_f
|
22
|
+
hashy[:shoe_size] = attrs[:shoe_size].to_f || attrs["shoe_size"].to_f
|
23
|
+
hashy[:birthday] = attrs[:birthday] || attrs["birthdate"]
|
24
|
+
hashy[:type] = attrs[:type] || attrs["type"]
|
25
|
+
attrs = hashy
|
26
|
+
attrs
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.age(attrs)
|
30
|
+
birthday = Date.parse(attrs[:birthday])
|
31
|
+
now = Date.today
|
32
|
+
age = now.year - birthday.year
|
33
|
+
age -= ((now.month > birthday.month ||
|
34
|
+
(now.month == birthday.month && now.day >= birthday.day)) ? 0 : 1)
|
35
|
+
attrs.delete(:birthday)
|
36
|
+
attrs[:age] = age
|
37
|
+
attrs
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.validate_type(attrs)
|
41
|
+
type_string = attrs[:type]
|
42
|
+
types = {"Type1-" => -1, "Type1" => 0, "Type2" => 1,
|
43
|
+
"Type3" => 2, "Type3+" => 3}
|
44
|
+
keys = types.keys
|
45
|
+
if keys.include?(type_string)
|
46
|
+
attrs[:type] = types[type_string]
|
47
|
+
else
|
48
|
+
raise ArgumentError, "You have entered an invalid type."
|
49
|
+
end
|
50
|
+
attrs
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.binding_code(attrs)
|
14
54
|
code = -1
|
15
55
|
self.load_binding_codes.each_with_index do |c,i|
|
16
|
-
|
17
|
-
|
18
|
-
|
56
|
+
if c.height.nil?
|
57
|
+
if c.weight.include?(attrs[:weight])
|
58
|
+
code = i
|
59
|
+
break
|
60
|
+
end
|
61
|
+
else
|
62
|
+
if c.weight.include?(attrs[:weight]) || c.height.include?(attrs[:height])
|
63
|
+
code = i
|
64
|
+
break
|
65
|
+
end
|
66
|
+
end
|
19
67
|
end
|
20
|
-
|
21
|
-
|
22
|
-
|
68
|
+
if code == -1
|
69
|
+
raise ArgumentError, "You have entered invalid weight and/or height"
|
70
|
+
end
|
71
|
+
unless attrs[:weight] < 13
|
72
|
+
code += attrs[:type]
|
73
|
+
if attrs[:age] >= 50 || attrs[:age] < 10
|
23
74
|
code -= 1
|
24
75
|
end
|
25
76
|
end
|
26
77
|
code
|
27
78
|
end
|
28
|
-
|
29
|
-
def self.binding_setting(
|
79
|
+
|
80
|
+
def self.binding_setting(attrs, code)
|
30
81
|
settings = self.load_binding_settings(code)
|
31
82
|
settings.each do |s|
|
32
|
-
if s.shoe_size_range.include?(
|
33
|
-
|
34
|
-
|
35
|
-
|
83
|
+
if s.shoe_size_range.include?(attrs[:shoe_size])
|
84
|
+
unless s.z_value.nil?
|
85
|
+
return {"z_value" => s.z_value}
|
86
|
+
else
|
87
|
+
raise ArgumentError, "Please calculate z-index by hand."
|
88
|
+
end
|
36
89
|
end
|
37
90
|
end
|
38
91
|
end
|
@@ -1,11 +1,10 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'ski_binding_calculator'
|
4
|
-
s.version = '0.
|
4
|
+
s.version = '0.6.0'
|
5
5
|
s.date = '2013-08-05'
|
6
6
|
s.summary = "Ski Binding Calculator"
|
7
|
-
s.description = "
|
8
|
-
moment according to ISO 11088."
|
7
|
+
s.description = "Calculates the z-value according to ISO 11088."
|
9
8
|
s.authors = ["Jonas Ruef, Felix Langenegger"]
|
10
9
|
s.email = 'support@fadendaten.ch'
|
11
10
|
s.homepage = 'http://fadendaten.ch'
|
@@ -14,6 +13,7 @@ Gem::Specification.new do |s|
|
|
14
13
|
s.add_development_dependency "rspec", "~> 2.14.1"
|
15
14
|
s.add_development_dependency "spork", "~> 0.9.2"
|
16
15
|
s.add_development_dependency "simplecov", "~> 0.7.1"
|
16
|
+
s.add_development_dependency "timecop", "~> 0.6.3"
|
17
17
|
|
18
18
|
s.files = Dir.glob("{config,lib,spec}/**/*")
|
19
19
|
s.files += %w(Rakefile ski_binding_calculator.gemspec)
|
data/spec/lib/calculator_spec.rb
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'timecop'
|
2
3
|
|
3
4
|
describe SkiBinding::Calculator do
|
4
5
|
before(:all) do
|
5
|
-
@
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
@hash = {:type => "Type2",
|
7
|
+
:weight => "70",
|
8
|
+
:height => "170",
|
9
|
+
:shoe_size => "315",
|
10
|
+
:birthday => "1983-01-01"}
|
11
|
+
#We freeze time so birthday will always be 30 years back
|
12
|
+
Timecop.freeze(2013, 8, 13)
|
9
13
|
end
|
10
14
|
|
11
15
|
describe "#new" do
|
@@ -14,53 +18,130 @@ describe SkiBinding::Calculator do
|
|
14
18
|
end
|
15
19
|
end
|
16
20
|
|
17
|
-
describe "#
|
18
|
-
it "returns a valid
|
19
|
-
|
20
|
-
|
21
|
+
describe "#prep_attributes" do
|
22
|
+
it "returns a valid hash" do
|
23
|
+
expected_hash = {:type => "Type2",
|
24
|
+
:weight => 70.0,
|
25
|
+
:height => 170.0,
|
26
|
+
:shoe_size => 315.0,
|
27
|
+
:birthday => "1983-01-01"}
|
28
|
+
SkiBinding::Calculator.prep_attributes(@hash).should == expected_hash
|
29
|
+
end
|
30
|
+
|
31
|
+
it "returns argument error if weight < 10kg" do
|
32
|
+
@hash[:weight] = "9"
|
33
|
+
expect { SkiBinding::Calculator.prep_attributes(@hash) }
|
34
|
+
.to raise_error(ArgumentError, "Weight must be at least 10kg")
|
35
|
+
@hash[:weight] = "70"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "#age" do
|
40
|
+
before(:all) do
|
41
|
+
@preped_hash = SkiBinding::Calculator.prep_attributes(@hash)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "returns a hash with an age" do
|
45
|
+
result = SkiBinding::Calculator.age(@preped_hash)
|
46
|
+
result[:age].should == 30
|
21
47
|
end
|
22
48
|
end
|
23
49
|
|
50
|
+
describe "#validate_type" do
|
51
|
+
before :all do
|
52
|
+
preped_hash = SkiBinding::Calculator.prep_attributes(@hash)
|
53
|
+
@aged_hash = SkiBinding::Calculator.age(preped_hash)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "sets \"Type2\" to 1" do
|
57
|
+
result = SkiBinding::Calculator.validate_type(@aged_hash)
|
58
|
+
result[:type].should == 1
|
59
|
+
end
|
60
|
+
|
61
|
+
it "raises argument error on type \"unknown\"" do
|
62
|
+
wrong_aged_hash = {:type => "unknown",
|
63
|
+
:weight => 70,
|
64
|
+
:height => 170,
|
65
|
+
:shoe_size => 315,
|
66
|
+
:age => 30}
|
67
|
+
expect { SkiBinding::Calculator.validate_type(wrong_aged_hash) }
|
68
|
+
.to raise_error(ArgumentError, "You have entered an invalid type.")
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
|
24
73
|
describe "#binding_code" do
|
74
|
+
before :each do
|
75
|
+
preped_hash = SkiBinding::Calculator.prep_attributes(@hash)
|
76
|
+
aged_hash = SkiBinding::Calculator.age(preped_hash)
|
77
|
+
@type_validated_hash = SkiBinding::Calculator.validate_type(aged_hash)
|
78
|
+
end
|
79
|
+
|
25
80
|
it "returns a valid code" do
|
26
|
-
SkiBinding::Calculator.binding_code(@
|
81
|
+
SkiBinding::Calculator.binding_code(@type_validated_hash).should == 11
|
82
|
+
end
|
83
|
+
|
84
|
+
it "returns unchanged code if weight less than 13kg" do
|
85
|
+
# because we set "Type2" the code would be changed by 1
|
86
|
+
@type_validated_hash[:weight] = 12
|
87
|
+
SkiBinding::Calculator.binding_code(@type_validated_hash).should == 0
|
88
|
+
end
|
89
|
+
|
90
|
+
it "raises argumentError if no code was found" do
|
91
|
+
@type_validated_hash[:weight] = -1
|
92
|
+
@type_validated_hash[:height] = -1
|
93
|
+
expect { SkiBinding::Calculator.binding_code(@type_validated_hash) }
|
94
|
+
.to raise_error(ArgumentError, "You have entered invalid weight and/or height")
|
27
95
|
end
|
28
96
|
|
29
|
-
context "returns code one less if age >= 50" do
|
97
|
+
context "returns code one less if age >= 50 || age < 10" do
|
30
98
|
before :each do
|
31
|
-
|
99
|
+
preped_hash = SkiBinding::Calculator.prep_attributes(@hash)
|
100
|
+
aged_hash = SkiBinding::Calculator.age(preped_hash)
|
101
|
+
@type_validated_hash_age_context = SkiBinding::Calculator.validate_type(aged_hash)
|
102
|
+
@code = SkiBinding::Calculator.binding_code(@type_validated_hash_age_context)
|
32
103
|
end
|
33
104
|
|
34
105
|
it "age is 50" do
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
lambda { @code = SkiBinding::Calculator.binding_code(person) }
|
39
|
-
.should change{@code}.by(-1)
|
106
|
+
@type_validated_hash_age_context[:age] = 50
|
107
|
+
lambda { @code = SkiBinding::Calculator.binding_code(@type_validated_hash_age_context) }
|
108
|
+
.should change{@code}.by(-1)
|
40
109
|
end
|
41
110
|
|
42
111
|
it "age is 51" do
|
43
|
-
|
44
|
-
|
45
|
-
person = SkiBinding::Person.new(hash)
|
46
|
-
lambda { @code = SkiBinding::Calculator.binding_code(person) }
|
112
|
+
@type_validated_hash_age_context[:age] = 51
|
113
|
+
lambda { @code = SkiBinding::Calculator.binding_code(@type_validated_hash_age_context) }
|
47
114
|
.should change{@code}.by(-1)
|
48
115
|
end
|
49
116
|
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe "#binding_setting" do
|
120
|
+
before :each do
|
121
|
+
preped_hash = SkiBinding::Calculator.prep_attributes(@hash)
|
122
|
+
aged_hash = SkiBinding::Calculator.age(preped_hash)
|
123
|
+
@type_validated_hash = SkiBinding::Calculator.validate_type(aged_hash)
|
124
|
+
end
|
50
125
|
|
51
|
-
it "returns
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
126
|
+
it "returns a valid setting" do
|
127
|
+
SkiBinding::Calculator.binding_setting(@type_validated_hash, 11).should ==
|
128
|
+
{"z_value"=>6}
|
129
|
+
end
|
130
|
+
|
131
|
+
it "raises argument error if no settings found" do
|
132
|
+
expect { SkiBinding::Calculator.binding_setting(@type_validated_hash, 0) }
|
133
|
+
.to raise_error(ArgumentError, "Please calculate z-index by hand.")
|
57
134
|
end
|
58
135
|
end
|
59
136
|
|
60
|
-
describe "#
|
137
|
+
describe "#setting" do
|
61
138
|
it "returns a valid setting" do
|
62
|
-
SkiBinding::Calculator.
|
63
|
-
{"z_value"=>6
|
139
|
+
SkiBinding::Calculator.setting(@hash).should ==
|
140
|
+
{"z_value"=>6}
|
64
141
|
end
|
65
142
|
end
|
143
|
+
|
144
|
+
after(:all) do
|
145
|
+
Timecop.return
|
146
|
+
end
|
66
147
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe "ConfigLoader" do
|
4
4
|
|
5
5
|
before(:all) do
|
6
|
-
@range = 0..
|
6
|
+
@range = 0..15 #cause 16 settings
|
7
7
|
@dummy_class = DummyClass.new
|
8
8
|
@dummy_class.extend(SkiBinding::ConfigLoader)
|
9
9
|
end
|
@@ -61,7 +61,7 @@ describe "ConfigLoader" do
|
|
61
61
|
|
62
62
|
it "has 6 settings" do
|
63
63
|
@settings_all_codes.each do |s|
|
64
|
-
s.size.should ==
|
64
|
+
s.size.should == 8
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ski_binding_calculator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -59,8 +59,23 @@ dependencies:
|
|
59
59
|
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 0.7.1
|
62
|
-
|
63
|
-
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: timecop
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.6.3
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.6.3
|
78
|
+
description: Calculates the z-value according to ISO 11088.
|
64
79
|
email: support@fadendaten.ch
|
65
80
|
executables: []
|
66
81
|
extensions: []
|
@@ -71,14 +86,12 @@ files:
|
|
71
86
|
- lib/ski_binding_calculator/calculator.rb
|
72
87
|
- lib/ski_binding_calculator/code.rb
|
73
88
|
- lib/ski_binding_calculator/config_loader.rb
|
74
|
-
- lib/ski_binding_calculator/person.rb
|
75
89
|
- lib/ski_binding_calculator/setting.rb
|
76
90
|
- lib/ski_binding_calculator/ski_binding.rb
|
77
91
|
- lib/ski_binding_calculator.rb
|
78
92
|
- spec/lib/calculator_spec.rb
|
79
93
|
- spec/lib/code_spec.rb
|
80
94
|
- spec/lib/config_loader_spec.rb
|
81
|
-
- spec/lib/person_spec.rb
|
82
95
|
- spec/lib/setting_spec.rb
|
83
96
|
- spec/spec_helper.rb
|
84
97
|
- Rakefile
|
@@ -1,20 +0,0 @@
|
|
1
|
-
class SkiBinding::Person
|
2
|
-
attr_reader :type, :weight, :height, :shoe_size, :age
|
3
|
-
|
4
|
-
def initialize(values_hash)
|
5
|
-
@type = validate_type(values_hash["type"] || values_hash[:type])
|
6
|
-
@weight = values_hash["weight"] || values_hash[:weight]
|
7
|
-
@height = values_hash["height"] || values_hash[:height]
|
8
|
-
@shoe_size = values_hash["shoe_size"] || values_hash[:shoe_size]
|
9
|
-
@age = values_hash["age"] || values_hash[:age]
|
10
|
-
end
|
11
|
-
|
12
|
-
private
|
13
|
-
|
14
|
-
def validate_type(type)
|
15
|
-
types = {"Type1-" => -1, "Type1" => 0, "Type2" => 1,
|
16
|
-
"Type3" => 2, "Type3+" => 3}
|
17
|
-
keys = types.keys
|
18
|
-
types[type] if keys.include?(type)
|
19
|
-
end
|
20
|
-
end
|
data/spec/lib/person_spec.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe SkiBinding::Person do
|
4
|
-
before :all do
|
5
|
-
@hash = {:type => "Type2",
|
6
|
-
:weight => 70,
|
7
|
-
:height => 170,
|
8
|
-
:shoe_size => 315,
|
9
|
-
:age => 30}
|
10
|
-
end
|
11
|
-
|
12
|
-
describe "#new" do
|
13
|
-
it "should return a Person class" do
|
14
|
-
SkiBinding::Person.new(@hash).class.should == SkiBinding::Person
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
context "instantiated Person class" do
|
19
|
-
before :all do
|
20
|
-
@person = SkiBinding::Person.new(@hash)
|
21
|
-
end
|
22
|
-
|
23
|
-
it "has attribute type" do
|
24
|
-
@person.should respond_to :type
|
25
|
-
end
|
26
|
-
|
27
|
-
it "has attribute weight" do
|
28
|
-
@person.should respond_to :weight
|
29
|
-
end
|
30
|
-
|
31
|
-
it "has attribute heigth" do
|
32
|
-
@person.should respond_to :height
|
33
|
-
end
|
34
|
-
|
35
|
-
it "has attribute shoe_size" do
|
36
|
-
@person.should respond_to :shoe_size
|
37
|
-
end
|
38
|
-
|
39
|
-
it "has attribute age" do
|
40
|
-
@person.should respond_to :age
|
41
|
-
end
|
42
|
-
|
43
|
-
describe "validates type" do
|
44
|
-
it "sets \"Type2\" to 1" do
|
45
|
-
@person.type.should == 1
|
46
|
-
end
|
47
|
-
|
48
|
-
it "sets type \"unknown\" to nil" do
|
49
|
-
hash = {:type => "unknown",
|
50
|
-
:weight => 70,
|
51
|
-
:height => 170,
|
52
|
-
:shoe_size => 315,
|
53
|
-
:age => 30}
|
54
|
-
SkiBinding::Person.new(hash).type.should == nil
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|