From 81c7fc3972855e31f838725683ebd604d5cb6dc7 Mon Sep 17 00:00:00 2001 From: Rodrigo Rodriguez Date: Sun, 20 Aug 2023 18:09:29 -0300 Subject: [PATCH] fix(basic.gbapp): FIND now return case insensitive BASIC objects. --- packages/basic.gblib/services/SystemKeywords.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/basic.gblib/services/SystemKeywords.ts b/packages/basic.gblib/services/SystemKeywords.ts index 6da21f91..22673285 100644 --- a/packages/basic.gblib/services/SystemKeywords.ts +++ b/packages/basic.gblib/services/SystemKeywords.ts @@ -1152,6 +1152,21 @@ export class SystemKeywords { } row['ordinal'] = rowCount; row['line'] = foundIndex + 1; + + const lowercase = (oldKey) => { + // Check that it's a string. + return typeof oldKey === 'string' ? oldKey.toLowerCase() : oldKey; + } + const propertiesMap = new Map( + Object.keys(row).map(propKey => [lowercase(propKey), row[propKey]]) + ); + const caseInsensitiveGetHandler = { + get: function(target, property, receiver) { + return propertiesMap.get(lowercase(property)); + } + }; + row = new Proxy(row, caseInsensitiveGetHandler); + table.push(row); } }