Sha256: 4a90918902d3583370dfc336203fd5a07b8d1090c0d95c5b2956f55457d9db74

Contents?: true

Size: 1.23 KB

Versions: 8

Compression:

Stored size: 1.23 KB

Contents

module Yoda
  module Evaluation
    class CommentCompletion
      class TagProvider < BaseProvider
        # @return [true, false]
        def available?
          current_comment_token_query.current_state == :tag
        end

        # @return [Array<Model::CompletionItem>]
        def candidates
          description_candidates.map { |description| Model::CompletionItem.new(description: description, range: substitution_range) }
        end

        private

        # @return [Array<Model::Descriptions::WordDescription>]
        def description_candidates
          return [] unless available?
          tagnames.select { |tagname| tagname.start_with?(index_word) }.map { |obj| Model::Descriptions::WordDescription.new(obj) }
        end

        # @return [Parsing::Range, nil]
        def substitution_range
          return nil unless available?
          current_comment_query.absolute_range(current_comment_token_query.current_range)
        end

        # @return [String]
        def index_word
          current_comment_token_query.current_word
        end

        # @return [Array<String>]
        def tagnames
          @tagnames ||= YARD::Tags::Library.labels.map { |tag_symbol, label| "@#{tag_symbol}" }
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
yoda-language-server-0.7.2 lib/yoda/evaluation/comment_completion/tag_provider.rb
yoda-language-server-0.7.1 lib/yoda/evaluation/comment_completion/tag_provider.rb
yoda-language-server-0.7.0 lib/yoda/evaluation/comment_completion/tag_provider.rb
yoda-language-server-0.6.2 lib/yoda/evaluation/comment_completion/tag_provider.rb
yoda-language-server-0.6.1 lib/yoda/evaluation/comment_completion/tag_provider.rb
yoda-language-server-0.6.0 lib/yoda/evaluation/comment_completion/tag_provider.rb
yoda-language-server-0.5.0 lib/yoda/evaluation/comment_completion/tag_provider.rb
yoda-language-server-0.4.0 lib/yoda/evaluation/comment_completion/tag_provider.rb