class FlagSettings attr_reader( :without_custom_types, :notify_types, :topic_flag_types, :auto_action_types, :custom_types ) def initialize @all_flag_types = Enum.new @topic_flag_types = Enum.new @notify_types = Enum.new @auto_action_types = Enum.new @custom_types = Enum.new @without_custom_types = Enum.new end def add(id, name, details = nil) details ||= {} @all_flag_types[name] = id @topic_flag_types[name] = id if !!details[:topic_type] @notify_types[name] = id if !!details[:notify_type] @auto_action_types[name] = id if !!details[:auto_action_type] if !!details[:custom_type] @custom_types[name] = id else @without_custom_types[name] = id end end def is_flag?(key) @all_flag_types.valid?(key) end def flag_types @all_flag_types end end