nrser 0.2.2 → 0.3.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/lib/nrser/char/alpha_numeric_sub.rb +1 -2
- data/lib/nrser/char.rb +0 -6
- data/lib/nrser/core_ext/array.rb +120 -0
- data/lib/nrser/core_ext/binding.rb +44 -0
- data/lib/nrser/{functions → core_ext}/enumerable/find_map.rb +18 -15
- data/lib/nrser/{ext → core_ext}/enumerable.rb +10 -24
- data/lib/nrser/core_ext/exception.rb +30 -0
- data/lib/nrser/core_ext/hash/extract_values_at.rb +49 -0
- data/lib/nrser/core_ext/hash/transform_values_with_keys.rb +24 -0
- data/lib/nrser/core_ext/hash.rb +50 -0
- data/lib/nrser/core_ext/module/method_objects.rb +96 -0
- data/lib/nrser/core_ext/module/names.rb +69 -0
- data/lib/nrser/core_ext/module/source_locations.rb +214 -0
- data/lib/nrser/core_ext/module.rb +2 -0
- data/lib/nrser/core_ext/object/lazy_var.rb +31 -0
- data/lib/nrser/core_ext/object.rb +46 -0
- data/lib/nrser/core_ext/open_struct.rb +6 -0
- data/lib/nrser/{ext → core_ext}/pathname.rb +8 -5
- data/lib/nrser/{ext → core_ext}/string.rb +6 -12
- data/lib/nrser/core_ext/symbol.rb +13 -0
- data/lib/nrser/core_ext/time.rb +46 -0
- data/lib/nrser/core_ext.rb +13 -0
- data/lib/nrser/errors/abstract_method_error.rb +150 -0
- data/lib/nrser/errors/argument_error.rb +42 -0
- data/lib/nrser/errors/nicer_error.rb +298 -72
- data/lib/nrser/errors/type_error.rb +46 -0
- data/lib/nrser/errors.rb +4 -53
- data/lib/nrser/ext/tree.rb +3 -0
- data/lib/nrser/functions/enumerable/associate.rb +6 -9
- data/lib/nrser/functions/enumerable/include_slice.rb +2 -3
- data/lib/nrser/functions/enumerable.rb +1 -3
- data/lib/nrser/functions/exception.rb +1 -1
- data/lib/nrser/functions/hash.rb +0 -6
- data/lib/nrser/functions/merge_by.rb +2 -2
- data/lib/nrser/functions/module/method_objects.rb +77 -0
- data/lib/nrser/functions/module.rb +1 -2
- data/lib/nrser/functions/open_struct.rb +25 -35
- data/lib/nrser/functions/proc.rb +1 -6
- data/lib/nrser/functions/string/looks_like.rb +32 -1
- data/lib/nrser/functions/string.rb +1 -40
- data/lib/nrser/functions/text/lines.rb +2 -1
- data/lib/nrser/functions.rb +0 -1
- data/lib/nrser/graph/tsorter.rb +41 -0
- data/lib/nrser/labs/core_ext/binding.rb +37 -0
- data/lib/nrser/labs/stash.rb +372 -0
- data/lib/nrser/{logging → log}/appender/sync.rb +3 -3
- data/lib/nrser/log/appender.rb +3 -0
- data/lib/nrser/{logging → log}/formatters/color.rb +47 -20
- data/lib/nrser/log/formatters/mixin.rb +270 -0
- data/lib/nrser/{logging → log}/formatters.rb +0 -0
- data/lib/nrser/log/logger.rb +229 -0
- data/lib/nrser/log/mixin.rb +56 -0
- data/lib/nrser/log.rb +723 -0
- data/lib/nrser/message.rb +24 -3
- data/lib/nrser/meta/source/location.rb +158 -0
- data/lib/nrser/meta.rb +1 -1
- data/lib/nrser/props/class_methods.rb +118 -0
- data/lib/nrser/props/immutable/hash.rb +111 -0
- data/lib/nrser/props/immutable/hash_variable.rb +82 -0
- data/lib/nrser/props/immutable/instance_variables.rb +48 -0
- data/lib/nrser/props/immutable/vector.rb +107 -0
- data/lib/nrser/props/instance_methods.rb +184 -0
- data/lib/nrser/props/metadata.rb +359 -0
- data/lib/nrser/props/mutable/instance_variables.rb +60 -0
- data/lib/nrser/props/mutable/stash.rb +199 -0
- data/lib/nrser/{meta/props → props}/prop.rb +217 -112
- data/lib/nrser/props/storage/instance_variable.rb +85 -0
- data/lib/nrser/props/storage/instance_variables.rb +67 -0
- data/lib/nrser/props/storage/key.rb +88 -0
- data/lib/nrser/props.rb +9 -0
- data/lib/nrser/refinements/sugar.rb +41 -0
- data/lib/nrser/refinements/types.rb +2 -2
- data/lib/nrser/refinements.rb +14 -16
- data/lib/nrser/rspex/example_group/describe_attribute.rb +24 -0
- data/lib/nrser/rspex/example_group/describe_called_with.rb +1 -6
- data/lib/nrser/rspex/example_group/{describe_use_case.rb → describe_case.rb} +6 -3
- data/lib/nrser/rspex/example_group/describe_class.rb +1 -0
- data/lib/nrser/rspex/example_group/describe_group.rb +29 -0
- data/lib/nrser/rspex/example_group/describe_instance_method.rb +2 -2
- data/lib/nrser/rspex/example_group/describe_message.rb +35 -0
- data/lib/nrser/rspex/example_group/describe_method.rb +23 -2
- data/lib/nrser/rspex/example_group/describe_module.rb +19 -0
- data/lib/nrser/rspex/example_group/describe_response_to.rb +32 -0
- data/lib/nrser/rspex/example_group/describe_section.rb +38 -0
- data/lib/nrser/rspex/example_group/describe_sent_to.rb +52 -0
- data/lib/nrser/rspex/example_group/describe_source_file.rb +49 -0
- data/lib/nrser/rspex/example_group/describe_spec_file.rb +41 -108
- data/lib/nrser/rspex/example_group/describe_when.rb +14 -7
- data/lib/nrser/rspex/example_group/describe_x.rb +39 -12
- data/lib/nrser/rspex/example_group/overrides.rb +66 -0
- data/lib/nrser/rspex/example_group.rb +20 -252
- data/lib/nrser/rspex/format.rb +83 -17
- data/lib/nrser/rspex.rb +4 -34
- data/lib/nrser/sugar/method_missing_forwarder.rb +50 -0
- data/lib/nrser/{env → sys/env}/path.rb +1 -2
- data/lib/nrser/{env.rb → sys/env.rb} +2 -1
- data/lib/nrser/sys.rb +5 -0
- data/lib/nrser/types/any.rb +36 -7
- data/lib/nrser/types/{array.rb → arrays.rb} +32 -81
- data/lib/nrser/types/attrs.rb +68 -15
- data/lib/nrser/types/booleans.rb +95 -34
- data/lib/nrser/types/bounded.rb +12 -10
- data/lib/nrser/types/combinators.rb +74 -37
- data/lib/nrser/types/errors/check_error.rb +86 -0
- data/lib/nrser/types/errors/from_string_error.rb +82 -0
- data/lib/nrser/types/factory.rb +91 -0
- data/lib/nrser/types/hashes.rb +171 -26
- data/lib/nrser/types/in.rb +25 -12
- data/lib/nrser/types/is.rb +50 -18
- data/lib/nrser/types/is_a.rb +52 -33
- data/lib/nrser/types/labels.rb +6 -33
- data/lib/nrser/types/maybe.rb +12 -4
- data/lib/nrser/types/nil.rb +24 -4
- data/lib/nrser/types/not.rb +6 -16
- data/lib/nrser/types/numbers.rb +94 -57
- data/lib/nrser/types/pairs.rb +57 -57
- data/lib/nrser/types/paths.rb +112 -133
- data/lib/nrser/types/responds.rb +64 -74
- data/lib/nrser/types/shape.rb +29 -24
- data/lib/nrser/types/strings.rb +25 -17
- data/lib/nrser/types/symbols.rb +19 -17
- data/lib/nrser/types/trees.rb +18 -70
- data/lib/nrser/types/tuples.rb +36 -40
- data/lib/nrser/types/type.rb +342 -91
- data/lib/nrser/types/when.rb +40 -18
- data/lib/nrser/types/where.rb +94 -9
- data/lib/nrser/types.rb +72 -63
- data/lib/nrser/version.rb +1 -1
- data/lib/nrser.rb +18 -18
- data/spec/lib/nrser/{functions/binding/template_spec.rb → core_ext/binding/erb_spec.rb} +5 -5
- data/spec/lib/nrser/{functions → core_ext}/enumerable/find_map_spec.rb +8 -6
- data/spec/lib/nrser/{refinements → core_ext}/hash_spec.rb +9 -22
- data/spec/lib/nrser/errors/abstract_method_error_spec.rb +12 -5
- data/spec/lib/nrser/functions/enumerable/{to_h_by_spec.rb → associate_spec.rb} +1 -1
- data/spec/lib/nrser/functions/merge_by_spec.rb +1 -1
- data/spec/lib/nrser/functions/tree/each_branch_spec.rb +3 -3
- data/spec/lib/nrser/functions/tree/transform_spec.rb +14 -15
- data/spec/lib/nrser/gem_ext/hamster/json_spec.rb +4 -0
- data/spec/lib/nrser/meta/source/location_spec.rb +86 -0
- data/spec/lib/nrser/props/immutable/hash_spec.rb +297 -0
- data/spec/lib/nrser/props/immutable/vector_spec.rb +296 -0
- data/spec/lib/nrser/{meta/props_spec.rb → props/original_props_spec.rb} +11 -16
- data/spec/lib/nrser/{meta/props → props}/to_and_from_data_spec.rb +10 -8
- data/spec/lib/nrser/refinements/array_spec.rb +2 -15
- data/spec/lib/nrser/refinements/erb_spec.rb +5 -7
- data/spec/lib/nrser/refinements/set_spec.rb +2 -15
- data/spec/lib/nrser/{env → sys/env}/path/insert_spec.rb +4 -2
- data/spec/lib/nrser/{env → sys/env}/path_spec.rb +4 -2
- data/spec/lib/nrser/types/array_spec.rb +8 -8
- data/spec/lib/nrser/types/paths_spec.rb +15 -18
- data/spec/spec_helper.rb +4 -0
- metadata +109 -69
- data/lib/nrser/ext/binding.rb +0 -36
- data/lib/nrser/ext/module.rb +0 -62
- data/lib/nrser/ext.rb +0 -8
- data/lib/nrser/functions/binding.rb +0 -76
- data/lib/nrser/functions/enumerable/map_keys.rb +0 -0
- data/lib/nrser/functions/enumerable/map_values.rb +0 -94
- data/lib/nrser/functions/hash/deep_merge.rb +0 -57
- data/lib/nrser/functions/hash/except_keys.rb +0 -44
- data/lib/nrser/functions/hash/slice_keys.rb +0 -43
- data/lib/nrser/functions/hash/stringify_keys.rb +0 -55
- data/lib/nrser/functions/hash/symbolize_keys.rb +0 -57
- data/lib/nrser/functions/hash/transform_keys.rb +0 -140
- data/lib/nrser/functions/module/methods.rb +0 -206
- data/lib/nrser/functions/module/source_locations.rb +0 -213
- data/lib/nrser/logging/appender.rb +0 -3
- data/lib/nrser/logging.rb +0 -353
- data/lib/nrser/meta/props/base.rb +0 -31
- data/lib/nrser/meta/props.rb +0 -357
- data/lib/nrser/refinements/array.rb +0 -133
- data/lib/nrser/refinements/binding.rb +0 -6
- data/lib/nrser/refinements/enumerator.rb +0 -5
- data/lib/nrser/refinements/exception.rb +0 -35
- data/lib/nrser/refinements/hash.rb +0 -150
- data/lib/nrser/refinements/module.rb +0 -5
- data/lib/nrser/refinements/object.rb +0 -42
- data/lib/nrser/refinements/open_struct.rb +0 -28
- data/lib/nrser/refinements/pathname.rb +0 -5
- data/lib/nrser/refinements/set.rb +0 -5
- data/lib/nrser/refinements/string.rb +0 -5
- data/lib/nrser/refinements/symbol.rb +0 -20
- data/lib/nrser/rspex/described.rb +0 -99
- data/spec/design/mapping_spec.rb +0 -42
- data/spec/lib/nrser/functions/hash_spec.rb +0 -41
- data/spec/lib/nrser/functions/string/truncate_spec.rb +0 -11
- data/spec/lib/nrser/refinements/truncate_spec.rb +0 -10
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nrser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nrser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03
|
11
|
+
date: 2018-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hamster
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.17.7
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: activesupport
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '5.1'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '5.1'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: bundler
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -218,46 +232,50 @@ files:
|
|
218
232
|
- lib/nrser/char/alpha_numeric_sub.rb
|
219
233
|
- lib/nrser/char/special.rb
|
220
234
|
- lib/nrser/collection.rb
|
221
|
-
- lib/nrser/
|
222
|
-
- lib/nrser/
|
235
|
+
- lib/nrser/core_ext.rb
|
236
|
+
- lib/nrser/core_ext/array.rb
|
237
|
+
- lib/nrser/core_ext/binding.rb
|
238
|
+
- lib/nrser/core_ext/enumerable.rb
|
239
|
+
- lib/nrser/core_ext/enumerable/find_map.rb
|
240
|
+
- lib/nrser/core_ext/exception.rb
|
241
|
+
- lib/nrser/core_ext/hash.rb
|
242
|
+
- lib/nrser/core_ext/hash/extract_values_at.rb
|
243
|
+
- lib/nrser/core_ext/hash/transform_values_with_keys.rb
|
244
|
+
- lib/nrser/core_ext/module.rb
|
245
|
+
- lib/nrser/core_ext/module/method_objects.rb
|
246
|
+
- lib/nrser/core_ext/module/names.rb
|
247
|
+
- lib/nrser/core_ext/module/source_locations.rb
|
248
|
+
- lib/nrser/core_ext/object.rb
|
249
|
+
- lib/nrser/core_ext/object/lazy_var.rb
|
250
|
+
- lib/nrser/core_ext/open_struct.rb
|
251
|
+
- lib/nrser/core_ext/pathname.rb
|
252
|
+
- lib/nrser/core_ext/string.rb
|
253
|
+
- lib/nrser/core_ext/symbol.rb
|
254
|
+
- lib/nrser/core_ext/time.rb
|
223
255
|
- lib/nrser/errors.rb
|
256
|
+
- lib/nrser/errors/abstract_method_error.rb
|
257
|
+
- lib/nrser/errors/argument_error.rb
|
224
258
|
- lib/nrser/errors/attr_error.rb
|
225
259
|
- lib/nrser/errors/count_error.rb
|
226
260
|
- lib/nrser/errors/nicer_error.rb
|
261
|
+
- lib/nrser/errors/type_error.rb
|
227
262
|
- lib/nrser/errors/value_error.rb
|
228
|
-
- lib/nrser/ext.rb
|
229
|
-
- lib/nrser/ext/binding.rb
|
230
|
-
- lib/nrser/ext/enumerable.rb
|
231
|
-
- lib/nrser/ext/module.rb
|
232
|
-
- lib/nrser/ext/pathname.rb
|
233
|
-
- lib/nrser/ext/string.rb
|
234
263
|
- lib/nrser/ext/tree.rb
|
235
264
|
- lib/nrser/functions.rb
|
236
265
|
- lib/nrser/functions/array.rb
|
237
|
-
- lib/nrser/functions/binding.rb
|
238
266
|
- lib/nrser/functions/enumerable.rb
|
239
267
|
- lib/nrser/functions/enumerable/associate.rb
|
240
268
|
- lib/nrser/functions/enumerable/find_all_map.rb
|
241
|
-
- lib/nrser/functions/enumerable/find_map.rb
|
242
269
|
- lib/nrser/functions/enumerable/include_slice.rb
|
243
270
|
- lib/nrser/functions/enumerable/include_slice/array_include_slice.rb
|
244
|
-
- lib/nrser/functions/enumerable/map_keys.rb
|
245
|
-
- lib/nrser/functions/enumerable/map_values.rb
|
246
271
|
- lib/nrser/functions/exception.rb
|
247
272
|
- lib/nrser/functions/git.rb
|
248
273
|
- lib/nrser/functions/hash.rb
|
249
274
|
- lib/nrser/functions/hash/bury.rb
|
250
|
-
- lib/nrser/functions/hash/deep_merge.rb
|
251
|
-
- lib/nrser/functions/hash/except_keys.rb
|
252
275
|
- lib/nrser/functions/hash/guess_label_key_type.rb
|
253
|
-
- lib/nrser/functions/hash/slice_keys.rb
|
254
|
-
- lib/nrser/functions/hash/stringify_keys.rb
|
255
|
-
- lib/nrser/functions/hash/symbolize_keys.rb
|
256
|
-
- lib/nrser/functions/hash/transform_keys.rb
|
257
276
|
- lib/nrser/functions/merge_by.rb
|
258
277
|
- lib/nrser/functions/module.rb
|
259
|
-
- lib/nrser/functions/module/
|
260
|
-
- lib/nrser/functions/module/source_locations.rb
|
278
|
+
- lib/nrser/functions/module/method_objects.rb
|
261
279
|
- lib/nrser/functions/object.rb
|
262
280
|
- lib/nrser/functions/object/as_array.rb
|
263
281
|
- lib/nrser/functions/object/as_hash.rb
|
@@ -280,60 +298,82 @@ files:
|
|
280
298
|
- lib/nrser/functions/tree/map_leaves.rb
|
281
299
|
- lib/nrser/functions/tree/map_tree.rb
|
282
300
|
- lib/nrser/functions/tree/transform.rb
|
301
|
+
- lib/nrser/graph/tsorter.rb
|
283
302
|
- lib/nrser/labs.rb
|
303
|
+
- lib/nrser/labs/core_ext/binding.rb
|
284
304
|
- lib/nrser/labs/globlin.rb
|
285
305
|
- lib/nrser/labs/index.rb
|
286
|
-
- lib/nrser/
|
287
|
-
- lib/nrser/
|
288
|
-
- lib/nrser/
|
289
|
-
- lib/nrser/
|
290
|
-
- lib/nrser/
|
306
|
+
- lib/nrser/labs/stash.rb
|
307
|
+
- lib/nrser/log.rb
|
308
|
+
- lib/nrser/log/appender.rb
|
309
|
+
- lib/nrser/log/appender/sync.rb
|
310
|
+
- lib/nrser/log/formatters.rb
|
311
|
+
- lib/nrser/log/formatters/color.rb
|
312
|
+
- lib/nrser/log/formatters/mixin.rb
|
313
|
+
- lib/nrser/log/logger.rb
|
314
|
+
- lib/nrser/log/mixin.rb
|
291
315
|
- lib/nrser/mean_streak.rb
|
292
316
|
- lib/nrser/mean_streak/document.rb
|
293
317
|
- lib/nrser/message.rb
|
294
318
|
- lib/nrser/meta.rb
|
295
319
|
- lib/nrser/meta/class_attrs.rb
|
296
|
-
- lib/nrser/meta/
|
297
|
-
- lib/nrser/meta/props/base.rb
|
298
|
-
- lib/nrser/meta/props/prop.rb
|
320
|
+
- lib/nrser/meta/source/location.rb
|
299
321
|
- lib/nrser/no_arg.rb
|
322
|
+
- lib/nrser/props.rb
|
323
|
+
- lib/nrser/props/class_methods.rb
|
324
|
+
- lib/nrser/props/immutable/hash.rb
|
325
|
+
- lib/nrser/props/immutable/hash_variable.rb
|
326
|
+
- lib/nrser/props/immutable/instance_variables.rb
|
327
|
+
- lib/nrser/props/immutable/vector.rb
|
328
|
+
- lib/nrser/props/instance_methods.rb
|
329
|
+
- lib/nrser/props/metadata.rb
|
330
|
+
- lib/nrser/props/mutable/instance_variables.rb
|
331
|
+
- lib/nrser/props/mutable/stash.rb
|
332
|
+
- lib/nrser/props/prop.rb
|
333
|
+
- lib/nrser/props/storage/instance_variable.rb
|
334
|
+
- lib/nrser/props/storage/instance_variables.rb
|
335
|
+
- lib/nrser/props/storage/key.rb
|
300
336
|
- lib/nrser/refinements.rb
|
301
|
-
- lib/nrser/refinements/
|
302
|
-
- lib/nrser/refinements/binding.rb
|
303
|
-
- lib/nrser/refinements/enumerator.rb
|
304
|
-
- lib/nrser/refinements/exception.rb
|
305
|
-
- lib/nrser/refinements/hash.rb
|
306
|
-
- lib/nrser/refinements/module.rb
|
307
|
-
- lib/nrser/refinements/object.rb
|
308
|
-
- lib/nrser/refinements/open_struct.rb
|
309
|
-
- lib/nrser/refinements/pathname.rb
|
310
|
-
- lib/nrser/refinements/set.rb
|
311
|
-
- lib/nrser/refinements/string.rb
|
312
|
-
- lib/nrser/refinements/symbol.rb
|
337
|
+
- lib/nrser/refinements/sugar.rb
|
313
338
|
- lib/nrser/refinements/types.rb
|
314
339
|
- lib/nrser/rspex.rb
|
315
|
-
- lib/nrser/rspex/described.rb
|
316
340
|
- lib/nrser/rspex/example.rb
|
317
341
|
- lib/nrser/rspex/example_group.rb
|
342
|
+
- lib/nrser/rspex/example_group/describe_attribute.rb
|
318
343
|
- lib/nrser/rspex/example_group/describe_called_with.rb
|
344
|
+
- lib/nrser/rspex/example_group/describe_case.rb
|
319
345
|
- lib/nrser/rspex/example_group/describe_class.rb
|
346
|
+
- lib/nrser/rspex/example_group/describe_group.rb
|
320
347
|
- lib/nrser/rspex/example_group/describe_instance.rb
|
321
348
|
- lib/nrser/rspex/example_group/describe_instance_method.rb
|
349
|
+
- lib/nrser/rspex/example_group/describe_message.rb
|
322
350
|
- lib/nrser/rspex/example_group/describe_method.rb
|
351
|
+
- lib/nrser/rspex/example_group/describe_module.rb
|
352
|
+
- lib/nrser/rspex/example_group/describe_response_to.rb
|
353
|
+
- lib/nrser/rspex/example_group/describe_section.rb
|
354
|
+
- lib/nrser/rspex/example_group/describe_sent_to.rb
|
323
355
|
- lib/nrser/rspex/example_group/describe_setup.rb
|
356
|
+
- lib/nrser/rspex/example_group/describe_source_file.rb
|
324
357
|
- lib/nrser/rspex/example_group/describe_spec_file.rb
|
325
|
-
- lib/nrser/rspex/example_group/describe_use_case.rb
|
326
358
|
- lib/nrser/rspex/example_group/describe_when.rb
|
327
359
|
- lib/nrser/rspex/example_group/describe_x.rb
|
360
|
+
- lib/nrser/rspex/example_group/overrides.rb
|
328
361
|
- lib/nrser/rspex/format.rb
|
329
362
|
- lib/nrser/rspex/shared_examples.rb
|
363
|
+
- lib/nrser/sugar/method_missing_forwarder.rb
|
364
|
+
- lib/nrser/sys.rb
|
365
|
+
- lib/nrser/sys/env.rb
|
366
|
+
- lib/nrser/sys/env/path.rb
|
330
367
|
- lib/nrser/types.rb
|
331
368
|
- lib/nrser/types/any.rb
|
332
|
-
- lib/nrser/types/
|
369
|
+
- lib/nrser/types/arrays.rb
|
333
370
|
- lib/nrser/types/attrs.rb
|
334
371
|
- lib/nrser/types/booleans.rb
|
335
372
|
- lib/nrser/types/bounded.rb
|
336
373
|
- lib/nrser/types/combinators.rb
|
374
|
+
- lib/nrser/types/errors/check_error.rb
|
375
|
+
- lib/nrser/types/errors/from_string_error.rb
|
376
|
+
- lib/nrser/types/factory.rb
|
337
377
|
- lib/nrser/types/hashes.rb
|
338
378
|
- lib/nrser/types/in.rb
|
339
379
|
- lib/nrser/types/is.rb
|
@@ -355,29 +395,25 @@ files:
|
|
355
395
|
- lib/nrser/types/when.rb
|
356
396
|
- lib/nrser/types/where.rb
|
357
397
|
- lib/nrser/version.rb
|
358
|
-
- spec/design/mapping_spec.rb
|
359
398
|
- spec/lib/nrser/collection/each_spec.rb
|
360
399
|
- spec/lib/nrser/collection/map_spec.rb
|
361
|
-
- spec/lib/nrser/
|
362
|
-
- spec/lib/nrser/
|
400
|
+
- spec/lib/nrser/core_ext/binding/erb_spec.rb
|
401
|
+
- spec/lib/nrser/core_ext/enumerable/find_map_spec.rb
|
402
|
+
- spec/lib/nrser/core_ext/hash_spec.rb
|
363
403
|
- spec/lib/nrser/errors/abstract_method_error_spec.rb
|
364
|
-
- spec/lib/nrser/functions/
|
404
|
+
- spec/lib/nrser/functions/enumerable/associate_spec.rb
|
365
405
|
- spec/lib/nrser/functions/enumerable/find_all_map_spec.rb
|
366
406
|
- spec/lib/nrser/functions/enumerable/find_bounded_spec.rb
|
367
|
-
- spec/lib/nrser/functions/enumerable/find_map_spec.rb
|
368
407
|
- spec/lib/nrser/functions/enumerable/find_only_spec.rb
|
369
408
|
- spec/lib/nrser/functions/enumerable/include_slice_spec.rb
|
370
|
-
- spec/lib/nrser/functions/enumerable/to_h_by_spec.rb
|
371
409
|
- spec/lib/nrser/functions/exception/format_exception_spec.rb
|
372
410
|
- spec/lib/nrser/functions/hash/bury_spec.rb
|
373
411
|
- spec/lib/nrser/functions/hash/guess_label_key_type_spec.rb
|
374
|
-
- spec/lib/nrser/functions/hash_spec.rb
|
375
412
|
- spec/lib/nrser/functions/merge_by_spec.rb
|
376
413
|
- spec/lib/nrser/functions/object/truthy_spec.rb
|
377
414
|
- spec/lib/nrser/functions/open_struct_spec.rb
|
378
415
|
- spec/lib/nrser/functions/string/common_prefix_spec.rb
|
379
416
|
- spec/lib/nrser/functions/string/looks_like_spec.rb
|
380
|
-
- spec/lib/nrser/functions/string/truncate_spec.rb
|
381
417
|
- spec/lib/nrser/functions/text/dedent/gotchas_spec.rb
|
382
418
|
- spec/lib/nrser/functions/text/dedent_spec.rb
|
383
419
|
- spec/lib/nrser/functions/text/indent_spec.rb
|
@@ -388,23 +424,27 @@ files:
|
|
388
424
|
- spec/lib/nrser/functions/tree/map_tree_spec.rb
|
389
425
|
- spec/lib/nrser/functions/tree/transform_spec.rb
|
390
426
|
- spec/lib/nrser/functions/tree/transformer_spec.rb
|
427
|
+
- spec/lib/nrser/gem_ext/hamster/json_spec.rb
|
391
428
|
- spec/lib/nrser/labs/globlin_spec.rb
|
392
429
|
- spec/lib/nrser/labs/index_spec.rb
|
393
430
|
- spec/lib/nrser/mean_streak/design_spec.rb
|
394
431
|
- spec/lib/nrser/mean_streak/identity_instance_spec.rb
|
395
432
|
- spec/lib/nrser/meta/class_attrs_spec.rb
|
396
|
-
- spec/lib/nrser/meta/
|
397
|
-
- spec/lib/nrser/meta/props_spec.rb
|
433
|
+
- spec/lib/nrser/meta/source/location_spec.rb
|
398
434
|
- spec/lib/nrser/op/message_spec.rb
|
435
|
+
- spec/lib/nrser/props/immutable/hash_spec.rb
|
436
|
+
- spec/lib/nrser/props/immutable/vector_spec.rb
|
437
|
+
- spec/lib/nrser/props/original_props_spec.rb
|
438
|
+
- spec/lib/nrser/props/to_and_from_data_spec.rb
|
399
439
|
- spec/lib/nrser/refinements/array_spec.rb
|
400
440
|
- spec/lib/nrser/refinements/erb_spec.rb
|
401
441
|
- spec/lib/nrser/refinements/format_exception_spec.rb
|
402
|
-
- spec/lib/nrser/refinements/hash_spec.rb
|
403
442
|
- spec/lib/nrser/refinements/indent_spec.rb
|
404
443
|
- spec/lib/nrser/refinements/object_spec.rb
|
405
444
|
- spec/lib/nrser/refinements/pathname_spec.rb
|
406
445
|
- spec/lib/nrser/refinements/set_spec.rb
|
407
|
-
- spec/lib/nrser/
|
446
|
+
- spec/lib/nrser/sys/env/path/insert_spec.rb
|
447
|
+
- spec/lib/nrser/sys/env/path_spec.rb
|
408
448
|
- spec/lib/nrser/types/array_spec.rb
|
409
449
|
- spec/lib/nrser/types/attrs_spec.rb
|
410
450
|
- spec/lib/nrser/types/combinators_spec.rb
|
@@ -444,29 +484,25 @@ signing_key:
|
|
444
484
|
specification_version: 4
|
445
485
|
summary: basic ruby utils i use in a lot of stuff.
|
446
486
|
test_files:
|
447
|
-
- spec/design/mapping_spec.rb
|
448
487
|
- spec/lib/nrser/collection/each_spec.rb
|
449
488
|
- spec/lib/nrser/collection/map_spec.rb
|
450
|
-
- spec/lib/nrser/
|
451
|
-
- spec/lib/nrser/
|
489
|
+
- spec/lib/nrser/core_ext/binding/erb_spec.rb
|
490
|
+
- spec/lib/nrser/core_ext/enumerable/find_map_spec.rb
|
491
|
+
- spec/lib/nrser/core_ext/hash_spec.rb
|
452
492
|
- spec/lib/nrser/errors/abstract_method_error_spec.rb
|
453
|
-
- spec/lib/nrser/functions/
|
493
|
+
- spec/lib/nrser/functions/enumerable/associate_spec.rb
|
454
494
|
- spec/lib/nrser/functions/enumerable/find_all_map_spec.rb
|
455
495
|
- spec/lib/nrser/functions/enumerable/find_bounded_spec.rb
|
456
|
-
- spec/lib/nrser/functions/enumerable/find_map_spec.rb
|
457
496
|
- spec/lib/nrser/functions/enumerable/find_only_spec.rb
|
458
497
|
- spec/lib/nrser/functions/enumerable/include_slice_spec.rb
|
459
|
-
- spec/lib/nrser/functions/enumerable/to_h_by_spec.rb
|
460
498
|
- spec/lib/nrser/functions/exception/format_exception_spec.rb
|
461
499
|
- spec/lib/nrser/functions/hash/bury_spec.rb
|
462
500
|
- spec/lib/nrser/functions/hash/guess_label_key_type_spec.rb
|
463
|
-
- spec/lib/nrser/functions/hash_spec.rb
|
464
501
|
- spec/lib/nrser/functions/merge_by_spec.rb
|
465
502
|
- spec/lib/nrser/functions/object/truthy_spec.rb
|
466
503
|
- spec/lib/nrser/functions/open_struct_spec.rb
|
467
504
|
- spec/lib/nrser/functions/string/common_prefix_spec.rb
|
468
505
|
- spec/lib/nrser/functions/string/looks_like_spec.rb
|
469
|
-
- spec/lib/nrser/functions/string/truncate_spec.rb
|
470
506
|
- spec/lib/nrser/functions/text/dedent/gotchas_spec.rb
|
471
507
|
- spec/lib/nrser/functions/text/dedent_spec.rb
|
472
508
|
- spec/lib/nrser/functions/text/indent_spec.rb
|
@@ -477,23 +513,27 @@ test_files:
|
|
477
513
|
- spec/lib/nrser/functions/tree/map_tree_spec.rb
|
478
514
|
- spec/lib/nrser/functions/tree/transform_spec.rb
|
479
515
|
- spec/lib/nrser/functions/tree/transformer_spec.rb
|
516
|
+
- spec/lib/nrser/gem_ext/hamster/json_spec.rb
|
480
517
|
- spec/lib/nrser/labs/globlin_spec.rb
|
481
518
|
- spec/lib/nrser/labs/index_spec.rb
|
482
519
|
- spec/lib/nrser/mean_streak/design_spec.rb
|
483
520
|
- spec/lib/nrser/mean_streak/identity_instance_spec.rb
|
484
521
|
- spec/lib/nrser/meta/class_attrs_spec.rb
|
485
|
-
- spec/lib/nrser/meta/
|
486
|
-
- spec/lib/nrser/meta/props_spec.rb
|
522
|
+
- spec/lib/nrser/meta/source/location_spec.rb
|
487
523
|
- spec/lib/nrser/op/message_spec.rb
|
524
|
+
- spec/lib/nrser/props/immutable/hash_spec.rb
|
525
|
+
- spec/lib/nrser/props/immutable/vector_spec.rb
|
526
|
+
- spec/lib/nrser/props/original_props_spec.rb
|
527
|
+
- spec/lib/nrser/props/to_and_from_data_spec.rb
|
488
528
|
- spec/lib/nrser/refinements/array_spec.rb
|
489
529
|
- spec/lib/nrser/refinements/erb_spec.rb
|
490
530
|
- spec/lib/nrser/refinements/format_exception_spec.rb
|
491
|
-
- spec/lib/nrser/refinements/hash_spec.rb
|
492
531
|
- spec/lib/nrser/refinements/indent_spec.rb
|
493
532
|
- spec/lib/nrser/refinements/object_spec.rb
|
494
533
|
- spec/lib/nrser/refinements/pathname_spec.rb
|
495
534
|
- spec/lib/nrser/refinements/set_spec.rb
|
496
|
-
- spec/lib/nrser/
|
535
|
+
- spec/lib/nrser/sys/env/path/insert_spec.rb
|
536
|
+
- spec/lib/nrser/sys/env/path_spec.rb
|
497
537
|
- spec/lib/nrser/types/array_spec.rb
|
498
538
|
- spec/lib/nrser/types/attrs_spec.rb
|
499
539
|
- spec/lib/nrser/types/combinators_spec.rb
|
data/lib/nrser/ext/binding.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
# Extension methods for {Binding}
|
2
|
-
#
|
3
|
-
module NRSER::Ext::Binding
|
4
|
-
|
5
|
-
# Calls {NRSER.template} with `self` prepended to `*args`
|
6
|
-
#
|
7
|
-
# @param (see NRSER.erb)
|
8
|
-
# @return (see NRSER.erb)
|
9
|
-
#
|
10
|
-
def template *args
|
11
|
-
NRSER.template self, *args
|
12
|
-
end
|
13
|
-
|
14
|
-
alias_method :erb, :template
|
15
|
-
|
16
|
-
|
17
|
-
# Calls {NRSER.locals} with `self` prepended to `*args`
|
18
|
-
#
|
19
|
-
# @param (see NRSER.locals)
|
20
|
-
# @return (see NRSER.locals)
|
21
|
-
#
|
22
|
-
def locals *args
|
23
|
-
NRSER.locals self, *args
|
24
|
-
end
|
25
|
-
|
26
|
-
|
27
|
-
# Calls {NRSER.local_values} with `self` prepended to `*args`
|
28
|
-
#
|
29
|
-
# @param (see NRSER.local_values)
|
30
|
-
# @return (see NRSER.local_values)
|
31
|
-
#
|
32
|
-
def local_values *args
|
33
|
-
NRSER.local_values self, *args
|
34
|
-
end
|
35
|
-
|
36
|
-
end # module NRSER::Ext::Binding
|
data/lib/nrser/ext/module.rb
DELETED
@@ -1,62 +0,0 @@
|
|
1
|
-
# Extension methods for {Module}
|
2
|
-
#
|
3
|
-
# @note
|
4
|
-
# These **must not** conflict with function names, which are of course
|
5
|
-
# also module methods on the {NRSER} module, because they will override
|
6
|
-
# them and prevent access to the functions.
|
7
|
-
#
|
8
|
-
# Hence the target functions have been prefixed with `f_`.
|
9
|
-
#
|
10
|
-
module NRSER::Ext::Module
|
11
|
-
|
12
|
-
# @!group Module Methods
|
13
|
-
# ==========================================================================
|
14
|
-
|
15
|
-
# Calls {NRSER.class_method_objects_for} with `self` as first arg.
|
16
|
-
def class_method_objects *args
|
17
|
-
NRSER.class_method_objects_for self, *args
|
18
|
-
end
|
19
|
-
|
20
|
-
alias_method :class_Methods, :class_method_objects
|
21
|
-
|
22
|
-
|
23
|
-
# Calls {NRSER.own_class_method_objects_for} with `self` as first arg.
|
24
|
-
def own_class_method_objects *args
|
25
|
-
NRSER.own_class_method_objects_for self, *args
|
26
|
-
end
|
27
|
-
|
28
|
-
alias_method :own_class_Methods, :own_class_method_objects
|
29
|
-
|
30
|
-
|
31
|
-
# Calls {NRSER.instance_method_objects_for} with `self` as first arg.
|
32
|
-
def instance_method_objects *args
|
33
|
-
NRSER.instance_method_objects_for self, *args
|
34
|
-
end
|
35
|
-
|
36
|
-
alias_method :instance_Methods, :instance_method_objects
|
37
|
-
|
38
|
-
|
39
|
-
# Calls {NRSER.own_instance_method_objects_for} with `self` as first arg.
|
40
|
-
def own_instance_method_objects *args
|
41
|
-
NRSER.own_instance_method_objects_for self, *args
|
42
|
-
end
|
43
|
-
|
44
|
-
alias_method :own_instance_Methods, :own_instance_method_objects
|
45
|
-
|
46
|
-
|
47
|
-
# Calls {NRSER.class_method_source_locations_for} with `self` as the
|
48
|
-
# first arg.
|
49
|
-
def class_method_source_locations *args
|
50
|
-
NRSER.class_method_source_locations_for self, *args
|
51
|
-
end
|
52
|
-
|
53
|
-
|
54
|
-
# Calls {NRSER.class_method_source_locations_for} with `self` as the
|
55
|
-
# first arg.
|
56
|
-
def own_class_method_source_locations *args
|
57
|
-
NRSER.own_class_method_source_locations_for self, *args
|
58
|
-
end
|
59
|
-
|
60
|
-
# @!endgroup Module Methods
|
61
|
-
|
62
|
-
end # module NRSER::Ext::String
|
data/lib/nrser/ext.rb
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
module NRSER
|
2
|
-
def self.erb bnd, str
|
3
|
-
require 'erb'
|
4
|
-
|
5
|
-
filter_repeated_blank_lines(
|
6
|
-
with_indent_tagged( dedent( str ) ) { |tagged_str|
|
7
|
-
ERB.new( tagged_str ).result( bnd )
|
8
|
-
},
|
9
|
-
remove_leading: true
|
10
|
-
)
|
11
|
-
end # erb
|
12
|
-
|
13
|
-
singleton_class.send :alias_method, :template, :erb
|
14
|
-
|
15
|
-
|
16
|
-
# Get a {Hash} of all local variable names (as {Symbol}) to values.
|
17
|
-
#
|
18
|
-
# @param [Binding] bnd
|
19
|
-
# Binding to get locals from.
|
20
|
-
#
|
21
|
-
# @return [Hash<Symbol, Object>]
|
22
|
-
#
|
23
|
-
def self.locals bnd
|
24
|
-
NRSER.map_values( bnd.local_variables ) { |symbol, _|
|
25
|
-
bnd.local_variable_get symbol
|
26
|
-
}
|
27
|
-
end # .locals
|
28
|
-
|
29
|
-
|
30
|
-
# Get a {Array} of all local variable values.
|
31
|
-
#
|
32
|
-
# Written to facilitate checks like "all argument values are not `nil`".
|
33
|
-
#
|
34
|
-
# @param [Binding] bnd
|
35
|
-
# Binding to get locals from.
|
36
|
-
#
|
37
|
-
# @return [Array<Object>]
|
38
|
-
#
|
39
|
-
def self.local_values bnd
|
40
|
-
bnd.local_variables.map { |symbol| bnd.local_variable_get symbol }
|
41
|
-
end # .locals
|
42
|
-
|
43
|
-
|
44
|
-
def self.call_block bnd, *args, &block
|
45
|
-
arg_count = 0
|
46
|
-
arg_rest = false
|
47
|
-
call_kwds = {}
|
48
|
-
block.parameters.each do |type, name|
|
49
|
-
logger.debug "Processing", type: type, name: name
|
50
|
-
|
51
|
-
case type
|
52
|
-
when :req, :opt
|
53
|
-
arg_count += 1
|
54
|
-
when :keyreq, :key
|
55
|
-
if bnd.local_variable_defined? name
|
56
|
-
call_kwds[name] = bnd.local_variable_get name
|
57
|
-
end
|
58
|
-
when :rest
|
59
|
-
arg_rest = true
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
call_args = if arg_rest
|
64
|
-
args
|
65
|
-
else
|
66
|
-
args[0...arg_count]
|
67
|
-
end
|
68
|
-
|
69
|
-
logger.debug "CALLING WITH",
|
70
|
-
args: call_args,
|
71
|
-
kwds: call_kwds
|
72
|
-
|
73
|
-
block.call *call_args, **call_kwds
|
74
|
-
end
|
75
|
-
|
76
|
-
end # module NRSER
|
File without changes
|
@@ -1,94 +0,0 @@
|
|
1
|
-
module NRSER
|
2
|
-
|
3
|
-
# Maps an enumerable object to a *new* hash with the same keys and values
|
4
|
-
# obtained by calling `block` with the current key and value.
|
5
|
-
#
|
6
|
-
# If `enumerable` *does not* respond to `#to_pairs` then it's
|
7
|
-
# treated as a hash where the elements iterated by `#each` are it's keys
|
8
|
-
# and all it's values are `nil`.
|
9
|
-
#
|
10
|
-
# In this way, {NRSER.map_values} handles Hash, Array, Set, OpenStruct,
|
11
|
-
# and probably pretty much anything else reasonable you may throw at it.
|
12
|
-
#
|
13
|
-
# @param [#each_pair, #each] enum
|
14
|
-
#
|
15
|
-
# @yieldparam [Object] key
|
16
|
-
# The key that will be used for whatever value the block returns in the
|
17
|
-
# new hash.
|
18
|
-
#
|
19
|
-
# @yieldparam [nil, Object] value
|
20
|
-
# If `enumerable` responds to `#each_pair`, the second parameter it yielded
|
21
|
-
# along with `key`. Otherwise `nil`.
|
22
|
-
#
|
23
|
-
# @yieldreturn [Object]
|
24
|
-
# Value for the new hash.
|
25
|
-
#
|
26
|
-
# @return [Hash]
|
27
|
-
#
|
28
|
-
# @raise [ArgumentError]
|
29
|
-
# If `enumerable` does not respond to `#each_pair` or `#each`.
|
30
|
-
#
|
31
|
-
|
32
|
-
# Kind-of a Swiss Army knife for "I have the keys right, but I need to do
|
33
|
-
# some work to get the values I want".
|
34
|
-
#
|
35
|
-
# @overload map_values hash, &block
|
36
|
-
#
|
37
|
-
# Maps `hash` (which doesn't need to be a {Hash}, just support
|
38
|
-
# `#each_pair` in the same way) to a new {Hash} with the same keys and
|
39
|
-
# values created by calling `&block`.
|
40
|
-
#
|
41
|
-
# The arguments yielded to `&block` depend it's `#arity`:
|
42
|
-
#
|
43
|
-
# 1. If `&block` has more than one required argument
|
44
|
-
# (`block.arity > 1 || block.arity < -2`) then `key` and `value`
|
45
|
-
# will be yielded, so this works:
|
46
|
-
#
|
47
|
-
# NRSER.map_values( hash ) { |key, value| ... }
|
48
|
-
#
|
49
|
-
# 2. If `&block` has one required argument or less
|
50
|
-
# (`-2 <= block.arity <= 1`) then just `value` is yielded, so this
|
51
|
-
# also works:
|
52
|
-
#
|
53
|
-
# NRSER.map_values( hash ) { |value| ... }
|
54
|
-
#
|
55
|
-
# @overload map_values enumerable, &block
|
56
|
-
#
|
57
|
-
def self.map_values enum, &block
|
58
|
-
result = {}
|
59
|
-
|
60
|
-
arity = block.arity
|
61
|
-
|
62
|
-
if enum.respond_to? :each_pair
|
63
|
-
enum.each_pair { |key, value|
|
64
|
-
result[key] = if arity > 1 || arity < -2
|
65
|
-
block.call key, value
|
66
|
-
else
|
67
|
-
block.call value
|
68
|
-
end
|
69
|
-
}
|
70
|
-
elsif enum.respond_to? :each
|
71
|
-
value = nil
|
72
|
-
enum.each_with_index { |key, index|
|
73
|
-
result[key] = if arity > 1 || arity < -2
|
74
|
-
block.call key, nil
|
75
|
-
else
|
76
|
-
block.call key
|
77
|
-
end
|
78
|
-
}
|
79
|
-
else
|
80
|
-
raise ArgumentError.new erb binding, <<-END
|
81
|
-
First argument to {NRSER.map_values} must respond to #each_pair or #each
|
82
|
-
|
83
|
-
Received
|
84
|
-
|
85
|
-
<%= enum.pretty_inspect %>
|
86
|
-
|
87
|
-
of class <%= enum.class %>
|
88
|
-
END
|
89
|
-
end
|
90
|
-
|
91
|
-
result
|
92
|
-
end # .map_values
|
93
|
-
|
94
|
-
end # module NRSER
|
@@ -1,57 +0,0 @@
|
|
1
|
-
# Definitions
|
2
|
-
# =======================================================================
|
3
|
-
|
4
|
-
module NRSER
|
5
|
-
|
6
|
-
# @!group Hash Functions
|
7
|
-
|
8
|
-
# Returns a new hash created by recursively merging `other_hash` on top of
|
9
|
-
# `base_hash`.
|
10
|
-
#
|
11
|
-
# Adapted from ActiveSupport.
|
12
|
-
#
|
13
|
-
# @see https://github.com/rails/rails/blob/23c8f6918d4e6b9a823aa7a91377c6e3b5d60e13/activesupport/lib/active_support/core_ext/hash/deep_merge.rb
|
14
|
-
#
|
15
|
-
# @param [Hash] base_hash
|
16
|
-
# Base hash - it's values will be overwritten by any key paths shared with
|
17
|
-
# the other hash.
|
18
|
-
#
|
19
|
-
# @param [Hash] other_hash
|
20
|
-
# "Update" hash - it's values will overwrite values at the same key path
|
21
|
-
# in the base hash.
|
22
|
-
#
|
23
|
-
# I don't love the name; just went with what ActiveSupport used.
|
24
|
-
#
|
25
|
-
# @return [Hash]
|
26
|
-
# New merged hash.
|
27
|
-
#
|
28
|
-
def self.deep_merge base_hash, other_hash, &block
|
29
|
-
deep_merge! base_hash.dup, other_hash, &block
|
30
|
-
end # .deep_merge
|
31
|
-
|
32
|
-
|
33
|
-
# Same as {.deep_merge}, but modifies `base_hash`.
|
34
|
-
#
|
35
|
-
# @return [Hash]
|
36
|
-
# The mutated base hash.
|
37
|
-
#
|
38
|
-
def self.deep_merge! base_hash, other_hash, &block
|
39
|
-
other_hash.each_pair do |current_key, other_value|
|
40
|
-
this_value = base_hash[current_key]
|
41
|
-
|
42
|
-
base_hash[current_key] = if this_value.is_a?(Hash) &&
|
43
|
-
other_value.is_a?(Hash)
|
44
|
-
deep_merge this_value, other_value, &block
|
45
|
-
else
|
46
|
-
if block_given? && base_hash.key?( current_key )
|
47
|
-
block.call(current_key, this_value, other_value)
|
48
|
-
else
|
49
|
-
other_value
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
base_hash
|
55
|
-
end
|
56
|
-
|
57
|
-
end # module NRSER
|