Sha256: 8ce6ed2ff684b79063f2f505663043cac90e156cb4f38cc770954dfe444ba4cd

Contents?: true

Size: 798 Bytes

Versions: 1

Compression:

Stored size: 798 Bytes

Contents

module UNotifier
  class Settings
    DEFAULT_URGENCY = "external"

    def self.customizable?(config)
      %w(regular optional).include?(config["urgency"])
    end

    def self.filter_customizable(config)
      config.map do |key, subkeys|
        filtered = subkeys.select do |subkey, value|
          (value.has_key?("urgency") && customizable?(value)) ||
          (value.has_key?("target") && value["target"].values.any? { |subvalue| customizable?(subvalue) })
        end

        [key, filtered.keys]
      end.to_h.select { |_, subkeys| subkeys.any?  }
    end

    def self.keys_from(config)
      flatten_keys filter_customizable(config)
    end

    private

    def self.flatten_keys(keys)
      keys.map { |key, subkeys| subkeys.map { |s| "#{key}.#{s}" } }.flatten
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
unotifier-0.2.1 lib/settings.rb