Class: DiscordRDA::EntityFactory
- Inherits:
-
Object
- Object
- DiscordRDA::EntityFactory
- Defined in:
- lib/discord_rda/entity/factory.rb
Overview
Factory for creating Discord entities from API data. Supports registration of custom entity types.
Constant Summary collapse
- DEFAULT_ENTITIES =
Default entity mappings
{ user: 'DiscordRDA::User', guild: 'DiscordRDA::Guild', channel: 'DiscordRDA::Channel', message: 'DiscordRDA::Message', role: 'DiscordRDA::Role', member: 'DiscordRDA::Member', emoji: 'DiscordRDA::Emoji', attachment: 'DiscordRDA::Attachment', embed: 'DiscordRDA::Embed', webhook: 'DiscordRDA::Webhook' }.freeze
Class Method Summary collapse
-
.create(type, data) ⇒ Entity
Create an entity from data.
-
.create_many(type, data_array) ⇒ Array<Entity>
Create multiple entities from array data.
-
.register(type, klass) ⇒ void
Register an entity type.
-
.registered?(type) ⇒ Boolean
Check if an entity type is registered.
-
.registered_types ⇒ Array<Symbol>
Get all registered types.
-
.reset! ⇒ void
Reset to default registrations.
-
.unregister(type) ⇒ void
Unregister an entity type.
Class Method Details
.create(type, data) ⇒ Entity
Create an entity from data
45 46 47 48 49 50 |
# File 'lib/discord_rda/entity/factory.rb', line 45 def create(type, data) klass = registry[type.to_sym] raise ArgumentError, "Unknown entity type: #{type}" unless klass klass.new(data) end |
.create_many(type, data_array) ⇒ Array<Entity>
Create multiple entities from array data
56 57 58 59 60 |
# File 'lib/discord_rda/entity/factory.rb', line 56 def create_many(type, data_array) return [] unless data_array.is_a?(Array) data_array.map { |data| create(type, data) } end |
.register(type, klass) ⇒ void
This method returns an undefined value.
Register an entity type
37 38 39 |
# File 'lib/discord_rda/entity/factory.rb', line 37 def register(type, klass) registry[type.to_sym] = klass end |
.registered?(type) ⇒ Boolean
Check if an entity type is registered
65 66 67 |
# File 'lib/discord_rda/entity/factory.rb', line 65 def registered?(type) registry.key?(type.to_sym) end |
.registered_types ⇒ Array<Symbol>
Get all registered types
71 72 73 |
# File 'lib/discord_rda/entity/factory.rb', line 71 def registered_types registry.keys end |
.reset! ⇒ void
This method returns an undefined value.
Reset to default registrations
84 85 86 |
# File 'lib/discord_rda/entity/factory.rb', line 84 def reset! @registry = nil end |
.unregister(type) ⇒ void
This method returns an undefined value.
Unregister an entity type
78 79 80 |
# File 'lib/discord_rda/entity/factory.rb', line 78 def unregister(type) registry.delete(type.to_sym) end |