diff --git a/projects/nat-archive-tool/src/nat/ArchiveController.kiss b/projects/nat-archive-tool/src/nat/ArchiveController.kiss index f357a196..b6bd1d2c 100644 --- a/projects/nat-archive-tool/src/nat/ArchiveController.kiss +++ b/projects/nat-archive-tool/src/nat/ArchiveController.kiss @@ -211,4 +211,7 @@ files (VarText null)] (doFor e entries (addFiles archive e files)) - entries)) + entries) + + (defCommand SelectByName [name (Text null)] + (SelectEntries (nameSystem.getEntries name)) [])) diff --git a/projects/nat-archive-tool/src/nat/systems/NameSystem.kiss b/projects/nat-archive-tool/src/nat/systems/NameSystem.kiss index 05cde848..4e6c564e 100644 --- a/projects/nat-archive-tool/src/nat/systems/NameSystem.kiss +++ b/projects/nat-archive-tool/src/nat/systems/NameSystem.kiss @@ -2,16 +2,16 @@ (prop :Map> 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 [] (super ->[archive e] (hasComponent e Name) ->[archive e] (let [name (readComponent archive e Name)] - (if (entriesByName.exists name) - (.push (dictGet entriesByName name) e) - (dictSet entriesByName name [e])) + (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 getEntries [name] - (or (dictGet entriesByName name) [])) \ No newline at end of file + (or (dictGet entriesByName (name.toLowerCase)) [])) \ No newline at end of file