nrser 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|