docscribe 1.4.1 → 1.4.2

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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +149 -0
  3. data/lib/docscribe/cli/config_builder.rb +125 -35
  4. data/lib/docscribe/cli/generate.rb +288 -117
  5. data/lib/docscribe/cli/init.rb +49 -13
  6. data/lib/docscribe/cli/options.rb +302 -127
  7. data/lib/docscribe/cli/run.rb +391 -135
  8. data/lib/docscribe/cli.rb +23 -5
  9. data/lib/docscribe/config/defaults.rb +11 -11
  10. data/lib/docscribe/config/emit.rb +1 -0
  11. data/lib/docscribe/config/filtering.rb +24 -11
  12. data/lib/docscribe/config/loader.rb +7 -4
  13. data/lib/docscribe/config/plugin.rb +1 -0
  14. data/lib/docscribe/config/rbs.rb +31 -22
  15. data/lib/docscribe/config/sorbet.rb +41 -15
  16. data/lib/docscribe/config/sorting.rb +1 -0
  17. data/lib/docscribe/config/template.rb +1 -0
  18. data/lib/docscribe/config/utils.rb +1 -0
  19. data/lib/docscribe/config.rb +1 -0
  20. data/lib/docscribe/infer/constants.rb +15 -0
  21. data/lib/docscribe/infer/literals.rb +43 -25
  22. data/lib/docscribe/infer/names.rb +24 -15
  23. data/lib/docscribe/infer/params.rb +52 -6
  24. data/lib/docscribe/infer/raises.rb +24 -14
  25. data/lib/docscribe/infer/returns.rb +365 -182
  26. data/lib/docscribe/infer.rb +10 -9
  27. data/lib/docscribe/inline_rewriter/collector.rb +766 -375
  28. data/lib/docscribe/inline_rewriter/doc_block.rb +217 -74
  29. data/lib/docscribe/inline_rewriter/doc_builder.rb +1488 -602
  30. data/lib/docscribe/inline_rewriter/source_helpers.rb +100 -52
  31. data/lib/docscribe/inline_rewriter/tag_sorter.rb +109 -48
  32. data/lib/docscribe/inline_rewriter.rb +1009 -595
  33. data/lib/docscribe/plugin/base/collector_plugin.rb +2 -3
  34. data/lib/docscribe/plugin/base/tag_plugin.rb +1 -1
  35. data/lib/docscribe/plugin/registry.rb +34 -7
  36. data/lib/docscribe/plugin.rb +48 -17
  37. data/lib/docscribe/types/rbs/collection_loader.rb +0 -1
  38. data/lib/docscribe/types/rbs/provider.rb +75 -26
  39. data/lib/docscribe/types/rbs/type_formatter.rb +127 -59
  40. data/lib/docscribe/types/sorbet/base_provider.rb +31 -12
  41. data/lib/docscribe/version.rb +1 -1
  42. metadata +2 -2
@@ -20,24 +20,14 @@ module Docscribe
20
20
  # @param [Parser::AST::Node] node method or expression node to inspect
21
21
  # @return [Array<String>]
22
22
  def infer_raises_from_node(node)
23
- raises = []
23
+ raises = [] #: Array[String]
24
24
 
25
25
  ASTWalk.walk(node) do |n|
26
26
  case n.type
27
27
  when :resbody
28
- exc_list = n.children[0]
29
- raises.concat(exception_names_from_rescue_list(exc_list))
30
-
28
+ raises.concat(exception_names_from_rescue_list(n.children[0]))
31
29
  when :send
32
- recv, meth, *args = *n
33
- next unless recv.nil? && %i[raise fail].include?(meth)
34
-
35
- if args.empty?
36
- raises << DEFAULT_ERROR
37
- else
38
- c = Names.const_full_name(args[0])
39
- raises << (c || DEFAULT_ERROR)
40
- end
30
+ collect_send_raise(raises, n)
41
31
  end
42
32
  end
43
33
 
@@ -51,7 +41,8 @@ module Docscribe
51
41
  # - `Foo` => `["Foo"]`
52
42
  # - `[Foo, Bar]` => `["Foo", "Bar"]`
53
43
  #
54
- # @note module_function: when included, also defines #exception_names_from_rescue_list (instance visibility: private)
44
+ # @note module_function: when included, also defines
45
+ # #exception_names_from_rescue_list (instance visibility: private)
55
46
  # @param [Parser::AST::Node, nil] exc_list rescue exception list node
56
47
  # @return [Array<String>]
57
48
  def exception_names_from_rescue_list(exc_list)
@@ -63,6 +54,25 @@ module Docscribe
63
54
  [Names.const_full_name(exc_list) || DEFAULT_ERROR]
64
55
  end
65
56
  end
57
+
58
+ # Collect exception names from a `raise` or `fail` send node.
59
+ #
60
+ # @note module_function: when included, also defines # (instance visibility: private)
61
+ # @private
62
+ # @param [Array<String>] raises accumulator
63
+ # @param [Parser::AST::Node] node send node
64
+ # @return [void]
65
+ def collect_send_raise(raises, node)
66
+ recv, meth, *args = *node
67
+ return unless recv.nil? && %i[raise fail].include?(meth)
68
+
69
+ if args.empty?
70
+ raises << DEFAULT_ERROR
71
+ else
72
+ c = Names.const_full_name(args[0])
73
+ raises << (c || DEFAULT_ERROR)
74
+ end
75
+ end
66
76
  end
67
77
  end
68
78
  end