Sha256: b435977d81306a471f936db8773ccec40f96ec42746ef60144228d8c9de1c18e

Contents?: true

Size: 1.28 KB

Versions: 5

Compression:

Stored size: 1.28 KB

Contents

require 'nugrant/bag'
require 'nugrant/helper/bag'

module Nugrant
  class Parameters
    attr_reader :__defaults, :__system, :__user, :__project, :__all

    def initialize(config = nil, defaults = nil)
      @__config = config || Config.new()

      @__defaults = defaults || Bag.new()
      @__system = Helper::Bag.read(@__config.system_params_path, @__config.params_filetype)
      @__user = Helper::Bag.read(@__config.user_params_path, @__config.params_filetype)
      @__project = Helper::Bag.read(@__config.project_params_path, @__config.params_filetype)

      __compute_all()
    end

    def [](key)
      return @__all[key]
    end

    def method_missing(method, *args, &block)
      return @__all[method]
    end

    def empty?()
      @__all.empty?()
    end

    def has?(key)
      return @__all.has?(key)
    end

    def each(&block)
      @__all.each(&block)
    end

    def defaults=(elements)
      @__defaults = Bag.new(elements)

      # When defaults change, we need to recompute parameters hierarchy
      __compute_all()
    end

    def __compute_all()
      @__all = Bag.new()
      @__all.__merge!(@__defaults)
      @__all.__merge!(@__system)
      @__all.__merge!(@__user)
      @__all.__merge!(@__project)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
nugrant-1.4.2 lib/nugrant/parameters.rb
nugrant-1.4.1 lib/nugrant/parameters.rb
nugrant-1.4.0 lib/nugrant/parameters.rb
nugrant-1.3.0 lib/nugrant/parameters.rb
nugrant-1.2.0 lib/nugrant/parameters.rb