Sha256: f82a34f4e22f78871310ab2f4592e673a8492f773b6670ae58b15d162c1ae937

Contents?: true

Size: 1.06 KB

Versions: 1

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

module ThemeCheck
  module LanguageServer
    class DocumentLinkEngine
      include PositionHelper
      include RegexHelpers

      def initialize(storage)
        @storage = storage
      end

      def document_links(uri)
        buffer = @storage.read(uri)
        matches(buffer, PARTIAL_RENDER).map do |match|
          start_line, start_character = from_index_to_line_column(
            buffer,
            match.begin(:partial),
          )

          end_line, end_character = from_index_to_line_column(
            buffer,
            match.end(:partial)
          )

          {
            target: link(match[:partial]),
            range: {
              start: {
                line: start_line,
                character: start_character,
              },
              end: {
                line: end_line,
                character: end_character,
              },
            },
          }
        end
      end

      def link(partial)
        'file://' + @storage.path('snippets/' + partial + '.liquid')
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
theme-check-0.6.0 lib/theme_check/language_server/document_link_engine.rb