Sha256: 00175c5eae3cd8214c415996bf6018cc29f645390cff0cc1354ae32a8e29cb0e

Contents?: true

Size: 1.06 KB

Versions: 4

Compression:

Stored size: 1.06 KB

Contents

module Yoda
  module Model
    class NodeSignature
      # @return [::Parser::AST::Node]
      attr_reader :node

      # @return [Typing::Traces::Base]
      attr_reader :trace

      # @param node  [::Parser::AST::Node]
      # @param trace [Typing::Traces::Base]
      def initialize(node, trace)
        @node = node
        @trace = trace
      end

      # @return [Range]
      def node_range
        Parsing::Range.of_ast_location(node.location)
      end

      # @return [Array<Descriptions::Base>]
      def descriptions
        [top_description, *type_descriptions]
      end

      # @return [Descriptions::NodeDescription]
      def top_description
        Descriptions::NodeDescription.new(node, trace)
      end

      # @return [Array<Descriptions::Base>]
      def type_descriptions
        case trace
        when Typing::Traces::Send
          trace.functions.map { |function| Descriptions::FunctionDescription.new(function) }.take(1)
        else
          trace.values.map { |value| Descriptions::ValueDescription.new(value) }
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
yoda-language-server-0.7.2 lib/yoda/model/node_signature.rb
yoda-language-server-0.7.1 lib/yoda/model/node_signature.rb
yoda-language-server-0.7.0 lib/yoda/model/node_signature.rb
yoda-language-server-0.6.2 lib/yoda/model/node_signature.rb