Module: Solargraph::NodeMethods
Instance Method Summary collapse
- #const_from(node) ⇒ Object
- #infer(node) ⇒ Object
- #pack_name(node) ⇒ Object
-
#resolve_node_signature(node) ⇒ String
Get a call signature from a node.
- #stack_node_signature(node) ⇒ Object
- #unpack_name(node) ⇒ Object
- #yard_options ⇒ Object
Instance Method Details
#const_from(node) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/solargraph/node_methods.rb', line 25 def const_from node if node.kind_of?(AST::Node) and node.type == :const result = '' unless node.children[0].nil? result = const_from(node.children[0]) end if result == '' result = node.children[1].to_s else result = result + '::' + node.children[1].to_s end result else nil end end |
#infer(node) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/solargraph/node_methods.rb', line 42 def infer node if node.type == :str return 'String' elsif node.type == :array return 'Array' elsif node.type == :hash return 'Hash' elsif node.type == :int return 'Integer' elsif node.type == :float return 'Float' end nil end |
#pack_name(node) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/solargraph/node_methods.rb', line 7 def pack_name(node) parts = [] if node.kind_of?(AST::Node) node.children.each { |n| if n.kind_of?(AST::Node) if n.type == :cbase parts = pack_name(n) else parts += pack_name(n) end else parts.push n unless n.nil? end } end parts end |
#resolve_node_signature(node) ⇒ String
Get a call signature from a node. The result should be a string in the form of a method path, e.g., String.new or variable.method.
62 63 64 65 |
# File 'lib/solargraph/node_methods.rb', line 62 def resolve_node_signature node #stack_node_signature(node).join('.') drill_signature node, '' end |
#stack_node_signature(node) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/solargraph/node_methods.rb', line 67 def stack_node_signature node parts = [] if node.kind_of?(AST::Node) if node.type == :send unless node.children[0].nil? parts = [unpack_name(node.children[0])] + parts end parts += stack_node_signature(node.children[1]) else parts = [unpack_name(node)] + stack_node_signature(node.children[1]) end else parts.push node.to_s end parts end |
#unpack_name(node) ⇒ Object
3 4 5 |
# File 'lib/solargraph/node_methods.rb', line 3 def unpack_name(node) pack_name(node).join("::") end |
#yard_options ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/solargraph/node_methods.rb', line 84 def if @yard_options.nil? @yard_options = { include: [], exclude: [], flags: [] } unless workspace.nil? yardopts_file = File.join(workspace, '.yardopts') if File.exist?(yardopts_file) yardopts = File.read(yardopts_file) yardopts.lines.each { |line| arg = line.strip if arg.start_with?('-') @yard_options[:flags].push arg else @yard_options[:include].push arg end } end end @yard_options[:include].concat ['app/**/*.rb', 'lib/**/*.rb'] if @yard_options[:include].empty? end @yard_options end |