sorbet-runtime 0.5.10572 → 0.5.10575
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/types/props/pretty_printable.rb +39 -86
- data/lib/types/props/serializable.rb +11 -7
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8e31c71beffdd1f77f3e281d0098644c812c42a204b0e033dc165539a3f5099e
|
|
4
|
+
data.tar.gz: a1affa874ac17a4611ba72375585a2f120a257c728d7378bf4514610e8fd99bb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6f3c62a3f0b579375c2025e1d0945132b0a7e3cb482c6caf25b13b3ff31e0018854d24cf6b364e5641cd177c58eb41e46274b7fceb0a7e0b9054eeed7c545ee9
|
|
7
|
+
data.tar.gz: 3d7489b23e5e512bcdf197dab0f65b889e139013cca77c28e732d45cbf2b85e8c21517993b9c6bc22256d92e99904971efde05739361cc85571f46ea52e69a23
|
|
@@ -1,18 +1,52 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
# typed: true
|
|
3
|
+
require 'pp'
|
|
3
4
|
|
|
4
5
|
module T::Props::PrettyPrintable
|
|
5
6
|
include T::Props::Plugin
|
|
6
7
|
|
|
7
|
-
#
|
|
8
|
+
# Override the PP gem with something that's similar, but gives us a hook to do redaction and customization
|
|
9
|
+
def pretty_print(pp)
|
|
10
|
+
clazz = T.unsafe(T.cast(self, Object).class).decorator
|
|
11
|
+
multiline = pp.is_a?(PP)
|
|
12
|
+
pp.group(1, "<#{T.unsafe(self).class}", ">") do
|
|
13
|
+
clazz.all_props.sort.each do |prop|
|
|
14
|
+
pp.breakable
|
|
15
|
+
val = clazz.get(self, prop)
|
|
16
|
+
rules = clazz.prop_rules(prop)
|
|
17
|
+
pp.text("#{prop}=")
|
|
18
|
+
if (custom_inspect = rules[:inspect])
|
|
19
|
+
inspected = if T::Utils.arity(custom_inspect) == 1
|
|
20
|
+
custom_inspect.call(val)
|
|
21
|
+
else
|
|
22
|
+
custom_inspect.call(val, {multiline: multiline})
|
|
23
|
+
end
|
|
24
|
+
pp.text(inspected.nil? ? "nil" : "\"#{inspected}\"")
|
|
25
|
+
elsif rules[:sensitivity] && !rules[:sensitivity].empty? && !val.nil?
|
|
26
|
+
pp.text("<REDACTED #{rules[:sensitivity].join(', ')}>")
|
|
27
|
+
else
|
|
28
|
+
val.pretty_print(pp)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
clazz.pretty_print_extra(self, pp)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Overridable method to add anything that is not a prop
|
|
36
|
+
def pretty_print_extra(instance, pp); end
|
|
37
|
+
|
|
38
|
+
# Return a string representation of this object and all of its props in a single line
|
|
8
39
|
def inspect
|
|
9
|
-
|
|
40
|
+
string = +""
|
|
41
|
+
PP.singleline_pp(self, string)
|
|
42
|
+
string
|
|
10
43
|
end
|
|
11
44
|
|
|
12
|
-
#
|
|
13
|
-
# to do redaction
|
|
45
|
+
# Return a pretty string representation of this object and all of its props
|
|
14
46
|
def pretty_inspect
|
|
15
|
-
|
|
47
|
+
string = +""
|
|
48
|
+
PP.pp(self, string)
|
|
49
|
+
string
|
|
16
50
|
end
|
|
17
51
|
|
|
18
52
|
module DecoratorMethods
|
|
@@ -22,86 +56,5 @@ module T::Props::PrettyPrintable
|
|
|
22
56
|
def valid_rule_key?(key)
|
|
23
57
|
super || key == :inspect
|
|
24
58
|
end
|
|
25
|
-
|
|
26
|
-
sig do
|
|
27
|
-
params(instance: T::Props::PrettyPrintable, multiline: T::Boolean, indent: String)
|
|
28
|
-
.returns(String)
|
|
29
|
-
end
|
|
30
|
-
def inspect_instance(instance, multiline: false, indent: ' ')
|
|
31
|
-
components =
|
|
32
|
-
inspect_instance_components(
|
|
33
|
-
instance,
|
|
34
|
-
multiline: multiline,
|
|
35
|
-
indent: indent
|
|
36
|
-
)
|
|
37
|
-
.reject(&:empty?)
|
|
38
|
-
|
|
39
|
-
# Not using #<> here as that makes pry highlight these objects
|
|
40
|
-
# as if they were all comments, whereas this makes them look
|
|
41
|
-
# like the structured thing they are.
|
|
42
|
-
if multiline
|
|
43
|
-
"#{components[0]}:\n" + T.must(components[1..-1]).join("\n")
|
|
44
|
-
else
|
|
45
|
-
"<#{components.join(' ')}>"
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
sig do
|
|
50
|
-
params(instance: T::Props::PrettyPrintable, multiline: T::Boolean, indent: String)
|
|
51
|
-
.returns(T::Array[String])
|
|
52
|
-
end
|
|
53
|
-
private def inspect_instance_components(instance, multiline:, indent:)
|
|
54
|
-
pretty_props = T.unsafe(self).all_props.map do |prop|
|
|
55
|
-
[prop, inspect_prop_value(instance, prop, multiline: multiline, indent: indent)]
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
joined_props = join_props_with_pretty_values(
|
|
59
|
-
pretty_props,
|
|
60
|
-
multiline: multiline,
|
|
61
|
-
indent: indent
|
|
62
|
-
)
|
|
63
|
-
|
|
64
|
-
[
|
|
65
|
-
T.unsafe(self).decorated_class.to_s,
|
|
66
|
-
joined_props,
|
|
67
|
-
]
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
sig do
|
|
71
|
-
params(instance: T::Props::PrettyPrintable, prop: Symbol, multiline: T::Boolean, indent: String)
|
|
72
|
-
.returns(String)
|
|
73
|
-
.checked(:never)
|
|
74
|
-
end
|
|
75
|
-
private def inspect_prop_value(instance, prop, multiline:, indent:)
|
|
76
|
-
val = T.unsafe(self).get(instance, prop)
|
|
77
|
-
rules = T.unsafe(self).prop_rules(prop)
|
|
78
|
-
if (custom_inspect = rules[:inspect])
|
|
79
|
-
if T::Utils.arity(custom_inspect) == 1
|
|
80
|
-
custom_inspect.call(val)
|
|
81
|
-
else
|
|
82
|
-
custom_inspect.call(val, {multiline: multiline, indent: indent})
|
|
83
|
-
end
|
|
84
|
-
elsif rules[:sensitivity] && !rules[:sensitivity].empty? && !val.nil?
|
|
85
|
-
"<REDACTED #{rules[:sensitivity].join(', ')}>"
|
|
86
|
-
else
|
|
87
|
-
val.inspect
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
sig do
|
|
92
|
-
params(pretty_kvs: T::Array[[Symbol, String]], multiline: T::Boolean, indent: String)
|
|
93
|
-
.returns(String)
|
|
94
|
-
end
|
|
95
|
-
private def join_props_with_pretty_values(pretty_kvs, multiline:, indent: ' ')
|
|
96
|
-
pairs = pretty_kvs
|
|
97
|
-
.sort_by {|k, _v| k.to_s}
|
|
98
|
-
.map {|k, v| "#{k}=#{v}"}
|
|
99
|
-
|
|
100
|
-
if multiline
|
|
101
|
-
indent + pairs.join("\n#{indent}")
|
|
102
|
-
else
|
|
103
|
-
pairs.join(', ')
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
59
|
end
|
|
107
60
|
end
|
|
@@ -338,14 +338,18 @@ module T::Props::Serializable::DecoratorMethods
|
|
|
338
338
|
end
|
|
339
339
|
end
|
|
340
340
|
|
|
341
|
-
#
|
|
342
|
-
|
|
341
|
+
# adds to the default result of T::Props::PrettyPrintable
|
|
342
|
+
def pretty_print_extra(instance, pp)
|
|
343
343
|
if (extra_props = extra_props(instance)) && !extra_props.empty?
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
344
|
+
pp.breakable
|
|
345
|
+
pp.text("@_extra_props=")
|
|
346
|
+
pp.group(1, "<", ">") do
|
|
347
|
+
extra_props.each_with_index do |(prop, value), i|
|
|
348
|
+
pp.breakable unless i.zero?
|
|
349
|
+
pp.text("#{prop}=")
|
|
350
|
+
value.pretty_print(pp)
|
|
351
|
+
end
|
|
352
|
+
end
|
|
349
353
|
end
|
|
350
354
|
end
|
|
351
355
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sorbet-runtime
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.5.
|
|
4
|
+
version: 0.5.10575
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Stripe
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-12-
|
|
11
|
+
date: 2022-12-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: minitest
|