class YARDSorbet::Handlers::SigHandler
A YARD Handler for Sorbet type declarations
Constants
- ATTR_NODE_TYPES
These node types attached to sigs represent attr_* declarations
Public Instance Methods
process()
click to toggle source
# File lib/yard-sorbet/handlers/sig_handler.rb, line 20 def process method_node = NodeUtils.get_method_node(NodeUtils.sibling_node(statement)) docstring, directives = Directives.extract_directives(statement.docstring) parse_sig(method_node, docstring) method_node.docstring = docstring.to_raw Directives.add_directives(method_node.docstring, directives) statement.docstring = nil end
Private Instance Methods
parse_params(method_node, node, docstring)
click to toggle source
# File lib/yard-sorbet/handlers/sig_handler.rb, line 52 def parse_params(method_node, node, docstring) return if ATTR_NODE_TYPES.include?(method_node.type) sibling = NodeUtils.sibling_node(node) sibling[0][0].each do |p| param_name = p[0][0] types = SigToYARD.convert(p.last) TagUtils.upsert_tag(docstring, 'param', types, param_name) end end
parse_return(node, docstring)
click to toggle source
# File lib/yard-sorbet/handlers/sig_handler.rb, line 64 def parse_return(node, docstring) type = node.source == 'void' ? ['void'] : SigToYARD.convert(NodeUtils.sibling_node(node)) TagUtils.upsert_tag(docstring, 'return', type) end
parse_sig(method_node, docstring)
click to toggle source
# File lib/yard-sorbet/handlers/sig_handler.rb, line 32 def parse_sig(method_node, docstring) NodeUtils.bfs_traverse(statement) do |n| case n.source when 'abstract' YARDSorbet::TagUtils.upsert_tag(docstring, 'abstract') when 'params' parse_params(method_node, n, docstring) when 'returns', 'void' parse_return(n, docstring) end end end