# frozen_string_literal: true 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.private_message "private_message" end def self.banner "banner" end def self.list return [] if @archetypes.blank? @archetypes.values end def self.register(name, options = {}) @archetypes ||= {} @archetypes[name] = Archetype.new(name, options) end def self.deregister(name) @archetypes ||= {} @archetypes.delete(name) end # default archetypes register "regular" register "private_message" register "banner" end