tins 1.38.0 → 1.48.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.
- checksums.yaml +4 -4
- data/CHANGES.md +132 -0
- data/README.md +158 -6
- data/Rakefile +27 -18
- data/examples/let.rb +8 -40
- data/examples/mail.rb +0 -1
- data/examples/turing.rb +3 -1
- data/lib/tins/alias.rb +1 -0
- data/lib/tins/annotate.rb +37 -27
- data/lib/tins/ask_and_send.rb +41 -0
- data/lib/tins/attempt.rb +39 -0
- data/lib/tins/bijection.rb +34 -0
- data/lib/tins/case_predicate.rb +21 -0
- data/lib/tins/complete.rb +16 -0
- data/lib/tins/concern.rb +64 -0
- data/lib/tins/date_dummy.rb +36 -4
- data/lib/tins/date_time_dummy.rb +34 -2
- data/lib/tins/deep_dup.rb +9 -2
- data/lib/tins/deprecate.rb +12 -0
- data/lib/tins/dslkit.rb +563 -59
- data/lib/tins/duration.rb +120 -5
- data/lib/tins/expose.rb +54 -5
- data/lib/tins/extract_last_argument_options.rb +9 -0
- data/lib/tins/file_binary.rb +104 -21
- data/lib/tins/find.rb +114 -11
- data/lib/tins/generator.rb +10 -2
- data/lib/tins/go.rb +78 -14
- data/lib/tins/hash_bfs.rb +4 -2
- data/lib/tins/hash_symbolize_keys_recursive.rb +62 -4
- data/lib/tins/hash_union.rb +47 -2
- data/lib/tins/if_predicate.rb +31 -0
- data/lib/tins/implement.rb +50 -0
- data/lib/tins/limited.rb +63 -12
- data/lib/tins/lines_file.rb +81 -2
- data/lib/tins/lru_cache.rb +54 -17
- data/lib/tins/memoize.rb +86 -58
- data/lib/tins/method_description.rb +87 -4
- data/lib/tins/minimize.rb +39 -11
- data/lib/tins/module_group.rb +27 -2
- data/lib/tins/named_set.rb +20 -0
- data/lib/tins/null.rb +86 -15
- data/lib/tins/once.rb +61 -4
- data/lib/tins/p.rb +44 -8
- data/lib/tins/partial_application.rb +66 -7
- data/lib/tins/proc_compose.rb +58 -1
- data/lib/tins/proc_prelude.rb +97 -10
- data/lib/tins/range_plus.rb +30 -2
- data/lib/tins/require_maybe.rb +36 -0
- data/lib/tins/responding.rb +39 -0
- data/lib/tins/secure_write.rb +24 -4
- data/lib/tins/sexy_singleton.rb +45 -48
- data/lib/tins/string_byte_order_mark.rb +33 -2
- data/lib/tins/string_camelize.rb +31 -2
- data/lib/tins/string_named_placeholders.rb +70 -0
- data/lib/tins/string_underscore.rb +33 -2
- data/lib/tins/string_version.rb +190 -12
- data/lib/tins/subhash.rb +35 -10
- data/lib/tins/temp_io.rb +7 -0
- data/lib/tins/temp_io_enum.rb +19 -0
- data/lib/tins/terminal.rb +31 -9
- data/lib/tins/thread_local.rb +67 -5
- data/lib/tins/time_dummy.rb +46 -21
- data/lib/tins/to.rb +15 -0
- data/lib/tins/to_proc.rb +17 -4
- data/lib/tins/token.rb +74 -2
- data/lib/tins/unit.rb +288 -149
- data/lib/tins/version.rb +1 -1
- data/lib/tins/write.rb +14 -3
- data/lib/tins/xt/blank.rb +81 -2
- data/lib/tins/xt/concern.rb +51 -0
- data/lib/tins/xt/deep_dup.rb +4 -2
- data/lib/tins/xt/full.rb +56 -11
- data/lib/tins/xt/irb.rb +46 -2
- data/lib/tins/xt/method_description.rb +0 -12
- data/lib/tins/xt/minimize.rb +7 -0
- data/lib/tins/xt/named.rb +71 -16
- data/lib/tins/xt/proc_compose.rb +4 -0
- data/lib/tins/xt/secure_write.rb +0 -4
- data/lib/tins/xt/string.rb +1 -0
- data/lib/tins/xt/string_camelize.rb +4 -2
- data/lib/tins/xt/string_named_placeholders.rb +7 -0
- data/lib/tins/xt/string_underscore.rb +4 -2
- data/lib/tins/xt/subhash.rb +11 -0
- data/lib/tins/xt/time_freezer.rb +43 -6
- data/lib/tins/xt/write.rb +0 -4
- data/lib/tins/xt.rb +1 -3
- data/lib/tins.rb +17 -3
- data/tests/dslkit_test.rb +15 -0
- data/tests/duration_test.rb +4 -0
- data/tests/from_module_test.rb +30 -2
- data/tests/go_test.rb +4 -2
- data/tests/implement_test.rb +6 -8
- data/tests/limited_test.rb +1 -1
- data/tests/lines_file_test.rb +2 -0
- data/tests/lru_cache_test.rb +12 -0
- data/tests/method_description_test.rb +14 -20
- data/tests/partial_application_test.rb +4 -0
- data/tests/proc_prelude_test.rb +1 -1
- data/tests/scope_test.rb +1 -1
- data/tests/string_named_placeholders.rb +109 -0
- data/tests/string_version_test.rb +15 -0
- data/tests/test_helper.rb +4 -5
- data/tests/to_test.rb +6 -6
- data/tests/token_test.rb +32 -1
- data/tins.gemspec +12 -11
- metadata +39 -37
- data/lib/tins/count_by.rb +0 -21
- data/lib/tins/deep_const_get.rb +0 -64
- data/lib/tins/timed_cache.rb +0 -51
- data/lib/tins/uniq_by.rb +0 -23
- data/lib/tins/xt/count_by.rb +0 -7
- data/lib/tins/xt/deep_const_get.rb +0 -7
- data/lib/tins/xt/uniq_by.rb +0 -25
- data/tests/count_by_test.rb +0 -17
- data/tests/deep_const_get_test.rb +0 -37
- data/tests/uniq_by_test.rb +0 -31
- /data/{COPYING → LICENSE} +0 -0
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: tins
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.48.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Florian Frank
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: gem_hadar
|
|
@@ -15,14 +15,14 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - "~>"
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: '
|
|
18
|
+
version: '2.8'
|
|
19
19
|
type: :development
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
23
|
- - "~>"
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: '
|
|
25
|
+
version: '2.8'
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: all_images
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -51,6 +51,20 @@ dependencies:
|
|
|
51
51
|
- - ">="
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
53
|
version: '0'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: simplecov
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - ">="
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '0'
|
|
61
|
+
type: :development
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - ">="
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '0'
|
|
54
68
|
- !ruby/object:Gem::Dependency
|
|
55
69
|
name: term-ansicolor
|
|
56
70
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -71,22 +85,22 @@ dependencies:
|
|
|
71
85
|
requirements:
|
|
72
86
|
- - "~>"
|
|
73
87
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: '3.
|
|
88
|
+
version: '3.7'
|
|
75
89
|
type: :development
|
|
76
90
|
prerelease: false
|
|
77
91
|
version_requirements: !ruby/object:Gem::Requirement
|
|
78
92
|
requirements:
|
|
79
93
|
- - "~>"
|
|
80
94
|
- !ruby/object:Gem::Version
|
|
81
|
-
version: '3.
|
|
95
|
+
version: '3.7'
|
|
82
96
|
- !ruby/object:Gem::Dependency
|
|
83
|
-
name:
|
|
97
|
+
name: sync
|
|
84
98
|
requirement: !ruby/object:Gem::Requirement
|
|
85
99
|
requirements:
|
|
86
100
|
- - ">="
|
|
87
101
|
- !ruby/object:Gem::Version
|
|
88
102
|
version: '0'
|
|
89
|
-
type: :
|
|
103
|
+
type: :runtime
|
|
90
104
|
prerelease: false
|
|
91
105
|
version_requirements: !ruby/object:Gem::Requirement
|
|
92
106
|
requirements:
|
|
@@ -94,7 +108,7 @@ dependencies:
|
|
|
94
108
|
- !ruby/object:Gem::Version
|
|
95
109
|
version: '0'
|
|
96
110
|
- !ruby/object:Gem::Dependency
|
|
97
|
-
name:
|
|
111
|
+
name: bigdecimal
|
|
98
112
|
requirement: !ruby/object:Gem::Requirement
|
|
99
113
|
requirements:
|
|
100
114
|
- - ">="
|
|
@@ -108,19 +122,19 @@ dependencies:
|
|
|
108
122
|
- !ruby/object:Gem::Version
|
|
109
123
|
version: '0'
|
|
110
124
|
- !ruby/object:Gem::Dependency
|
|
111
|
-
name:
|
|
125
|
+
name: mize
|
|
112
126
|
requirement: !ruby/object:Gem::Requirement
|
|
113
127
|
requirements:
|
|
114
|
-
- - "
|
|
128
|
+
- - "~>"
|
|
115
129
|
- !ruby/object:Gem::Version
|
|
116
|
-
version: '0'
|
|
130
|
+
version: '0.6'
|
|
117
131
|
type: :runtime
|
|
118
132
|
prerelease: false
|
|
119
133
|
version_requirements: !ruby/object:Gem::Requirement
|
|
120
134
|
requirements:
|
|
121
|
-
- - "
|
|
135
|
+
- - "~>"
|
|
122
136
|
- !ruby/object:Gem::Version
|
|
123
|
-
version: '0'
|
|
137
|
+
version: '0.6'
|
|
124
138
|
description: All the stuff that isn't good/big enough for a real library.
|
|
125
139
|
email: flori@ping.de
|
|
126
140
|
executables: []
|
|
@@ -140,10 +154,8 @@ extra_rdoc_files:
|
|
|
140
154
|
- lib/tins/case_predicate.rb
|
|
141
155
|
- lib/tins/complete.rb
|
|
142
156
|
- lib/tins/concern.rb
|
|
143
|
-
- lib/tins/count_by.rb
|
|
144
157
|
- lib/tins/date_dummy.rb
|
|
145
158
|
- lib/tins/date_time_dummy.rb
|
|
146
|
-
- lib/tins/deep_const_get.rb
|
|
147
159
|
- lib/tins/deep_dup.rb
|
|
148
160
|
- lib/tins/deprecate.rb
|
|
149
161
|
- lib/tins/dslkit.rb
|
|
@@ -180,6 +192,7 @@ extra_rdoc_files:
|
|
|
180
192
|
- lib/tins/sexy_singleton.rb
|
|
181
193
|
- lib/tins/string_byte_order_mark.rb
|
|
182
194
|
- lib/tins/string_camelize.rb
|
|
195
|
+
- lib/tins/string_named_placeholders.rb
|
|
183
196
|
- lib/tins/string_underscore.rb
|
|
184
197
|
- lib/tins/string_version.rb
|
|
185
198
|
- lib/tins/subhash.rb
|
|
@@ -188,11 +201,9 @@ extra_rdoc_files:
|
|
|
188
201
|
- lib/tins/terminal.rb
|
|
189
202
|
- lib/tins/thread_local.rb
|
|
190
203
|
- lib/tins/time_dummy.rb
|
|
191
|
-
- lib/tins/timed_cache.rb
|
|
192
204
|
- lib/tins/to.rb
|
|
193
205
|
- lib/tins/to_proc.rb
|
|
194
206
|
- lib/tins/token.rb
|
|
195
|
-
- lib/tins/uniq_by.rb
|
|
196
207
|
- lib/tins/unit.rb
|
|
197
208
|
- lib/tins/version.rb
|
|
198
209
|
- lib/tins/write.rb
|
|
@@ -204,10 +215,8 @@ extra_rdoc_files:
|
|
|
204
215
|
- lib/tins/xt/case_predicate.rb
|
|
205
216
|
- lib/tins/xt/complete.rb
|
|
206
217
|
- lib/tins/xt/concern.rb
|
|
207
|
-
- lib/tins/xt/count_by.rb
|
|
208
218
|
- lib/tins/xt/date_dummy.rb
|
|
209
219
|
- lib/tins/xt/date_time_dummy.rb
|
|
210
|
-
- lib/tins/xt/deep_const_get.rb
|
|
211
220
|
- lib/tins/xt/deep_dup.rb
|
|
212
221
|
- lib/tins/xt/deprecate.rb
|
|
213
222
|
- lib/tins/xt/dslkit.rb
|
|
@@ -222,6 +231,7 @@ extra_rdoc_files:
|
|
|
222
231
|
- lib/tins/xt/implement.rb
|
|
223
232
|
- lib/tins/xt/irb.rb
|
|
224
233
|
- lib/tins/xt/method_description.rb
|
|
234
|
+
- lib/tins/xt/minimize.rb
|
|
225
235
|
- lib/tins/xt/named.rb
|
|
226
236
|
- lib/tins/xt/null.rb
|
|
227
237
|
- lib/tins/xt/p.rb
|
|
@@ -236,6 +246,7 @@ extra_rdoc_files:
|
|
|
236
246
|
- lib/tins/xt/string.rb
|
|
237
247
|
- lib/tins/xt/string_byte_order_mark.rb
|
|
238
248
|
- lib/tins/xt/string_camelize.rb
|
|
249
|
+
- lib/tins/xt/string_named_placeholders.rb
|
|
239
250
|
- lib/tins/xt/string_underscore.rb
|
|
240
251
|
- lib/tins/xt/string_version.rb
|
|
241
252
|
- lib/tins/xt/subhash.rb
|
|
@@ -243,12 +254,11 @@ extra_rdoc_files:
|
|
|
243
254
|
- lib/tins/xt/time_dummy.rb
|
|
244
255
|
- lib/tins/xt/time_freezer.rb
|
|
245
256
|
- lib/tins/xt/to.rb
|
|
246
|
-
- lib/tins/xt/uniq_by.rb
|
|
247
257
|
- lib/tins/xt/write.rb
|
|
248
258
|
files:
|
|
249
259
|
- CHANGES.md
|
|
250
|
-
- COPYING
|
|
251
260
|
- Gemfile
|
|
261
|
+
- LICENSE
|
|
252
262
|
- README.md
|
|
253
263
|
- Rakefile
|
|
254
264
|
- examples/add_one.png
|
|
@@ -289,10 +299,8 @@ files:
|
|
|
289
299
|
- lib/tins/case_predicate.rb
|
|
290
300
|
- lib/tins/complete.rb
|
|
291
301
|
- lib/tins/concern.rb
|
|
292
|
-
- lib/tins/count_by.rb
|
|
293
302
|
- lib/tins/date_dummy.rb
|
|
294
303
|
- lib/tins/date_time_dummy.rb
|
|
295
|
-
- lib/tins/deep_const_get.rb
|
|
296
304
|
- lib/tins/deep_dup.rb
|
|
297
305
|
- lib/tins/deprecate.rb
|
|
298
306
|
- lib/tins/dslkit.rb
|
|
@@ -329,6 +337,7 @@ files:
|
|
|
329
337
|
- lib/tins/sexy_singleton.rb
|
|
330
338
|
- lib/tins/string_byte_order_mark.rb
|
|
331
339
|
- lib/tins/string_camelize.rb
|
|
340
|
+
- lib/tins/string_named_placeholders.rb
|
|
332
341
|
- lib/tins/string_underscore.rb
|
|
333
342
|
- lib/tins/string_version.rb
|
|
334
343
|
- lib/tins/subhash.rb
|
|
@@ -337,11 +346,9 @@ files:
|
|
|
337
346
|
- lib/tins/terminal.rb
|
|
338
347
|
- lib/tins/thread_local.rb
|
|
339
348
|
- lib/tins/time_dummy.rb
|
|
340
|
-
- lib/tins/timed_cache.rb
|
|
341
349
|
- lib/tins/to.rb
|
|
342
350
|
- lib/tins/to_proc.rb
|
|
343
351
|
- lib/tins/token.rb
|
|
344
|
-
- lib/tins/uniq_by.rb
|
|
345
352
|
- lib/tins/unit.rb
|
|
346
353
|
- lib/tins/version.rb
|
|
347
354
|
- lib/tins/write.rb
|
|
@@ -353,10 +360,8 @@ files:
|
|
|
353
360
|
- lib/tins/xt/case_predicate.rb
|
|
354
361
|
- lib/tins/xt/complete.rb
|
|
355
362
|
- lib/tins/xt/concern.rb
|
|
356
|
-
- lib/tins/xt/count_by.rb
|
|
357
363
|
- lib/tins/xt/date_dummy.rb
|
|
358
364
|
- lib/tins/xt/date_time_dummy.rb
|
|
359
|
-
- lib/tins/xt/deep_const_get.rb
|
|
360
365
|
- lib/tins/xt/deep_dup.rb
|
|
361
366
|
- lib/tins/xt/deprecate.rb
|
|
362
367
|
- lib/tins/xt/dslkit.rb
|
|
@@ -371,6 +376,7 @@ files:
|
|
|
371
376
|
- lib/tins/xt/implement.rb
|
|
372
377
|
- lib/tins/xt/irb.rb
|
|
373
378
|
- lib/tins/xt/method_description.rb
|
|
379
|
+
- lib/tins/xt/minimize.rb
|
|
374
380
|
- lib/tins/xt/named.rb
|
|
375
381
|
- lib/tins/xt/null.rb
|
|
376
382
|
- lib/tins/xt/p.rb
|
|
@@ -385,6 +391,7 @@ files:
|
|
|
385
391
|
- lib/tins/xt/string.rb
|
|
386
392
|
- lib/tins/xt/string_byte_order_mark.rb
|
|
387
393
|
- lib/tins/xt/string_camelize.rb
|
|
394
|
+
- lib/tins/xt/string_named_placeholders.rb
|
|
388
395
|
- lib/tins/xt/string_underscore.rb
|
|
389
396
|
- lib/tins/xt/string_version.rb
|
|
390
397
|
- lib/tins/xt/subhash.rb
|
|
@@ -392,7 +399,6 @@ files:
|
|
|
392
399
|
- lib/tins/xt/time_dummy.rb
|
|
393
400
|
- lib/tins/xt/time_freezer.rb
|
|
394
401
|
- lib/tins/xt/to.rb
|
|
395
|
-
- lib/tins/xt/uniq_by.rb
|
|
396
402
|
- lib/tins/xt/write.rb
|
|
397
403
|
- tests/annotate_test.rb
|
|
398
404
|
- tests/ask_and_send_test.rb
|
|
@@ -401,10 +407,8 @@ files:
|
|
|
401
407
|
- tests/blank_full_test.rb
|
|
402
408
|
- tests/case_predicate_test.rb
|
|
403
409
|
- tests/concern_test.rb
|
|
404
|
-
- tests/count_by_test.rb
|
|
405
410
|
- tests/date_dummy_test.rb
|
|
406
411
|
- tests/date_time_dummy_test.rb
|
|
407
|
-
- tests/deep_const_get_test.rb
|
|
408
412
|
- tests/deep_dup_test.rb
|
|
409
413
|
- tests/delegate_test.rb
|
|
410
414
|
- tests/deprecate_test.rb
|
|
@@ -446,6 +450,7 @@ files:
|
|
|
446
450
|
- tests/sexy_singleton_test.rb
|
|
447
451
|
- tests/string_byte_order_mark_test.rb
|
|
448
452
|
- tests/string_camelize_test.rb
|
|
453
|
+
- tests/string_named_placeholders.rb
|
|
449
454
|
- tests/string_underscore_test.rb
|
|
450
455
|
- tests/string_version_test.rb
|
|
451
456
|
- tests/subhash_test.rb
|
|
@@ -455,7 +460,6 @@ files:
|
|
|
455
460
|
- tests/time_freezer_test.rb
|
|
456
461
|
- tests/to_test.rb
|
|
457
462
|
- tests/token_test.rb
|
|
458
|
-
- tests/uniq_by_test.rb
|
|
459
463
|
- tests/unit_test.rb
|
|
460
464
|
- tins.gemspec
|
|
461
465
|
homepage: https://github.com/flori/tins
|
|
@@ -473,14 +477,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
473
477
|
requirements:
|
|
474
478
|
- - ">="
|
|
475
479
|
- !ruby/object:Gem::Version
|
|
476
|
-
version: '
|
|
480
|
+
version: '3.1'
|
|
477
481
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
478
482
|
requirements:
|
|
479
483
|
- - ">="
|
|
480
484
|
- !ruby/object:Gem::Version
|
|
481
485
|
version: '0'
|
|
482
486
|
requirements: []
|
|
483
|
-
rubygems_version: 3.
|
|
487
|
+
rubygems_version: 3.7.2
|
|
484
488
|
specification_version: 4
|
|
485
489
|
summary: Useful stuff.
|
|
486
490
|
test_files:
|
|
@@ -491,10 +495,8 @@ test_files:
|
|
|
491
495
|
- tests/blank_full_test.rb
|
|
492
496
|
- tests/case_predicate_test.rb
|
|
493
497
|
- tests/concern_test.rb
|
|
494
|
-
- tests/count_by_test.rb
|
|
495
498
|
- tests/date_dummy_test.rb
|
|
496
499
|
- tests/date_time_dummy_test.rb
|
|
497
|
-
- tests/deep_const_get_test.rb
|
|
498
500
|
- tests/deep_dup_test.rb
|
|
499
501
|
- tests/delegate_test.rb
|
|
500
502
|
- tests/deprecate_test.rb
|
|
@@ -536,6 +538,7 @@ test_files:
|
|
|
536
538
|
- tests/sexy_singleton_test.rb
|
|
537
539
|
- tests/string_byte_order_mark_test.rb
|
|
538
540
|
- tests/string_camelize_test.rb
|
|
541
|
+
- tests/string_named_placeholders.rb
|
|
539
542
|
- tests/string_underscore_test.rb
|
|
540
543
|
- tests/string_version_test.rb
|
|
541
544
|
- tests/subhash_test.rb
|
|
@@ -545,5 +548,4 @@ test_files:
|
|
|
545
548
|
- tests/time_freezer_test.rb
|
|
546
549
|
- tests/to_test.rb
|
|
547
550
|
- tests/token_test.rb
|
|
548
|
-
- tests/uniq_by_test.rb
|
|
549
551
|
- tests/unit_test.rb
|
data/lib/tins/count_by.rb
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
require 'tins/string_version'
|
|
2
|
-
|
|
3
|
-
module Tins
|
|
4
|
-
module CountBy
|
|
5
|
-
if Tins::StringVersion.compare(RUBY_VERSION, :<=, "1.8")
|
|
6
|
-
def count_by(&block)
|
|
7
|
-
block ||= lambda { |x| true }
|
|
8
|
-
inject(0) { |s, e| s += 1 if block.call(e); s }
|
|
9
|
-
end
|
|
10
|
-
else
|
|
11
|
-
require 'tins/deprecate'
|
|
12
|
-
extend Tins::Deprecate
|
|
13
|
-
|
|
14
|
-
deprecate method:
|
|
15
|
-
def count_by(&block)
|
|
16
|
-
count(&block)
|
|
17
|
-
end,
|
|
18
|
-
new_method: :count
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
data/lib/tins/deep_const_get.rb
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
require 'tins/string_version'
|
|
2
|
-
|
|
3
|
-
module Tins
|
|
4
|
-
module DeepConstGet
|
|
5
|
-
class << self
|
|
6
|
-
if ::Object.method(:const_defined?).arity == 1
|
|
7
|
-
# :nocov:
|
|
8
|
-
# We do not create coverage on 1.8
|
|
9
|
-
def const_defined_in?(modul, constant)
|
|
10
|
-
modul.const_defined?(constant)
|
|
11
|
-
end
|
|
12
|
-
# :nocov:
|
|
13
|
-
else
|
|
14
|
-
require 'tins/deprecate'
|
|
15
|
-
extend Tins::Deprecate
|
|
16
|
-
|
|
17
|
-
deprecate method:
|
|
18
|
-
def const_defined_in?(modul, constant)
|
|
19
|
-
modul.const_defined?(constant, false)
|
|
20
|
-
end,
|
|
21
|
-
new_method: :const_defined?
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
if Tins::StringVersion.compare(RUBY_VERSION, :<, '2.0')
|
|
25
|
-
def deep_const_get(path, start_module = Object)
|
|
26
|
-
path.to_s.split('::').inject(start_module) do |p, c|
|
|
27
|
-
case
|
|
28
|
-
when c.empty?
|
|
29
|
-
if start_module == Object
|
|
30
|
-
Object
|
|
31
|
-
else
|
|
32
|
-
raise ArgumentError, "top level constants cannot be reached from"\
|
|
33
|
-
" start module #{start_module.inspect}"
|
|
34
|
-
end
|
|
35
|
-
when const_defined_in?(p, c)
|
|
36
|
-
p.const_get(c)
|
|
37
|
-
else
|
|
38
|
-
begin
|
|
39
|
-
p.const_missing(c)
|
|
40
|
-
rescue NameError => e
|
|
41
|
-
raise ArgumentError, "can't get const #{path}: #{e}"
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
else
|
|
47
|
-
require 'tins/deprecate'
|
|
48
|
-
extend Tins::Deprecate
|
|
49
|
-
|
|
50
|
-
deprecate method:
|
|
51
|
-
def deep_const_get(path, start_module = Object)
|
|
52
|
-
start_module.const_get(path)
|
|
53
|
-
rescue NameError => e
|
|
54
|
-
raise ArgumentError, "can't get const #{path}: #{e}"
|
|
55
|
-
end,
|
|
56
|
-
new_method: :const_get
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def deep_const_get(path, start_module = Object)
|
|
61
|
-
::Tins::DeepConstGet.deep_const_get(path, start_module)
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
data/lib/tins/timed_cache.rb
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
class TimedCache
|
|
2
|
-
class Value < Struct.new(:value, :timestamp)
|
|
3
|
-
def self.json_create(hash)
|
|
4
|
-
new(*hash.values_at('value', 'timestamp'))
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
def as_json(*)
|
|
8
|
-
super | { JSON.create_id => self.class.name }
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def initialize(name, ttl: 60, jitter: 1..5, &block)
|
|
13
|
-
@name = name
|
|
14
|
-
@ttl = ttl
|
|
15
|
-
@jitter = jitter
|
|
16
|
-
block or raise ArgumentError, 'block is required'
|
|
17
|
-
@block = block
|
|
18
|
-
@redis = Redis.new
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def namespaced(key)
|
|
22
|
-
"timed_cache:#{key}"
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def value
|
|
26
|
-
now = Time.now
|
|
27
|
-
if stored = stored_value
|
|
28
|
-
if (now - @ttl).to_i >= stored.timestamp
|
|
29
|
-
Thread.new {
|
|
30
|
-
sleep @jitter
|
|
31
|
-
if stored_value.timestamp <= stored.timestamp
|
|
32
|
-
@redis.set namespaced(@name), new_value(now).to_json
|
|
33
|
-
end
|
|
34
|
-
}
|
|
35
|
-
end
|
|
36
|
-
stored.value
|
|
37
|
-
else
|
|
38
|
-
nv = new_value(now)
|
|
39
|
-
@redis.set namespaced(@name), nv.to_json
|
|
40
|
-
nv.value
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def new_value(now)
|
|
45
|
-
Value.new(@block.(), now.to_i)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def stored_value
|
|
49
|
-
@redis.get(namespaced(@name)).full? { |s| ::JSON.parse(s, create_additions: true) rescue nil }
|
|
50
|
-
end
|
|
51
|
-
end
|
data/lib/tins/uniq_by.rb
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
require 'tins/string_version'
|
|
2
|
-
|
|
3
|
-
module Tins
|
|
4
|
-
module UniqBy
|
|
5
|
-
if Tins::StringVersion.compare(RUBY_VERSION, :<=, "1.8")
|
|
6
|
-
def uniq_by(&block)
|
|
7
|
-
block ||= lambda { |x| x }
|
|
8
|
-
inject({}) { |h, e| h[ block.call(e) ] ||= e; h }.values
|
|
9
|
-
end
|
|
10
|
-
else
|
|
11
|
-
require 'tins/deprecate'
|
|
12
|
-
extend Tins::Deprecate
|
|
13
|
-
|
|
14
|
-
deprecate method:
|
|
15
|
-
def uniq_by(&block)
|
|
16
|
-
uniq(&block)
|
|
17
|
-
end,
|
|
18
|
-
new_method: :uniq
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
require 'tins/alias'
|
data/lib/tins/xt/count_by.rb
DELETED
data/lib/tins/xt/uniq_by.rb
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
require 'tins/string_version'
|
|
2
|
-
require 'tins/uniq_by'
|
|
3
|
-
|
|
4
|
-
module Tins
|
|
5
|
-
module ::Enumerable
|
|
6
|
-
include UniqBy
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
class ::Array
|
|
10
|
-
if Tins::StringVersion.compare(RUBY_VERSION, :<=, "1.8")
|
|
11
|
-
include UniqBy
|
|
12
|
-
|
|
13
|
-
def uniq_by!(&b)
|
|
14
|
-
replace uniq_by(&b)
|
|
15
|
-
end
|
|
16
|
-
else
|
|
17
|
-
require 'tins/deprecate'
|
|
18
|
-
extend Tins::Deprecate
|
|
19
|
-
|
|
20
|
-
deprecate method:
|
|
21
|
-
alias_method(:uniq_by!, :uniq!),
|
|
22
|
-
new_method: :uniq!
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
data/tests/count_by_test.rb
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
require 'tins/xt'
|
|
3
|
-
|
|
4
|
-
module Tins
|
|
5
|
-
class CountByTest < Test::Unit::TestCase
|
|
6
|
-
|
|
7
|
-
def test_count_by
|
|
8
|
-
assert_equal 0, [].count_by { |x| x % 2 == 0 }
|
|
9
|
-
assert_equal 0, [ 1 ].count_by { |x| x % 2 == 0 }
|
|
10
|
-
assert_equal 1, [ 1 ].count_by { |x| x % 2 == 1 }
|
|
11
|
-
assert_equal 1, [ 1, 2 ].count_by { |x| x % 2 == 0 }
|
|
12
|
-
assert_equal 1, [ 1, 2 ].count_by { |x| x % 2 == 1 }
|
|
13
|
-
assert_equal 2, [ 1, 2, 3, 4, 5 ].count_by { |x| x % 2 == 0 }
|
|
14
|
-
assert_equal 3, [ 1, 2, 3, 4, 5 ].count_by { |x| x % 2 == 1 }
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
require 'tins/xt/deep_const_get'
|
|
3
|
-
|
|
4
|
-
module Tins
|
|
5
|
-
class DeepConstGetTest < Test::Unit::TestCase
|
|
6
|
-
module A
|
|
7
|
-
module B
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
module C
|
|
12
|
-
module NotB
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def self.const_missing(c)
|
|
16
|
-
NotB
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def test_deep_const_get_with_start_module
|
|
21
|
-
assert_raise(ArgumentError) { deep_const_get '::B', A }
|
|
22
|
-
assert_equal A::B, deep_const_get('B', A)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def test_deep_const_get_without_start_module
|
|
26
|
-
assert_equal Tins::DeepConstGetTest::A::B, deep_const_get('::Tins::DeepConstGetTest::A::B')
|
|
27
|
-
assert_equal Tins::DeepConstGetTest::A::B, deep_const_get('Tins::DeepConstGetTest::A::B')
|
|
28
|
-
assert_equal Array, deep_const_get('::Array')
|
|
29
|
-
assert_equal Array, deep_const_get('Array')
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def test_deep_const_get_with_const_missing
|
|
33
|
-
assert_raise(ArgumentError) { deep_const_get '::Tins::DeepConstGetTest::A::NIXDA' }
|
|
34
|
-
assert_equal Tins::DeepConstGetTest::C::NotB, deep_const_get('::Tins::DeepConstGetTest::C::B')
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
data/tests/uniq_by_test.rb
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
require 'tins/xt'
|
|
3
|
-
|
|
4
|
-
module Tins
|
|
5
|
-
class UniqByTest < Test::Unit::TestCase
|
|
6
|
-
|
|
7
|
-
unless defined?(Point)
|
|
8
|
-
class Point < Struct.new :x, :y
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def test_uniq_by
|
|
13
|
-
assert_equal [ 1, 2, 3 ], [ 1, 2, 2, 3 ].uniq_by.sort
|
|
14
|
-
a = [ 1, 2, 2, 3 ]; a.uniq_by!
|
|
15
|
-
assert_equal [ 1, 2, 3 ], a.sort
|
|
16
|
-
p1 = Point.new 1, 2
|
|
17
|
-
p2 = Point.new 2, 2
|
|
18
|
-
p3 = Point.new 2, 2
|
|
19
|
-
p4 = Point.new 3, 3
|
|
20
|
-
a = [ p1, p2, p3, p4 ]
|
|
21
|
-
a_uniq = a.uniq_by { |p| p.y }
|
|
22
|
-
assert_equal 2, a_uniq.size
|
|
23
|
-
assert a_uniq.include?(p4)
|
|
24
|
-
assert [ p1, p2, p3 ].any? { |p| a_uniq.include? p }
|
|
25
|
-
a.uniq_by! { |p| p.y }
|
|
26
|
-
assert_equal 2, a.size
|
|
27
|
-
assert a.include?(p4)
|
|
28
|
-
assert [ p1, p2, p3 ].any? { |p| a.include? p }
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
/data/{COPYING → LICENSE}
RENAMED
|
File without changes
|