Sha256: 5e48d0d58203a0919e8f3c1990b12077231dfa64670542c8202b08b53fd91890

Contents?: true

Size: 1.67 KB

Versions: 10

Compression:

Stored size: 1.67 KB

Contents

# frozen_string_literal: true
require "pathname"

module ThemeCheck
  class ThemeFile
    attr_reader :version, :storage

    def initialize(relative_path, storage)
      @relative_path = relative_path
      @storage = storage
      @source = nil
      @version = nil
      @eol = "\n"
    end

    def path
      @storage.path(@relative_path)
    end

    def relative_path
      @relative_pathname ||= Pathname.new(@relative_path)
    end

    def name
      relative_path.sub_ext('').to_s
    end

    # For the corrector to work properly, we should have a
    # simple mental model of the internal representation of eol
    # characters (Windows uses \r\n, Linux uses \n).
    #
    # Parser::Source::Buffer strips the \r from the source file, so if
    # you are autocorrecting the file you might lose that info and
    # cause a git diff. It also makes the node.start_index/end_index
    # calculation break. That's not cool.
    #
    # So in here we track whether the source file has \r\n in it and
    # we'll make sure that the file we write has the same eol as the
    # source file.
    def source
      return @source if @source
      if @storage.versioned?
        @source, @version = @storage.read_version(@relative_path)
      else
        @source = @storage.read(@relative_path)
      end
      @eol = @source.include?("\r\n") ? "\r\n" : "\n"
      @source = @source
        .gsub(/\r(?!\n)/, "\r\n") # fix rogue \r without followup \n with \r\n
        .gsub("\r\n", "\n")
    end

    def json?
      false
    end

    def liquid?
      false
    end

    def ==(other)
      other.is_a?(self.class) && relative_path == other.relative_path
    end
    alias_method :eql?, :==
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
theme-check-1.15.0 lib/theme_check/theme_file.rb
theme-check-1.14.0 lib/theme_check/theme_file.rb
theme-check-1.13.0 lib/theme_check/theme_file.rb
theme-check-1.12.1 lib/theme_check/theme_file.rb
theme-check-1.12.0 lib/theme_check/theme_file.rb
theme-check-1.11.0 lib/theme_check/theme_file.rb
theme-check-1.10.3 lib/theme_check/theme_file.rb
theme-check-1.10.2 lib/theme_check/theme_file.rb
theme-check-1.10.1 lib/theme_check/theme_file.rb
theme-check-1.10.0 lib/theme_check/theme_file.rb