spoom 1.8.9 → 1.8.11

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: 97cf397397aa58c2322089f795e390e7b7946445966fc341dd6a8566ae9b8ded
4
- data.tar.gz: e42da92b60a476c7ed03116b9ce1c780fc59ec133b02ed73a6f501a0bb162359
3
+ metadata.gz: 4112003bfcd62cb8c66104ac6c773669d20d4a5ab0b070e93a9d7633cdff7126
4
+ data.tar.gz: 8cee75de87ce5526c8a3e6c1cf7b7d2ae7a0b98b48a1f1ea1250959984d88ca3
5
5
  SHA512:
6
- metadata.gz: eefa8467cecb02ee37700b60ba0d6570e90650a3a148992aeecf42e605ea51a787dfa4e0b08c31ae4c48f26b715bd13a21aba40197f10f63dfeef935378399e9
7
- data.tar.gz: ae699ed2ce340106b923744a6b3583fe32c6ecd67c8b8dca16d750d32f2c13e95c0d11a11410d8587852d1a77caedd974f88ba18cd3a21166486114bacc3135e
6
+ metadata.gz: e23ea3cf62bc326705b91a7618efc658f7b1bcc1df17532b9f0218766cf61ab807f956751c11389db6317c1885ada0d403d51c8b92d9d0131c0ce5b0c04442c7
7
+ data.tar.gz: 19bfdcbb7adbb766647ae1619450154587ccb673ad9d84b7a1f070dd3f1f9c9bef3d38f233df3b4f914e7a786832bbfe1b4fd51f972a2a4873c626a0250abbb9
@@ -76,6 +76,10 @@ module Spoom
76
76
  case node.superclass&.slice
77
77
  when /^(::)?T::Struct$/
78
78
  @counters.increment("t_structs")
79
+ when /^(::)?T::InexactStruct$/
80
+ @counters.increment("t_inexact_structs")
81
+ when /^(::)?T::ImmutableStruct$/
82
+ @counters.increment("t_immutable_structs")
79
83
  when /^(::)?T::Enum$/
80
84
  @counters.increment("t_enums")
81
85
  end
@@ -51,6 +51,21 @@ module Spoom
51
51
  !!strictness && valid_strictness?(strictness)
52
52
  end
53
53
 
54
+ # returns true if the passed content contains a valid sigil at or above the passed strictness
55
+ # internal sigils do not satisfy a minimum strictness
56
+ #: (String content, String strictness) -> bool
57
+ def satisfies_minimum_strictness?(content, strictness)
58
+ return false unless contains_valid_sigil?(content)
59
+
60
+ current_strictness = strictness_in_content(content)
61
+ strictness = strictness.strip
62
+ return false if current_strictness == STRICTNESS_INTERNAL || strictness == STRICTNESS_INTERNAL
63
+
64
+ strictness_index = VALID_STRICTNESS.index(current_strictness)
65
+ minimum_index = VALID_STRICTNESS.index(strictness)
66
+ !!strictness_index && !!minimum_index && strictness_index >= minimum_index
67
+ end
68
+
54
69
  # returns a string which is the passed content but with the sigil updated to a new strictness
55
70
  #: (String content, String new_strictness) -> String
56
71
  def update_sigil(content, new_strictness)
@@ -6,7 +6,9 @@ module Spoom
6
6
  module Translate
7
7
  module RBSCommentsToSorbetSigs
8
8
  class << self
9
- RBS_ANNOTATION_MARKERS = [
9
+ RBS_REWRITE_PATTERN = Regexp.union([
10
+ "#:",
11
+ "#|",
10
12
  "# @abstract",
11
13
  "# @interface",
12
14
  "# @sealed",
@@ -15,9 +17,16 @@ module Spoom
15
17
  "# @override",
16
18
  "# @overridable",
17
19
  "# @without_runtime",
18
- ].freeze #: Array[String]
19
- RBS_REWRITE_PATTERN = Regexp.union(["#:", "#|", *RBS_ANNOTATION_MARKERS]).freeze #: Regexp
20
- private_constant :RBS_ANNOTATION_MARKERS, :RBS_REWRITE_PATTERN
20
+ ]).freeze #: Regexp
21
+ private_constant :RBS_REWRITE_PATTERN
22
+
23
+ # Detects RBS comment markers (`#:`, `#|`, and supported `# @...` annotations).
24
+ # Use this check to skip parsing files without those markers.
25
+ # It does not validate RBS syntax or check the `typed:` sigil.
26
+ #: (String ruby_contents) -> bool
27
+ def contains_rbs_syntax?(ruby_contents)
28
+ ruby_contents.match?(RBS_REWRITE_PATTERN)
29
+ end
21
30
 
