class Solargraph::Parser::Legacy::NodeChainer

A factory for generating chains from nodes.

Constants

Chain

Public Class Methods

chain(node, filename = nil, in_block = false) click to toggle source

@param node [Parser::AST::Node] @param filename [String] @return [Source::Chain]

# File lib/solargraph/parser/legacy/node_chainer.rb, line 30
def chain node, filename = nil, in_block = false
  NodeChainer.new(node, filename, in_block).chain
end
load_string(code) click to toggle source

@param code [String] @return [Source::Chain]

# File lib/solargraph/parser/legacy/node_chainer.rb, line 36
def load_string(code)
  node = Parser.parse(code.sub(/\.$/, ''))
  chain = NodeChainer.new(node).chain
  chain.links.push(Chain::Link.new) if code.end_with?('.')
  chain
end
new(node, filename = nil, in_block = false) click to toggle source

@param node [Parser::AST::Node] @param filename [String]

# File lib/solargraph/parser/legacy/node_chainer.rb, line 14
def initialize node, filename = nil, in_block = false
  @node = node
  @filename = filename
  @in_block = in_block ? 1 : 0
end

Public Instance Methods

chain() click to toggle source

@return [Source::Chain]

# File lib/solargraph/parser/legacy/node_chainer.rb, line 21
def chain
  links = generate_links(@node)
  Chain.new(links, @node, (Parser.is_ast_node?(@node) && @node.type == :splat))
end

Private Instance Methods

block_passed?(node) click to toggle source
# File lib/solargraph/parser/legacy/node_chainer.rb, line 125
def block_passed? node
  node.children.last.is_a?(::Parser::AST::Node) && node.children.last.type == :block_pass
end
hash_is_splatted?(node) click to toggle source
# File lib/solargraph/parser/legacy/node_chainer.rb, line 118
def hash_is_splatted? node
  return false unless Parser.is_ast_node?(node) && node.type == :hash
  return false unless Parser.is_ast_node?(node.children.last) && node.children.last.type == :kwsplat
  return false if Parser.is_ast_node?(node.children.last.children[0]) && node.children.last.children[0].type == :hash
  true
end