class UNotifier::Settings
Constants
- DEFAULT_URGENCY
Public Class Methods
customizable?(config)
click to toggle source
# File lib/settings.rb, line 5 def self.customizable?(config) ( config.key?("urgency") && %w(regular optional).include?(config["urgency"]) ) || ( config.key?("target") && config["target"].values.any? { |c| customizable?(c) } ) end
filter_system_customizable(config)
click to toggle source
# File lib/settings.rb, line 36 def self.filter_system_customizable(config) customizable = config.map do |key, subkeys| filtered = subkeys .select { |_, value| value.key?("system") } .map { |subkey, value| [subkey, value["system"]] } .select { |_, value| value["urgency"] == "regular" } .each_with_object({}) do |(subkey, value), out| out[subkey] = value["urgency"] end [key, filtered] end customizable.to_h.reject { |_, subkeys| subkeys.empty? } end
filter_user_customizable(config)
click to toggle source
# File lib/settings.rb, line 15 def self.filter_user_customizable(config) customizable = config.map do |key, subkeys| filtered = subkeys .select { |_, value| value.key?("user") } .map { |subkey, value| [subkey, value["user"]] } .select { |_, value| customizable?(value) } .each_with_object({}) do |(subkey, value), out| out[subkey] = value["urgency"] || value["target"] .select { |_, subvalue| customizable?(subvalue) } .map { |_, subvalue| subvalue["urgency"] } .first end [key, filtered] end customizable.to_h.reject { |_, subkeys| subkeys.empty? } end
flatten_keys(keys)
click to toggle source
# File lib/settings.rb, line 70 def self.flatten_keys(keys) keys.map do |key, subkeys| subkeys.map do |subkey, urgency| { "#{key}.#{subkey}" => urgency } end end.flatten.reduce({}, :merge) end
grouped_by_urgency_keys_from(config)
click to toggle source
# File lib/settings.rb, line 60 def self.grouped_by_urgency_keys_from(config) keys_from(config).each_with_object({}) do |(channel, keys), obj| obj[channel] = keys.each_with_object({}) do |(key, urgency), out| out[urgency] ||= [] out[urgency] << key end end end
keys_from(config)
click to toggle source
# File lib/settings.rb, line 53 def self.keys_from(config) { "user" => flatten_keys(filter_user_customizable(config)), "system" => flatten_keys(filter_system_customizable(config)), } end