22
31
  #: (
23
32
  #| String ruby_contents,
@@ -34,7 +43,7 @@ module Spoom
34
43
  erase_generic_types: false,
35
44
  force: false
36
45
  )
37
- return ruby_contents unless ruby_contents.match?(RBS_REWRITE_PATTERN) &&
46
+ return ruby_contents unless contains_rbs_syntax?(ruby_contents) &&
38
47
  (force || Sigils.contains_valid_sigil?(ruby_contents))
39
48
 
40
49
  options = Options.new(
data/lib/spoom/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Spoom
5
- VERSION = "1.8.9"
5
+ VERSION = "1.8.11"
6
6
  end
data/rbi/spoom.rbi CHANGED
@@ -672,27 +672,32 @@ class Spoom::Coverage::D3::ColorPalette
672
672
  sig { returns(::String) }
673
673
  def false_color; end
674
674
 
675
- def false_color=(_arg0); end
675
+ sig { params(false_color: ::String).returns(::String) }
676
+ def false_color=(false_color); end
676
677
 
677
678
  sig { returns(::String) }
678
679
  def ignore_color; end
679
680
 
680
- def ignore_color=(_arg0); end
681
+ sig { params(ignore_color: ::String).returns(::String) }
682
+ def ignore_color=(ignore_color); end
681
683
 
682
684
  sig { returns(::String) }
683
685
  def strict_color; end
684
686
 
685
- def strict_color=(_arg0); end
687
+ sig { params(strict_color: ::String).returns(::String) }
688
+ def strict_color=(strict_color); end
686
689
 
687
690
  sig { returns(::String) }
688
691
  def strong_color; end
689
692
 
690
- def strong_color=(_arg0); end
693
+ sig { params(strong_color: ::String).returns(::String) }
694
+ def strong_color=(strong_color); end
691
695
 
692
696
  sig { returns(::String) }
693
697
  def true_color; end
694
698
 
695
- def true_color=(_arg0); end
699
+ sig { params(true_color: ::String).returns(::String) }
700
+ def true_color=(true_color); end
696
701
  end
697
702
 
698
703
  class Spoom::Coverage::D3::Pie < ::Spoom::Coverage::D3::Base
@@ -939,62 +944,74 @@ class Spoom::Coverage::Snapshot
939
944
  sig { returns(::Integer) }
940
945
  def calls_typed; end
941
946
 
942
- def calls_typed=(_arg0); end
947
+ sig { params(calls_typed: ::Integer).returns(::Integer) }
948
+ def calls_typed=(calls_typed); end
943
949
 
944
950
  sig { returns(::Integer) }
945
951
  def calls_untyped; end
946
952
 
947
- def calls_untyped=(_arg0); end
953
+ sig { params(calls_untyped: ::Integer).returns(::Integer) }
954
+ def calls_untyped=(calls_untyped); end
948
955
 
949
956
  sig { returns(::Integer) }
950
957
  def classes; end
951
958
 
952
- def classes=(_arg0); end
959
+ sig { params(classes: ::Integer).returns(::Integer) }
960
+ def classes=(classes); end
953
961
 
954
962
  sig { returns(T.nilable(::String)) }
955
963
  def commit_sha; end
956
964
 
957
- def commit_sha=(_arg0); end
965
+ sig { params(commit_sha: T.nilable(::String)).returns(T.nilable(::String)) }
966
+ def commit_sha=(commit_sha); end
958
967
 
959
968
  sig { returns(T.nilable(::Integer)) }
960
969
  def commit_timestamp; end
961
970
 
962
- def commit_timestamp=(_arg0); end
971
+ sig { params(commit_timestamp: T.nilable(::Integer)).returns(T.nilable(::Integer)) }
972
+ def commit_timestamp=(commit_timestamp); end
963
973
 
964
974
  sig { returns(::Integer) }
965
975
  def duration; end
966
976
 
967
- def duration=(_arg0); end
977
+ sig { params(duration: ::Integer).returns(::Integer) }
978
+ def duration=(duration); end
968
979
 
969
980
  sig { returns(::Integer) }
970
981
  def files; end
971
982
 
972
- def files=(_arg0); end
983
+ sig { params(files: ::Integer).returns(::Integer) }
984
+ def files=(files); end
973
985
 
974
986
  sig { returns(::Integer) }
975
987
  def methods_with_sig; end
976
988
 
977
- def methods_with_sig=(_arg0); end
989
+ sig { params(methods_with_sig: ::Integer).returns(::Integer) }
990
+ def methods_with_sig=(methods_with_sig); end
978
991
 
979
992
  sig { returns(::Integer) }
980
993
  def methods_with_sig_excluding_rbis; end
981
994
 
982
- def methods_with_sig_excluding_rbis=(_arg0); end
995
+ sig { params(methods_with_sig_excluding_rbis: ::Integer).returns(::Integer) }
996
+ def methods_with_sig_excluding_rbis=(methods_with_sig_excluding_rbis); end
983
997
 
984
998
  sig { returns(::Integer) }
985
999
  def methods_without_sig; end
986
1000
 
987
- def methods_without_sig=(_arg0); end
1001
+ sig { params(methods_without_sig: ::Integer).returns(::Integer) }
1002
+ def methods_without_sig=(methods_without_sig); end
988
1003
 
989
1004
  sig { returns(::Integer) }
990
1005
  def methods_without_sig_excluding_rbis; end
991
1006
 
992
- def methods_without_sig_excluding_rbis=(_arg0); end
1007
+ sig { params(methods_without_sig_excluding_rbis: ::Integer).returns(::Integer) }
1008
+ def methods_without_sig_excluding_rbis=(methods_without_sig_excluding_rbis); end
993
1009
 
994
1010
  sig { returns(::Integer) }
995
1011
  def modules; end
996
1012
 
997
- def modules=(_arg0); end
1013
+ sig { params(modules: ::Integer).returns(::Integer) }
1014
+ def modules=(modules); end
998
1015
 
999
1016
  sig { params(out: T.any(::IO, ::StringIO), colors: T::Boolean, indent_level: ::Integer).void }
1000
1017
  def print(out: T.unsafe(nil), colors: T.unsafe(nil), indent_level: T.unsafe(nil)); end
@@ -1002,27 +1019,32 @@ class Spoom::Coverage::Snapshot
1002
1019
  sig { returns(::Integer) }
1003
1020
  def rbi_files; end
1004
1021
 
1005
- def rbi_files=(_arg0); end
1022
+ sig { params(rbi_files: ::Integer).returns(::Integer) }
1023
+ def rbi_files=(rbi_files); end
1006
1024
 
1007
1025
  sig { returns(T::Hash[::String, ::Integer]) }
1008
1026
  def sigils; end
1009
1027
 
1010
- def sigils=(_arg0); end
1028
+ sig { params(sigils: T::Hash[::String, ::Integer]).returns(T::Hash[::String, ::Integer]) }
1029
+ def sigils=(sigils); end
1011
1030
 
1012
1031
  sig { returns(T::Hash[::String, ::Integer]) }
1013
1032
  def sigils_excluding_rbis; end
1014
1033
 
1015
- def sigils_excluding_rbis=(_arg0); end
1034
+ sig { params(sigils_excluding_rbis: T::Hash[::String, ::Integer]).returns(T::Hash[::String, ::Integer]) }
1035
+ def sigils_excluding_rbis=(sigils_excluding_rbis); end
1016
1036
 
1017
1037
  sig { returns(::Integer) }
1018
1038
  def singleton_classes; end
1019
1039
 
1020
- def singleton_classes=(_arg0); end
1040
+ sig { params(singleton_classes: ::Integer).returns(::Integer) }
1041
+ def singleton_classes=(singleton_classes); end
1021
1042
 
1022
1043
  sig { returns(::Integer) }
1023
1044
  def timestamp; end
1024
1045
 
1025
- def timestamp=(_arg0); end
1046
+ sig { params(timestamp: ::Integer).returns(::Integer) }
1047
+ def timestamp=(timestamp); end
1026
1048
 
1027
1049
  sig { returns(T::Hash[::String, T.untyped]) }
1028
1050
  def to_h; end
@@ -1033,12 +1055,14 @@ class Spoom::Coverage::Snapshot
1033
1055
  sig { returns(T.nilable(::String)) }
1034
1056
  def version_runtime; end
1035
1057
 
1036
- def version_runtime=(_arg0); end
1058
+ sig { params(version_runtime: T.nilable(::String)).returns(T.nilable(::String)) }
1059
+ def version_runtime=(version_runtime); end
1037
1060
 
1038
1061
  sig { returns(T.nilable(::String)) }
1039
1062
  def version_static; end
1040
1063
 
1041
- def version_static=(_arg0); end
1064
+ sig { params(version_static: T.nilable(::String)).returns(T.nilable(::String)) }
1065
+ def version_static=(version_static); end
1042
1066
 
1043
1067
  class << self
1044
1068
  sig { params(json: ::String).returns(::Spoom::Coverage::Snapshot) }
@@ -1577,7 +1601,8 @@ class Spoom::Deadcode::Remover::NodeContext
1577
1601
  sig { returns(T::Array[::Prism::Node]) }
1578
1602
  def nesting; end
1579
1603
 
1580
- def nesting=(_arg0); end
1604
+ sig { params(nesting: T::Array[::Prism::Node]).returns(T::Array[::Prism::Node]) }
1605
+ def nesting=(nesting); end
1581
1606
 
1582
1607
  sig { returns(T.nilable(::Prism::Node)) }
1583
1608
  def next_node; end
@@ -2322,7 +2347,8 @@ class Spoom::LSP::SymbolPrinter < ::Spoom::Printer
2322
2347
  sig { returns(T.nilable(::String)) }
2323
2348
  def prefix; end
2324
2349
 
2325
- def prefix=(_arg0); end
2350
+ sig { params(prefix: T.nilable(::String)).returns(T.nilable(::String)) }
2351
+ def prefix=(prefix); end
2326
2352
 
2327
2353
  sig { params(objects: T::Array[::Spoom::LSP::PrintableSymbol]).void }
2328
2354
  def print_list(objects); end
@@ -2482,7 +2508,8 @@ class Spoom::Model::Class < ::Spoom::Model::Namespace
2482
2508
  sig { returns(T.nilable(::String)) }
2483
2509
  def superclass_name; end
2484
2510
 
2485
- def superclass_name=(_arg0); end
2511
+ sig { params(superclass_name: T.nilable(::String)).returns(T.nilable(::String)) }
2512
+ def superclass_name=(superclass_name); end
2486
2513
  end
2487
2514
 
2488
2515
  class Spoom::Model::Comment
@@ -2879,7 +2906,8 @@ class Spoom::Printer
2879
2906
  sig { returns(T.any(::IO, ::StringIO)) }
2880
2907
  def out; end
2881
2908
 
2882
- def out=(_arg0); end
2909
+ sig { params(out: T.any(::IO, ::StringIO)).returns(T.any(::IO, ::StringIO)) }
2910
+ def out=(out); end
2883
2911
 
2884
2912
  sig { params(string: T.nilable(::String)).void }
2885
2913
  def print(string); end
@@ -2974,7 +3002,8 @@ class Spoom::Sorbet::Config
2974
3002
  sig { returns(T::Boolean) }
2975
3003
  def no_stdlib; end
2976
3004
 
2977
- def no_stdlib=(_arg0); end
3005
+ sig { params(no_stdlib: T::Boolean).returns(T::Boolean) }
3006
+ def no_stdlib=(no_stdlib); end
2978
3007
 
2979
3008
  sig { returns(::String) }
2980
3009
  def options_string; end
@@ -2982,7 +3011,9 @@ class Spoom::Sorbet::Config
2982
3011
  sig { returns(T::Array[::String]) }
2983
3012
  def paths; end
2984
3013
 
2985
- def paths=(_arg0); end
3014
+ sig { params(paths: T::Array[::String]).returns(T::Array[::String]) }
3015
+ def paths=(paths); end
3016
+
2986
3017
  def typed_overrides; end
2987
3018
  def typed_overrides=(_arg0); end
2988
3019
 
@@ -3216,6 +3247,9 @@ module Spoom::Sorbet::Sigils
3216
3247
  sig { params(path: T.any(::Pathname, ::String)).returns(T.nilable(::String)) }
3217
3248
  def file_strictness(path); end
3218
3249
 
3250
+ sig { params(content: ::String, strictness: ::String).returns(T::Boolean) }
3251
+ def satisfies_minimum_strictness?(content, strictness); end
3252
+
3219
3253
  sig { params(strictness: ::String).returns(::String) }
3220
3254
  def sigil_string(strictness); end
3221
3255
 
@@ -3322,6 +3356,9 @@ end
3322
3356
 
3323
3357
  module Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs
3324
3358
  class << self
3359
+ sig { params(ruby_contents: ::String).returns(T::Boolean) }
3360
+ def contains_rbs_syntax?(ruby_contents); end
3361
+
3325
3362
  sig do
3326
3363
  params(
3327
3364
  ruby_contents: ::String,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spoom
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.9
4
+ version: 1.8.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandre Terrasa