NAT case-insensitive selectByName
This commit is contained in:
@@ -211,4 +211,7 @@
|
|||||||
files (VarText null)]
|
files (VarText null)]
|
||||||
(doFor e entries
|
(doFor e entries
|
||||||
(addFiles archive e files))
|
(addFiles archive e files))
|
||||||
entries))
|
entries)
|
||||||
|
|
||||||
|
(defCommand SelectByName [name (Text null)]
|
||||||
|
(SelectEntries (nameSystem.getEntries name)) []))
|
||||||
|
@@ -2,16 +2,16 @@
|
|||||||
|
|
||||||
(prop :Map<String,Array<Entry>> entriesByName (new Map))
|
(prop :Map<String,Array<Entry>> entriesByName (new Map))
|
||||||
|
|
||||||
// Stores a map of named entries, for instant lookup by name
|
// Stores a case-insensitive map of named entries, for instant lookup by name
|
||||||
(defNew []
|
(defNew []
|
||||||
(super
|
(super
|
||||||
->[archive e] (hasComponent e Name)
|
->[archive e] (hasComponent e Name)
|
||||||
->[archive e] (let [name (readComponent archive e Name)]
|
->[archive e] (let [name (readComponent archive e Name)]
|
||||||
(if (entriesByName.exists name)
|
(if (entriesByName.exists (name.toLowerCase))
|
||||||
(.push (dictGet entriesByName name) e)
|
(.push (dictGet entriesByName (name.toLowerCase)) e)
|
||||||
(dictSet entriesByName name [e]))
|
(dictSet entriesByName (name.toLowerCase) [e]))
|
||||||
// Because the if statement doesn't unify by type :(
|
// Because the if statement doesn't unify by type :(
|
||||||
null)))
|
null)))
|
||||||
|
|
||||||
(method :Array<Entry> getEntries [name]
|
(method :Array<Entry> getEntries [name]
|
||||||
(or (dictGet entriesByName name) []))
|
(or (dictGet entriesByName (name.toLowerCase)) []))
|
Reference in New Issue
Block a user