Sha256: 85c9d20b5a21cb85f1374842bf4f956c296c09067d7fa37a252b2f9ab2c379a8

Contents?: true

Size: 1.52 KB

Versions: 7

Compression:

Stored size: 1.52 KB

Contents

# frozen_string_literal: true

module PlatformosCheck
  class LiquidFile < AppFile
    def write
      content = rewriter.to_s
      return unless source != content

      @storage.write(@relative_path, content.gsub("\n", @eol))
      @source = content
      @rewriter = nil
    end

    def liquid?
      true
    end

    def notification?
      false
    end

    def migration?
      false
    end

    def page?
      false
    end

    def form?
      false
    end

    def partial?
      false
    end

    def layout?
      false
    end

    def rewriter
      @rewriter ||= AppFileRewriter.new(@relative_path, source)
    end

    def source_excerpt(line)
      original_lines = source.split("\n")
      original_lines[bounded(0, line - 1, original_lines.size - 1)].strip
    rescue StandardError => e
      PlatformosCheck.bug(<<~EOS)
        Exception while running `source_excerpt(#{line})`:
        ```
        #{e.class}: #{e.message}
          #{e.backtrace.join("\n  ")}
        ```

        path: #{path}

        source:
        ```
        #{source}
        ```
      EOS
    end

    def parse
      @ast ||= self.class.parse(source)
    end

    def warnings
      parse&.warnings
    end

    def root
      parse.root
    end

    def self.parse(source)
      Tags.register_tags!
      Liquid::Template.parse(
        source,
        line_numbers: true,
        error_mode: :warn,
        disable_liquid_c_nodes: true
      )
    end

    private

    def bounded(lower, x, upper)
      [lower, [x, upper].min].max
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
platformos-check-0.4.14 lib/platformos_check/liquid_file.rb
platformos-check-0.4.13 lib/platformos_check/liquid_file.rb
platformos-check-0.4.12 lib/platformos_check/liquid_file.rb
platformos-check-0.4.11 lib/platformos_check/liquid_file.rb
platformos-check-0.4.10 lib/platformos_check/liquid_file.rb
platformos-check-0.4.9 lib/platformos_check/liquid_file.rb
platformos-check-0.4.8 lib/platformos_check/liquid_file.rb