From d7a30e4d8a5b34e7ce6264f0eb81d43a44c9ab9b Mon Sep 17 00:00:00 2001 From: Trae Yelovich Date: Fri, 20 Sep 2024 18:33:18 -0400 Subject: [PATCH] refactor: Move matches & extensions into map Signed-off-by: Trae Yelovich --- .../src/fs/types/datasets.ts | 16 +++++- .../src/trees/dataset/DatasetUtils.ts | 52 +++++++------------ 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/packages/zowe-explorer-api/src/fs/types/datasets.ts b/packages/zowe-explorer-api/src/fs/types/datasets.ts index fb87617dc..d6af73992 100644 --- a/packages/zowe-explorer-api/src/fs/types/datasets.ts +++ b/packages/zowe-explorer-api/src/fs/types/datasets.ts @@ -17,6 +17,20 @@ interface DsEntryProps { stats: Types.DatasetStats; } +export const DS_EXTENSION_MAP: Map = new Map([ + [".c", ["C"]], + [".jcl", ["JCL", "JCLLIB", "CNTL", "PROC", "PROCLIB"]], + [".cbl", ["COBOL", "CBL", "COB", "SCBL"]], + [".cpy", ["COPYBOOK", "COPY", "CPY", "COBCOPY"]], + [".inc", ["INC", "INCLUDE", "PLINC"]], + [".pli", ["PLI", "PL1", "PLX", "PCX"]], + [".sh", ["SH", "SHELL"]], + [".rexx", ["REXX", "REXEC", "EXEC"]], + [".xml", ["XML"]], + [".asm", ["ASM", "ASSEMBL"]], + [".log", ["LOG", "SPFLOG"]], +]); + export class DsEntry extends FileEntry implements DsEntryProps { public metadata: DsEntryMetadata; @@ -51,7 +65,7 @@ export class DsEntryMetadata implements EntryMetadata { * @returns the data set's file system path without the extension */ public extensionRemovedFromPath(): string { - for (const ext of [".c", ".jcl", ".cbl", ".cpy", ".inc", ".pli", ".sh", ".rexx", ".xml", ".asm", ".log"]) { + for (const ext of DS_EXTENSION_MAP.keys()) { if (this.path.endsWith(ext)) { return this.path.replace(ext, ""); } diff --git a/packages/zowe-explorer/src/trees/dataset/DatasetUtils.ts b/packages/zowe-explorer/src/trees/dataset/DatasetUtils.ts index 792681e9a..ed97ad2f8 100644 --- a/packages/zowe-explorer/src/trees/dataset/DatasetUtils.ts +++ b/packages/zowe-explorer/src/trees/dataset/DatasetUtils.ts @@ -10,7 +10,7 @@ */ import * as vscode from "vscode"; -import { Types } from "@zowe/zowe-explorer-api"; +import { DS_EXTENSION_MAP, Types } from "@zowe/zowe-explorer-api"; import { Constants } from "../../configuration/Constants"; import { ZoweLogger } from "../../tools/ZoweLogger"; @@ -74,38 +74,24 @@ export class DatasetUtils { const bracket = label.indexOf("("); const split = bracket > -1 ? label.substring(0, bracket).split(".", limit) : label.split(".", limit); for (let i = split.length - 1; i > 0; i--) { - if (split[i] === "C") { - return ".c"; - } - if (["JCL", "JCLLIB", "CNTL", "PROC", "PROCLIB"].includes(split[i])) { - return ".jcl"; - } - if (["COBOL", "CBL", "COB", "SCBL"].includes(split[i])) { - return ".cbl"; - } - if (["COPYBOOK", "COPY", "CPY", "COBCOPY"].includes(split[i])) { - return ".cpy"; - } - if (["INC", "INCLUDE", "PLINC"].includes(split[i])) { - return ".inc"; - } - if (["PLI", "PL1", "PLX", "PCX"].includes(split[i])) { - return ".pli"; - } - if (["SH", "SHELL"].includes(split[i])) { - return ".sh"; - } - if (["REXX", "REXEC", "EXEC"].includes(split[i])) { - return ".rexx"; - } - if (split[i] === "XML") { - return ".xml"; - } - if (split[i] === "ASM" || split[i].indexOf("ASSEMBL") > -1) { - return ".asm"; - } - if (split[i] === "LOG" || split[i].indexOf("SPFLOG") > -1) { - return ".log"; + for (const [ext, matches] of DS_EXTENSION_MAP.entries()) { + switch (ext) { + case ".asm": + if (split[i] === matches[0] || split[i].indexOf("ASSEMBL") > -1) { + return ext; + } + break; + case ".log": + if (split[i] === matches[0] || split[i].indexOf("SPFLOG") > -1) { + return ext; + } + break; + default: + if (matches.includes(split[i])) { + return ext; + } + break; + } } } return null;