From c6fcb79ac91843093ef2f3a79234ba3eab4f3f25 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Tue, 7 Sep 2021 12:51:32 -0600 Subject: [PATCH] NAT case-insensitive selectByName --- src/nat/ArchiveController.kiss | 5 ++++- src/nat/systems/NameSystem.kiss | 10 +++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/nat/ArchiveController.kiss b/src/nat/ArchiveController.kiss index f357a19..b6bd1d2 100644 --- a/src/nat/ArchiveController.kiss +++ b/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/src/nat/systems/NameSystem.kiss b/src/nat/systems/NameSystem.kiss index 05cde84..4e6c564 100644 --- a/src/nat/systems/NameSystem.kiss +++ b/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