Sha256: 8f9f85c2d5ca124b82f360e97cebae8c35e30c689c2525bdb6b9cd0112dd7651

Contents?: true

Size: 1.13 KB

Versions: 24

Compression:

Stored size: 1.13 KB

Contents

# frozen_string_literal: true

require 'eac_config/entry_path'
require 'eac_ruby_utils/core_ext'

module EacConfig
  class Entry
    enable_simple_cache
    common_constructor :root_node, :path do
      self.path = ::EacConfig::EntryPath.assert(path)
    end

    def found?
      node_entry.if_present(false, &:found?)
    end

    def found_node
      node_entry.if_present(&:node)
    end

    def secret_value
      node_entry.if_present(&:secret_value)
    end

    def to_s
      "#{self.class}[RootNode: #{root_node}, Path: #{path}]"
    end

    def value
      node_entry.if_present(&:value)
    end

    def value=(a_value)
      write_node.self_entry(path).value = a_value
    end

    def write_node
      root_node.write_node || root_node
    end

    private

    def node_entry_uncached
      node_entry_from_root || node_entry_from_load_path
    end

    def node_entry_from_load_path_uncached
      root_node.recursive_loaded_nodes.lazy.map { |loaded_node| loaded_node.self_entry(path) }
        .find(&:found?)
    end

    def node_entry_from_root_uncached
      e = root_node.self_entry(path)
      e.found? ? e : nil
    end
  end
end

Version data entries

24 entries across 24 versions & 2 rubygems

Version Path
eac_tools-0.41.0 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.40.0 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.39.0 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.38.0 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.37.2 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.37.1 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.37.0 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.36.1 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.36.0 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.35.0 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.34.0 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.33.0 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.32.0 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.31.1 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.31.0 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.30.0 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.29.0 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.28.0 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.27.2 sub/eac_config/lib/eac_config/entry.rb
eac_tools-0.27.1 sub/eac_config/lib/eac_config/entry.rb