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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc2d563ff77efb448c68483f7e8e7b8d955af55f8447cbd717264259f8bb9022
4
- data.tar.gz: 27ce98b013c29c01b8f624b9df2cc4d4324d211e3e0667dcaed127c03b16a771
3
+ metadata.gz: 8e31c71beffdd1f77f3e281d0098644c812c42a204b0e033dc165539a3f5099e
4
+ data.tar.gz: a1affa874ac17a4611ba72375585a2f120a257c728d7378bf4514610e8fd99bb
5
5
  SHA512:
6
- metadata.gz: 416079486e64a1ff69050667931c512d0836b09c0299917385538958716809b5e889905542582da0f814b38d04fed501d94f00b2dc24ef332de1e721ae8e8795
7
- data.tar.gz: bd91b7cd0c7afebc1b339ab211f1acb2e2c51fdbb12b5f41c774f2144fd46a185e76dc925fe96122c5d6b0d14d6acd30383c20e8d1e41a09bc7c2ffecd215845
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
- # Return a string representation of this object and all of its props
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
- T.unsafe(T.cast(self, Object).class).decorator.inspect_instance(self)
40
+ string = +""
41
+ PP.singleline_pp(self, string)
42
+ string
10
43
  end
11
44
 
12
- # Override the PP gem with something that's similar, but gives us a hook
13
- # to do redaction
45
+ # Return a pretty string representation of this object and all of its props
14
46
  def pretty_inspect
15
- T.unsafe(T.cast(self, Object).class).decorator.inspect_instance(self, multiline: true)
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
- # overrides T::Props::PrettyPrintable
342
- private def inspect_instance_components(instance, multiline:, indent:)
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
- pretty_kvs = extra_props.map {|k, v| [k.to_sym, v.inspect]}
345
- extra = join_props_with_pretty_values(pretty_kvs, multiline: false)
346
- super + ["@_extra_props=<#{extra}>"]
347
- else
348
- super
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.10572
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-03 00:00:00.000000000 Z
11
+ date: 2022-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest