20 lines
806 B
Plaintext
20 lines
806 B
Plaintext
(load "../Lib.kiss")
|
|
|
|
(prop :Map<String,Array<Entry>> entriesByName (new Map))
|
|
|
|
// Stores a case-insensitive map of named entries, for instant lookup by name
|
|
(defNew []
|
|
(super
|
|
->[archive e] (hasComponent e Name)
|
|
->[archive e] (let [name (readComponent archive e Name)]
|
|
(if (entriesByName.exists (name.toLowerCase))
|
|
(.push (dictGet entriesByName (name.toLowerCase)) e)
|
|
(dictSet entriesByName (name.toLowerCase) [e]))
|
|
// Because the if statement doesn't unify by type :(
|
|
null)))
|
|
|
|
(method :Array<Entry> getEntries [name]
|
|
(let [entries (dictGet entriesByName (name.toLowerCase))]
|
|
(if entries
|
|
entries
|
|
[]))) |