44 lines
693 B
Ruby
44 lines
693 B
Ruby
|
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
|