Sha256: b3036bd01184bf25a5692565745aa3976ef0c743016a3a8a5ad9a11d2ed081d3

Contents?: true

Size: 946 Bytes

Versions: 31

Compression:

Stored size: 946 Bytes

Contents

# frozen_string_literal: true

require 'addressable'
require 'eac_config/node'
require 'eac_ruby_utils/core_ext'
require 'eac_ruby_utils/yaml'

module EacConfig
  class YamlFileNode
    require_sub __FILE__
    include ::EacConfig::Node

    class << self
      def from_uri(uri)
        return new(uri.to_addressable.path) if uri.to_addressable.scheme == 'file'
      end
    end

    common_constructor :path do
      self.path = path.to_pathname
    end

    def data
      @data ||= ::EacRubyUtils::Yaml.load_file(assert_path) || {}
    end

    def persist_data(new_data)
      path.parent.mkpath
      ::EacRubyUtils::Yaml.dump_file(path, new_data)
      @data = nil
    end

    def url
      ::Addressable::URI.parse("file://#{path.expand_path}")
    end

    private

    def assert_path
      unless path.file?
        raise("\"#{path}\" is a not a file") if path.exist?

        persist_data({})
      end
      path
    end
  end
end

Version data entries

31 entries across 31 versions & 3 rubygems

Version Path
eac_config-0.5.2 lib/eac_config/yaml_file_node.rb
ehbrs-tools-0.28.3 vendor/eac_config/lib/eac_config/yaml_file_node.rb
avm-tools-0.110.0 vendor/eac_config/lib/eac_config/yaml_file_node.rb
avm-tools-0.109.1 vendor/eac_config/lib/eac_config/yaml_file_node.rb
avm-tools-0.109.0 vendor/eac_config/lib/eac_config/yaml_file_node.rb
ehbrs-tools-0.28.2 vendor/eac_config/lib/eac_config/yaml_file_node.rb
avm-tools-0.108.0 vendor/eac_config/lib/eac_config/yaml_file_node.rb
ehbrs-tools-0.28.1 vendor/eac_config/lib/eac_config/yaml_file_node.rb
avm-tools-0.107.0 vendor/eac_config/lib/eac_config/yaml_file_node.rb
ehbrs-tools-0.28.0 vendor/eac_config/lib/eac_config/yaml_file_node.rb
avm-tools-0.106.0 vendor/eac_config/lib/eac_config/yaml_file_node.rb
ehbrs-tools-0.27.0 vendor/eac_config/lib/eac_config/yaml_file_node.rb
ehbrs-tools-0.26.0 vendor/eac_config/lib/eac_config/yaml_file_node.rb
avm-tools-0.105.0 vendor/eac_config/lib/eac_config/yaml_file_node.rb
ehbrs-tools-0.25.1 vendor/eac_config/lib/eac_config/yaml_file_node.rb
ehbrs-tools-0.25.0 vendor/eac_config/lib/eac_config/yaml_file_node.rb
ehbrs-tools-0.24.0 vendor/eac_config/lib/eac_config/yaml_file_node.rb
eac_config-0.5.1 lib/eac_config/yaml_file_node.rb
avm-tools-0.104.0 vendor/eac_config/lib/eac_config/yaml_file_node.rb
ehbrs-tools-0.23.1 vendor/eac_config/lib/eac_config/yaml_file_node.rb