Sha256: 0e246b068c263a53ba914186d3a06e8a90e22af5f6703c911c5bd0face3effc5

Contents?: true

Size: 1.03 KB

Versions: 1

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

module ThemeCheck
  module LanguageServer
    class AssignmentsCompletionProvider < CompletionProvider
      def completions(context)
        content = context.buffer_until_previous_row

        return [] if content.nil?
        return [] unless (variable_lookup = VariableLookupFinder.lookup(context))
        return [] unless variable_lookup.lookups.empty?
        return [] if context.content[context.cursor - 1] == "."

        finder = VariableLookupFinder::AssignmentsFinder.new(content)
        finder.find!

        finder.assignments.map do |label, potential_lookup|
          object, _property = VariableLookupTraverser.lookup_object_and_property(potential_lookup)
          object_to_completion(label, object.name)
        end
      end

      private

      def object_to_completion(label, object)
        content = ShopifyLiquid::Documentation.object_doc(object)

        {
          label: label,
          kind: CompletionItemKinds::VARIABLE,
          **doc_hash(content),
        }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
theme-check-1.12.0 lib/theme_check/language_server/completion_providers/assignments_completion_provider.rb