class Archetype
  include ActiveModel::Serialization

  attr_accessor :id, :options

  def initialize(id, options)
    @id = id
    @options = options
  end

  def attributes
    {'id' => @id,
     'options' => @options}
  end

  def self.default
    'regular'
  end

  def self.poll
    'poll'
  end

  def self.private_message
    'private_message'
  end

  def self.list
    return [] unless @archetypes.present?
    @archetypes.values
  end

  def self.register(name, options={})
    @archetypes ||= {}
    @archetypes[name] = Archetype.new(name, options)
  end


  # By default we have a regular archetype and a private message
  register 'regular'
  register 'private_message'

end