Sha256: ef4053b3c2422bf8cf37b455a52b949e352fbda6a047f4326552b6ba1f0a44b9

Contents?: true

Size: 1.19 KB

Versions: 7

Compression:

Stored size: 1.19 KB

Contents

module Yoda
  module Commands
    class Infer < Base
      attr_reader :filename_with_position

      # @param filename_with_position [String] position representation with the format `path/to/file:line_num:character_num`
      def initialize(filename_with_position)
        @filename_with_position = filename_with_position
      end

      def run
        project.build_cache
        puts create_signature_help(worker.current_node_signature)
      end

      private

      # @param signature [Model::NodeSignature, nil]
      # @return [String, nil]
      def create_signature_help(signature)
        return nil unless signature
        signature.descriptions.map(&:title).join("\n")
      end

      def worker
        @worker ||= Evaluation::CurrentNodeExplain.new(project.registry, File.read(filename), position)
      end

      def project
        @project ||= Store::Project.new(Dir.pwd)
      end

      def filename
        @filename ||= filename_with_position.split(':').first
      end

      def position
        @position ||= begin
          row, column = filename_with_position.split(':').slice(1..2)
          Parsing::Location.new(row: row.to_i, column: column.to_i)
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
yoda-language-server-0.7.2 lib/yoda/commands/infer.rb
yoda-language-server-0.7.1 lib/yoda/commands/infer.rb
yoda-language-server-0.7.0 lib/yoda/commands/infer.rb
yoda-language-server-0.6.2 lib/yoda/commands/infer.rb
yoda-language-server-0.6.1 lib/yoda/commands/infer.rb
yoda-language-server-0.6.0 lib/yoda/commands/infer.rb
yoda-language-server-0.5.0 lib/yoda/commands/infer.rb