core-inspect 0.0.2 → 0.1.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/CHANGELOG.md +7 -0
- data/lib/core/inspect/inspection.rb +28 -0
- data/lib/core/inspect/version.rb +1 -1
- data/lib/core/inspect.rb +1 -0
- data/lib/is/inspectable.rb +30 -13
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 615476710018bff02b4d41a3671bc153b79e3cd9ad68fde4fff8c80b6313263b
|
4
|
+
data.tar.gz: 3ce099faddcbe11e82f7de1acbb18fec0200a4525cf72c606aaf97503043c7e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ef18b5f03f05496601ce8642dd72a38f16696b88d72e13eda75549ee3e754fd4de34733ee8c1ca2cf863847d812f7a5798b1eb1bc12bcb9fc21c94072ddcceb
|
7
|
+
data.tar.gz: c61999af7e3408936794246655542317b95aa63910ac0a6a872df552caeb1807f7197ff6087ebc27e86b12dc1e1484c74e40848466e876727bbe7f5e082f72d0
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## [v0.1.0](https://github.com/metabahn/corerb/releases/tag/2021-11-23.1)
|
2
|
+
|
3
|
+
*released on 2021-11-23.1*
|
4
|
+
|
5
|
+
* `add` [#110](https://github.com/metabahn/corerb/pull/110) Introduce Core::Inspect::Inspectable for greater customization ([bryanp](https://github.com/bryanp))
|
6
|
+
* `chg` [#109](https://github.com/metabahn/corerb/pull/109) Prefer `__send__` to `send` ([bryanp](https://github.com/bryanp))
|
7
|
+
|
1
8
|
## [v0.0.2](https://github.com/metabahn/corerb/releases/tag/2021-11-02)
|
2
9
|
|
3
10
|
*released on 2021-11-02*
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Core
|
4
|
+
module Inspect
|
5
|
+
# [public]
|
6
|
+
#
|
7
|
+
class Inspection
|
8
|
+
def initialize(name:, resolver: name.to_s)
|
9
|
+
@name = name.to_s
|
10
|
+
@resolver = resolver
|
11
|
+
end
|
12
|
+
|
13
|
+
# [public]
|
14
|
+
#
|
15
|
+
attr_reader :name
|
16
|
+
|
17
|
+
# [public]
|
18
|
+
#
|
19
|
+
def resolve(context)
|
20
|
+
if @resolver.start_with?("@")
|
21
|
+
context.instance_variable_get(@resolver)
|
22
|
+
else
|
23
|
+
context.__send__(@resolver)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/core/inspect/version.rb
CHANGED
data/lib/core/inspect.rb
CHANGED
data/lib/is/inspectable.rb
CHANGED
@@ -4,6 +4,8 @@ require "is/extension"
|
|
4
4
|
require "is/localized"
|
5
5
|
require "is/stateful"
|
6
6
|
|
7
|
+
require_relative "../core/inspect/inspection"
|
8
|
+
|
7
9
|
module Is
|
8
10
|
# [public] Customized inspections for any object.
|
9
11
|
#
|
@@ -20,21 +22,40 @@ module Is
|
|
20
22
|
def inspects(*inspectables, without: [])
|
21
23
|
if inspectables.any?
|
22
24
|
mutate_state :__inspectables__ do |current_inspectables|
|
23
|
-
|
25
|
+
inspectables.each do |inspectable|
|
26
|
+
inspection = build_inspection(inspectable)
|
27
|
+
current_inspectables[inspection.name] = inspection
|
28
|
+
end
|
29
|
+
|
30
|
+
current_inspectables
|
24
31
|
end
|
25
32
|
end
|
26
33
|
|
27
34
|
if without.any?
|
28
35
|
mutate_state :__uninspectables__ do |current_uninspectables|
|
29
|
-
|
36
|
+
without.each do |inspectable|
|
37
|
+
inspection = build_inspection(inspectable)
|
38
|
+
current_uninspectables[inspection.name] = inspection
|
39
|
+
end
|
40
|
+
|
41
|
+
current_uninspectables
|
30
42
|
end
|
31
43
|
end
|
32
44
|
end
|
45
|
+
|
46
|
+
private def build_inspection(inspectable)
|
47
|
+
case inspectable
|
48
|
+
when Core::Inspect::Inspection
|
49
|
+
inspectable
|
50
|
+
else
|
51
|
+
Core::Inspect::Inspection.new(name: inspectable)
|
52
|
+
end
|
53
|
+
end
|
33
54
|
end
|
34
55
|
|
35
56
|
applies do
|
36
|
-
state :__inspectables__, default:
|
37
|
-
state :__uninspectables__, default:
|
57
|
+
state :__inspectables__, default: {}
|
58
|
+
state :__uninspectables__, default: {}
|
38
59
|
end
|
39
60
|
|
40
61
|
# [public] Inspects the object.
|
@@ -47,13 +68,7 @@ module Is
|
|
47
68
|
else
|
48
69
|
Inspectable.prevent_recursion(self) do
|
49
70
|
each_inspectable do |inspectable|
|
50
|
-
|
51
|
-
instance_variable_get(inspectable)
|
52
|
-
else
|
53
|
-
send(inspectable)
|
54
|
-
end
|
55
|
-
|
56
|
-
inspection << ", #{inspectable}=#{value.inspect}"
|
71
|
+
inspection << ", #{inspectable.name}=#{inspectable.resolve(self).inspect}"
|
57
72
|
end
|
58
73
|
|
59
74
|
inspection.strip << ">"
|
@@ -67,11 +82,13 @@ module Is
|
|
67
82
|
else
|
68
83
|
instance_variables.map(&:to_s).reject { |instance_variable|
|
69
84
|
instance_variable.start_with?("@_")
|
85
|
+
}.each_with_object({}) { |instance_variable, hash|
|
86
|
+
hash[instance_variable] = self.class.__send__(:build_inspection, instance_variable)
|
70
87
|
}
|
71
88
|
end
|
72
89
|
|
73
|
-
inspectables.
|
74
|
-
unless __uninspectables__.include?(inspectable)
|
90
|
+
inspectables.each_value do |inspectable|
|
91
|
+
unless __uninspectables__.include?(inspectable.name)
|
75
92
|
yield inspectable
|
76
93
|
end
|
77
94
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: core-inspect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bryan Powell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-11-
|
11
|
+
date: 2021-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: core-extension
|
@@ -61,6 +61,7 @@ files:
|
|
61
61
|
- CHANGELOG.md
|
62
62
|
- LICENSE
|
63
63
|
- lib/core/inspect.rb
|
64
|
+
- lib/core/inspect/inspection.rb
|
64
65
|
- lib/core/inspect/version.rb
|
65
66
|
- lib/is/inspectable.rb
|
66
67
|
homepage: https://github.com/metabahn/corerb/
|