object_forge 0.4.0 → 0.4.1
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/object_forge/crucible.rb +13 -12
- data/lib/object_forge/forge.rb +2 -1
- data/lib/object_forge/forge_dsl.rb +8 -4
- data/lib/object_forge/version.rb +1 -1
- data/sig/object_forge/molds.rbs +18 -16
- data/sig/object_forge.rbs +55 -39
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 94a44e43942c8ff51412a23c866e1f87984d9c2207b044492ea77d07150199d5
|
|
4
|
+
data.tar.gz: 2ca03af3ee44ce7005dd8e242266f7fb8409c54ebf560028ebbf8b6727ceaf0e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 58221f62b2aef297f053030da5b766518dec5547285c57b8f0330e0e83c15d1a5ed6fba651790900e36d7674c4206a3e70e19d45900645ce633b545a1717509b
|
|
7
|
+
data.tar.gz: 39109437f0647115364b504d0d0bca8af66fc76f2c573870c3939c0aca2798c709a52ce920365290a767b30adae5a193271e32a17fd99e3de9eb6edc07b3f2ab
|
|
@@ -88,19 +88,10 @@ module ObjectForge
|
|
|
88
88
|
# @return [Any]
|
|
89
89
|
#
|
|
90
90
|
# @raise [CircularAttributeDependencyError] if a dependency cycle is detected
|
|
91
|
-
def method_missing(name)
|
|
91
|
+
def method_missing(name)
|
|
92
92
|
if @attributes.key?(name)
|
|
93
|
-
if @resolving_attributes.include?(name)
|
|
94
|
-
|
|
95
|
-
elsif !@resolved_attributes.include?(name) && (::Proc === @attributes[name])
|
|
96
|
-
begin
|
|
97
|
-
@resolving_attributes << name
|
|
98
|
-
@attributes[name] = instance_exec(&@attributes[name])
|
|
99
|
-
@resolved_attributes << name
|
|
100
|
-
ensure
|
|
101
|
-
@resolving_attributes.pop
|
|
102
|
-
end
|
|
103
|
-
end
|
|
93
|
+
raise_circular_dependency_error!(name) if @resolving_attributes.include?(name)
|
|
94
|
+
resolve_attribute!(name) unless @resolved_attributes.include?(name)
|
|
104
95
|
@attributes[name]
|
|
105
96
|
else
|
|
106
97
|
super
|
|
@@ -119,5 +110,15 @@ module ObjectForge
|
|
|
119
110
|
raise CircularAttributeDependencyError,
|
|
120
111
|
"attribute depends on itself: #{loop.join(" -> ")} -> #{name}"
|
|
121
112
|
end
|
|
113
|
+
|
|
114
|
+
def resolve_attribute!(name)
|
|
115
|
+
return unless (attribute_proc = @attributes[name]) && (::Proc === attribute_proc)
|
|
116
|
+
|
|
117
|
+
@resolving_attributes << name
|
|
118
|
+
@attributes[name] = instance_exec(&attribute_proc) # steep:ignore BlockTypeMismatch
|
|
119
|
+
@resolved_attributes << name
|
|
120
|
+
ensure
|
|
121
|
+
@resolving_attributes.pop
|
|
122
|
+
end
|
|
122
123
|
end
|
|
123
124
|
end
|
data/lib/object_forge/forge.rb
CHANGED
|
@@ -189,7 +189,8 @@ module ObjectForge
|
|
|
189
189
|
"unknown traits for forge#{" #{name}" if name}: #{unknown_traits.join(", ")}"
|
|
190
190
|
end
|
|
191
191
|
|
|
192
|
-
|
|
192
|
+
trait_attributes = @parameters.traits.values_at(*traits) # : Array[Hash[Symbol, ObjectForge::attribute]]
|
|
193
|
+
attributes = @parameters.attributes.merge(*trait_attributes, overrides)
|
|
193
194
|
@crucible.call(attributes)
|
|
194
195
|
end
|
|
195
196
|
end
|
|
@@ -103,8 +103,9 @@ module ObjectForge
|
|
|
103
103
|
# @raise [TypeError] if +name+ is not a Symbol
|
|
104
104
|
def option(name, value)
|
|
105
105
|
unless ::Symbol === name
|
|
106
|
-
raise ::TypeError, "option name must be a Symbol, #{name.class} given"
|
|
106
|
+
raise ::TypeError, "option name must be a Symbol, #{name.class} given (in #{name.inspect})"
|
|
107
107
|
end
|
|
108
|
+
raise DSLError, "option definition does not take a block (in #{name.inspect})" if block_given?
|
|
108
109
|
|
|
109
110
|
@options[name] = value
|
|
110
111
|
|
|
@@ -197,7 +198,7 @@ module ObjectForge
|
|
|
197
198
|
seq = @sequences[name] ||= Sequence.new(initial)
|
|
198
199
|
|
|
199
200
|
if block_given?
|
|
200
|
-
attribute(name) { instance_exec(seq.next, &) }
|
|
201
|
+
attribute(name) { instance_exec(seq.next, &) } # steep:ignore BlockTypeMismatch
|
|
201
202
|
else
|
|
202
203
|
attribute(name) { seq.next }
|
|
203
204
|
end
|
|
@@ -287,10 +288,13 @@ module ObjectForge
|
|
|
287
288
|
# @raise [DSLError] if a reserved +name+ is used
|
|
288
289
|
def method_missing(name, value = nil, **nil, &)
|
|
289
290
|
return super(name) if frozen?
|
|
291
|
+
|
|
290
292
|
if valid_option_method?(name)
|
|
291
|
-
|
|
293
|
+
# Intentionally passing block to `option` to trigger DSLError if it is present.
|
|
294
|
+
return option(name[...-1].to_sym, value, &) # steep:ignore NoMethod, UnexpectedBlockGiven
|
|
292
295
|
end
|
|
293
|
-
|
|
296
|
+
# Block can be missing, but `attribute` will raise if it is.
|
|
297
|
+
return attribute(name, &) if respond_to_missing?(name, false) # steep:ignore BlockTypeMismatch
|
|
294
298
|
|
|
295
299
|
raise DSLError, "#{name.inspect} is a reserved name (in #{name.inspect})"
|
|
296
300
|
end
|
data/lib/object_forge/version.rb
CHANGED
data/sig/object_forge/molds.rbs
CHANGED
|
@@ -3,15 +3,7 @@ module ObjectForge
|
|
|
3
3
|
def self.wrap_mold
|
|
4
4
|
: ((ObjectForge::mold | Class | nil) mold) -> ObjectForge::mold?
|
|
5
5
|
def self.mold_for
|
|
6
|
-
: (ObjectForge::
|
|
7
|
-
|
|
8
|
-
class SingleArgumentMold
|
|
9
|
-
include ObjectForge::_Mold
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
class KeywordsMold
|
|
13
|
-
include ObjectForge::_Mold
|
|
14
|
-
end
|
|
6
|
+
: (ObjectForge::forge_target) -> ObjectForge::mold
|
|
15
7
|
|
|
16
8
|
class WrappedMold
|
|
17
9
|
interface _MoldClass[T]
|
|
@@ -25,43 +17,53 @@ module ObjectForge
|
|
|
25
17
|
def initialize: (_MoldClass[ObjectForge::mold] wrapped_mold) -> void
|
|
26
18
|
end
|
|
27
19
|
|
|
20
|
+
class SingleArgumentMold
|
|
21
|
+
include ObjectForge::_Mold
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
class KeywordsMold
|
|
25
|
+
include ObjectForge::_Mold
|
|
26
|
+
end
|
|
27
|
+
|
|
28
28
|
class StructMold
|
|
29
29
|
interface _StructSubclass[T]
|
|
30
30
|
def new
|
|
31
31
|
: (*untyped) -> T
|
|
32
32
|
| (**untyped) -> T
|
|
33
|
-
| (Hash[Symbol,
|
|
33
|
+
| (Hash[Symbol, ObjectForge::attribute]) -> T
|
|
34
34
|
def members: -> Array[Symbol]
|
|
35
35
|
def keyword_init?: -> bool?
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
RUBY_FEATURE_AUTO_KEYWORDS: bool
|
|
39
|
+
|
|
39
40
|
attr_reader lax: bool
|
|
41
|
+
alias lax? lax
|
|
40
42
|
|
|
41
43
|
def initialize: (?lax: bool) -> void
|
|
42
44
|
|
|
43
45
|
def call
|
|
44
|
-
: [T < Struct] (forge_target: _StructSubclass[T], attributes: Hash[Symbol,
|
|
46
|
+
: [T < Struct] (forge_target: _StructSubclass[T], attributes: Hash[Symbol, ObjectForge::attribute], **untyped) -> T
|
|
45
47
|
|
|
46
48
|
private
|
|
47
49
|
|
|
48
50
|
def build_struct_with_unspecified_keyword_init
|
|
49
|
-
: [T < Struct] (_StructSubclass[T] forge_target, Hash[Symbol,
|
|
51
|
+
: [T < Struct] (_StructSubclass[T] forge_target, Hash[Symbol, ObjectForge::attribute] attributes) -> T
|
|
50
52
|
end
|
|
51
53
|
|
|
52
54
|
class HashMold
|
|
53
55
|
interface _HashSubclass[T]
|
|
54
|
-
def []: (Hash[
|
|
56
|
+
def []: (Hash[Symbol, ObjectForge::attribute]) -> T
|
|
55
57
|
end
|
|
56
58
|
|
|
57
|
-
attr_reader default:
|
|
59
|
+
attr_reader default: ObjectForge::attribute
|
|
58
60
|
attr_reader default_proc: Proc?
|
|
59
61
|
|
|
60
62
|
def initialize
|
|
61
|
-
: (?
|
|
63
|
+
: [T < Hash] (?ObjectForge::attribute default_value) ?{ (T hash, untyped key) -> ObjectForge::attribute} -> void
|
|
62
64
|
|
|
63
65
|
def call
|
|
64
|
-
: [T < Hash] (forge_target: _HashSubclass[T], attributes: Hash[Symbol,
|
|
66
|
+
: [T < Hash] (forge_target: _HashSubclass[T], attributes: Hash[Symbol, ObjectForge::attribute], **untyped) -> T
|
|
65
67
|
end
|
|
66
68
|
end
|
|
67
69
|
end
|
data/sig/object_forge.rbs
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
module ObjectForge
|
|
2
|
-
type
|
|
3
|
-
type
|
|
2
|
+
type forge_target = untyped
|
|
3
|
+
type forge_result = untyped
|
|
4
|
+
type attribute = untyped
|
|
5
|
+
|
|
6
|
+
type mold = ::Object & _Mold
|
|
7
|
+
type sequenceable = _RespondTo & _Sequenceable
|
|
4
8
|
|
|
5
9
|
interface _RespondTo
|
|
6
10
|
def respond_to?: (Symbol name, ?bool include_private) -> bool
|
|
@@ -9,25 +13,22 @@ module ObjectForge
|
|
|
9
13
|
interface _Sequenceable
|
|
10
14
|
def succ: -> self
|
|
11
15
|
end
|
|
12
|
-
interface _Forgable
|
|
13
|
-
def new: (Hash[Symbol, untyped]) -> self
|
|
14
|
-
end
|
|
15
16
|
interface _ForgeParameters
|
|
16
|
-
def attributes: () -> Hash[Symbol,
|
|
17
|
-
def traits: () -> Hash[Symbol, Hash[Symbol,
|
|
17
|
+
def attributes: () -> Hash[Symbol, ObjectForge::attribute]
|
|
18
|
+
def traits: () -> Hash[Symbol, Hash[Symbol, ObjectForge::attribute]]
|
|
18
19
|
def options: () -> Hash[Symbol, untyped]
|
|
19
20
|
end
|
|
20
21
|
interface _Mold
|
|
21
22
|
def call
|
|
22
|
-
: (forge_target:
|
|
23
|
+
: (forge_target: ObjectForge::forge_target, attributes: Hash[Symbol, ObjectForge::attribute], **untyped) -> ObjectForge::forge_result
|
|
23
24
|
end
|
|
24
25
|
interface _Crucible
|
|
25
26
|
def call
|
|
26
|
-
: (Hash[Symbol,
|
|
27
|
+
: (Hash[Symbol, ObjectForge::attribute]) -> Hash[Symbol, ObjectForge::attribute]
|
|
27
28
|
end
|
|
28
29
|
interface _Hook
|
|
29
30
|
def call
|
|
30
|
-
: (ObjectForge::
|
|
31
|
+
: (ObjectForge::forge_result) -> void
|
|
31
32
|
end
|
|
32
33
|
|
|
33
34
|
class Error < StandardError
|
|
@@ -36,30 +37,30 @@ module ObjectForge
|
|
|
36
37
|
end
|
|
37
38
|
class CircularAttributeDependencyError < Error
|
|
38
39
|
end
|
|
39
|
-
class ObjectInterfaceError <
|
|
40
|
+
class ObjectInterfaceError < ::TypeError
|
|
40
41
|
end
|
|
41
42
|
|
|
42
|
-
VERSION: String
|
|
43
|
+
VERSION: ::String
|
|
43
44
|
DEFAULT_YARD: ObjectForge::Forgeyard
|
|
44
45
|
|
|
45
46
|
def self.sequence
|
|
46
|
-
: (
|
|
47
|
+
: ((ObjectForge::sequenceable | ObjectForge::Sequence) initial) -> ObjectForge::Sequence
|
|
47
48
|
|
|
48
49
|
def self.define
|
|
49
|
-
: (Symbol name, ObjectForge::
|
|
50
|
-
| (Symbol name, ObjectForge::
|
|
50
|
+
: (Symbol name, ObjectForge::forge_target) { (ObjectForge::ForgeDSL) -> void } -> ObjectForge::Forge
|
|
51
|
+
| (Symbol name, ObjectForge::forge_target) { [self: ObjectForge::ForgeDSL] -> void } -> ObjectForge::Forge
|
|
51
52
|
|
|
52
53
|
def self.forge
|
|
53
|
-
: (Symbol name, *Symbol traits, **
|
|
54
|
+
: (Symbol name, *Symbol traits, **ObjectForge::attribute overrides) ?{ (ObjectForge::forge_result) -> void } -> ObjectForge::forge_result
|
|
54
55
|
def self.build
|
|
55
|
-
: (Symbol name, *Symbol traits, **
|
|
56
|
+
: (Symbol name, *Symbol traits, **ObjectForge::attribute overrides) ?{ (ObjectForge::forge_result) -> void } -> ObjectForge::forge_result
|
|
56
57
|
def self.call
|
|
57
|
-
: (Symbol name, *Symbol traits, **
|
|
58
|
+
: (Symbol name, *Symbol traits, **ObjectForge::attribute overrides) ?{ (ObjectForge::forge_result) -> void } -> ObjectForge::forge_result
|
|
58
59
|
end
|
|
59
60
|
|
|
60
61
|
class ObjectForge::Sequence
|
|
61
62
|
def self.new
|
|
62
|
-
: (
|
|
63
|
+
: ((ObjectForge::sequenceable | ObjectForge::Sequence) initial) -> ObjectForge::Sequence
|
|
63
64
|
|
|
64
65
|
attr_reader initial: ObjectForge::sequenceable
|
|
65
66
|
|
|
@@ -78,8 +79,8 @@ class ObjectForge::Forgeyard
|
|
|
78
79
|
: () -> void
|
|
79
80
|
|
|
80
81
|
def define
|
|
81
|
-
: (Symbol name, ObjectForge::
|
|
82
|
-
| (Symbol name, ObjectForge::
|
|
82
|
+
: (Symbol name, ObjectForge::forge_target) { (ObjectForge::ForgeDSL) -> void } -> ObjectForge::Forge
|
|
83
|
+
| (Symbol name, ObjectForge::forge_target) { [self: ObjectForge::ForgeDSL] -> void } -> ObjectForge::Forge
|
|
83
84
|
|
|
84
85
|
def register
|
|
85
86
|
: (Symbol name, ObjectForge::Forge forge) -> ObjectForge::Forge
|
|
@@ -88,32 +89,40 @@ class ObjectForge::Forgeyard
|
|
|
88
89
|
: (Symbol name) -> ObjectForge::Forge
|
|
89
90
|
|
|
90
91
|
def forge
|
|
91
|
-
: (Symbol name, *Symbol traits, **
|
|
92
|
+
: (Symbol name, *Symbol traits, **ObjectForge::attribute overrides) ?{ (ObjectForge::forge_result) -> void } -> ObjectForge::forge_result
|
|
92
93
|
alias build forge
|
|
93
94
|
alias call forge
|
|
94
95
|
end
|
|
95
96
|
|
|
96
97
|
class ObjectForge::Forge
|
|
97
|
-
class Parameters
|
|
98
|
+
class Parameters < Struct[Hash[Symbol, untyped]]
|
|
98
99
|
include ObjectForge::_ForgeParameters
|
|
99
100
|
|
|
101
|
+
# Struct allows skipping arguments, but in reality they are all required.
|
|
100
102
|
def initialize
|
|
101
|
-
: (attributes: Hash[Symbol,
|
|
103
|
+
: (attributes: Hash[Symbol, ObjectForge::attribute], traits: Hash[Symbol, Hash[Symbol, ObjectForge::attribute]], options: Hash[Symbol, untyped]) -> void
|
|
102
104
|
end
|
|
103
105
|
|
|
104
|
-
attr_reader forge_target: ObjectForge::
|
|
106
|
+
attr_reader forge_target: ObjectForge::forge_target
|
|
105
107
|
alias target forge_target
|
|
106
|
-
|
|
108
|
+
|
|
109
|
+
attr_reader name: Symbol?
|
|
110
|
+
|
|
111
|
+
attr_reader parameters: ObjectForge::_ForgeParameters
|
|
112
|
+
|
|
113
|
+
@crucible: ObjectForge::_Crucible
|
|
114
|
+
@mold: ObjectForge::_Mold
|
|
115
|
+
@after_forge_hook: ObjectForge::_Hook?
|
|
107
116
|
|
|
108
117
|
def self.define
|
|
109
|
-
: (ObjectForge::
|
|
110
|
-
| (ObjectForge::
|
|
118
|
+
: (ObjectForge::forge_target, ?name: Symbol?) { (ObjectForge::ForgeDSL) -> void } -> ObjectForge::Forge
|
|
119
|
+
| (ObjectForge::forge_target, ?name: Symbol?) { [self: ObjectForge::ForgeDSL] -> void } -> ObjectForge::Forge
|
|
111
120
|
|
|
112
121
|
def initialize
|
|
113
|
-
: (ObjectForge::
|
|
122
|
+
: (ObjectForge::forge_target, ObjectForge::_ForgeParameters parameters, ?name: Symbol?) -> void
|
|
114
123
|
|
|
115
124
|
def forge
|
|
116
|
-
: (*Symbol traits, **
|
|
125
|
+
: (*Symbol traits, **ObjectForge::attribute overrides) ?{ (ObjectForge::forge_result) -> void } -> ObjectForge::forge_result
|
|
117
126
|
alias build forge
|
|
118
127
|
alias call forge
|
|
119
128
|
|
|
@@ -123,13 +132,13 @@ class ObjectForge::Forge
|
|
|
123
132
|
: (Hash[Symbol, untyped]) -> ObjectForge::_Crucible
|
|
124
133
|
|
|
125
134
|
def determine_mold
|
|
126
|
-
: (ObjectForge::
|
|
135
|
+
: (ObjectForge::forge_target, Hash[Symbol, untyped]) -> ObjectForge::mold
|
|
127
136
|
|
|
128
137
|
def determine_after_forge_hook
|
|
129
138
|
: (Hash[Symbol, untyped] options) -> ObjectForge::_Hook?
|
|
130
139
|
|
|
131
140
|
def resolve_attributes
|
|
132
|
-
: (Array[Symbol] traits, Hash[Symbol,
|
|
141
|
+
: (Array[Symbol] traits, Hash[Symbol, ObjectForge::attribute] overrides) -> Hash[Symbol, ObjectForge::attribute]
|
|
133
142
|
end
|
|
134
143
|
|
|
135
144
|
class ObjectForge::ForgeDSL < ObjectForge::UnBasicObject
|
|
@@ -152,11 +161,12 @@ class ObjectForge::ForgeDSL < ObjectForge::UnBasicObject
|
|
|
152
161
|
: (Symbol name, untyped value) -> Symbol
|
|
153
162
|
|
|
154
163
|
def attribute
|
|
155
|
-
: (Symbol name) { [self: ObjectForge::Crucible] ->
|
|
164
|
+
: (Symbol name) { [self: ObjectForge::Crucible] -> ObjectForge::attribute } -> Symbol
|
|
156
165
|
alias [] attribute
|
|
157
166
|
|
|
158
167
|
def sequence
|
|
159
168
|
: (Symbol name, ?(ObjectForge::sequenceable | ObjectForge::Sequence) initial) { (ObjectForge::sequenceable) [self: ObjectForge::Crucible] -> untyped } -> Symbol
|
|
169
|
+
| (Symbol name, ?(ObjectForge::sequenceable | ObjectForge::Sequence) initial) -> Symbol
|
|
160
170
|
|
|
161
171
|
def trait
|
|
162
172
|
: (Symbol name) { (self) -> void } -> Symbol
|
|
@@ -166,7 +176,10 @@ class ObjectForge::ForgeDSL < ObjectForge::UnBasicObject
|
|
|
166
176
|
private
|
|
167
177
|
|
|
168
178
|
def method_missing
|
|
179
|
+
# Attribute shortcut:
|
|
169
180
|
: (Symbol name) { [self: ObjectForge::Crucible] -> untyped } -> Symbol
|
|
181
|
+
# Option shortcut:
|
|
182
|
+
| (Symbol name, untyped value) -> Symbol
|
|
170
183
|
# After freezing:
|
|
171
184
|
| (Symbol name) { -> untyped } -> void
|
|
172
185
|
|
|
@@ -183,20 +196,20 @@ class ObjectForge::Crucible < ObjectForge::UnBasicObject
|
|
|
183
196
|
def self.resolve
|
|
184
197
|
: (Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
185
198
|
|
|
186
|
-
@attributes: Hash[Symbol,
|
|
199
|
+
@attributes: Hash[Symbol, ObjectForge::attribute]
|
|
187
200
|
@resolved_attributes: Set[Symbol]
|
|
188
201
|
@resolving_attributes: Array[Symbol]
|
|
189
202
|
|
|
190
203
|
def initialize
|
|
191
|
-
: (Hash[Symbol,
|
|
204
|
+
: (Hash[Symbol, ObjectForge::attribute] attributes) -> void
|
|
192
205
|
|
|
193
206
|
def resolve!
|
|
194
|
-
: -> Hash[Symbol,
|
|
207
|
+
: -> Hash[Symbol, ObjectForge::attribute]
|
|
195
208
|
|
|
196
209
|
private
|
|
197
210
|
|
|
198
211
|
def method_missing
|
|
199
|
-
: (Symbol name) ->
|
|
212
|
+
: (Symbol name) -> ObjectForge::attribute
|
|
200
213
|
alias [] method_missing
|
|
201
214
|
|
|
202
215
|
def respond_to_missing?
|
|
@@ -204,6 +217,9 @@ class ObjectForge::Crucible < ObjectForge::UnBasicObject
|
|
|
204
217
|
|
|
205
218
|
def raise_circular_dependency_error!
|
|
206
219
|
: (Symbol name) -> void
|
|
220
|
+
|
|
221
|
+
def resolve_attribute!
|
|
222
|
+
: (Symbol name) -> void
|
|
207
223
|
end
|
|
208
224
|
|
|
209
225
|
class ObjectForge::UnBasicObject < BasicObject
|
|
@@ -226,9 +242,9 @@ class ObjectForge::UnBasicObject < BasicObject
|
|
|
226
242
|
|
|
227
243
|
def to_s: -> String
|
|
228
244
|
|
|
229
|
-
def pretty_print: (
|
|
245
|
+
def pretty_print: (PP) -> void
|
|
230
246
|
|
|
231
|
-
def pretty_print_cycle: (
|
|
247
|
+
def pretty_print_cycle: (PP) -> void
|
|
232
248
|
|
|
233
249
|
private
|
|
234
250
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: object_forge
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alexander Bulancov
|
|
@@ -62,9 +62,9 @@ licenses:
|
|
|
62
62
|
metadata:
|
|
63
63
|
homepage_uri: https://github.com/trinistr/object_forge
|
|
64
64
|
bug_tracker_uri: https://github.com/trinistr/object_forge/issues
|
|
65
|
-
documentation_uri: https://rubydoc.info/gems/object_forge/0.4.
|
|
66
|
-
source_code_uri: https://github.com/trinistr/object_forge/tree/v0.4.
|
|
67
|
-
changelog_uri: https://github.com/trinistr/object_forge/blob/v0.4.
|
|
65
|
+
documentation_uri: https://rubydoc.info/gems/object_forge/0.4.1
|
|
66
|
+
source_code_uri: https://github.com/trinistr/object_forge/tree/v0.4.1
|
|
67
|
+
changelog_uri: https://github.com/trinistr/object_forge/blob/v0.4.1/CHANGELOG.md
|
|
68
68
|
rubygems_mfa_required: 'true'
|
|
69
69
|
rdoc_options:
|
|
70
70
|
- "--tag"
|