mirror of
https://github.com/cyberarm/i-mic-fps.git
synced 2025-12-15 15:42:35 +00:00
41 lines
786 B
Ruby
41 lines
786 B
Ruby
class IMICFPS
|
|
class Component
|
|
COMPONENTS = {}
|
|
|
|
def self.get(name)
|
|
COMPONENTS.dig(name)
|
|
end
|
|
|
|
def self.inherited(subclass)
|
|
COMPONENTS["__pending"] ||= []
|
|
COMPONENTS["__pending"] << subclass
|
|
end
|
|
|
|
def self.initiate
|
|
return unless COMPONENTS.dig("__pending") # Already setup
|
|
|
|
COMPONENTS["__pending"].each do |klass|
|
|
component = klass.new
|
|
COMPONENTS[component.name] = component
|
|
end
|
|
|
|
COMPONENTS.delete("__pending")
|
|
end
|
|
|
|
def initialize
|
|
setup
|
|
end
|
|
|
|
def name
|
|
string = self.class.name.split("::").last
|
|
split = string.scan(/[A-Z][a-z]*/)
|
|
|
|
component_name = "#{split.map { |s| s.downcase }.join("_")}".to_sym
|
|
|
|
return component_name
|
|
end
|
|
|
|
def setup
|
|
end
|
|
end
|
|
end |