Sha256: 7d38c9572a36e1d8545ecb5f3cc5afc5f7968c6ce08cb06e03cd5710e50f45b7

Contents?: true

Size: 1.06 KB

Versions: 20

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

require "yaml"

module PlatformosCheck
  class YamlFile < AppFile
    def initialize(relative_path, storage)
      super
      @loaded = false
      @content = nil
      @parser_error = nil
    end

    def content
      load!
      @content
    end

    def parse_error
      load!
      @parser_error
    end

    def update_contents(new_content = {})
      raise ArgumentError if new_content.is_a?(String)

      @content = new_content
    end

    def write
      pretty = YAML.dump(@content)
      return unless source.rstrip != pretty.rstrip

      # Most editors add a trailing \n at the end of files. Here we
      # try to maintain the convention.
      eof = source.end_with?("\n") ? "\n" : ""
      @storage.write(@relative_path, pretty.gsub("\n", @eol) + eof)
      @source = pretty
    end

    def yaml?
      true
    end

    private

    def load!
      return if @loaded

      @content = YAML.load(source, aliases: true) || {}
    rescue Psych::SyntaxError => e
      @parser_error = e
    ensure
      @loaded = true
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
platformos-check-0.4.9 lib/platformos_check/yaml_file.rb
platformos-check-0.4.8 lib/platformos_check/yaml_file.rb
platformos-check-0.4.7 lib/platformos_check/yaml_file.rb
platformos-check-0.4.6 lib/platformos_check/yaml_file.rb
platformos-check-0.4.5 lib/platformos_check/yaml_file.rb
platformos-check-0.4.4 lib/platformos_check/yaml_file.rb
platformos-check-0.4.3 lib/platformos_check/yaml_file.rb
platformos-check-0.4.2 lib/platformos_check/yaml_file.rb
platformos-check-0.4.1 lib/platformos_check/yaml_file.rb
platformos-check-0.4.0 lib/platformos_check/yaml_file.rb
platformos-check-0.3.3 lib/platformos_check/yaml_file.rb
platformos-check-0.3.1 lib/platformos_check/yaml_file.rb
platformos-check-0.3.0 lib/platformos_check/yaml_file.rb
platformos-check-0.2.2 lib/platformos_check/yaml_file.rb
platformos-check-0.2.1 lib/platformos_check/yaml_file.rb
platformos-check-0.2.0 lib/platformos_check/yaml_file.rb
platformos-check-0.1.0 lib/platformos_check/yaml_file.rb
platformos-check-0.0.3 lib/platformos_check/yaml_file.rb
platformos-check-0.0.2 lib/platformos_check/yaml_file.rb
platformos-check-0.0.1 lib/platformos_check/yaml_file.rb