From afcb5056338a5a27f22318596d1a50e87f6b57b2 Mon Sep 17 00:00:00 2001 From: SebastianMC <23032356+SebastianMC@users.noreply.github.com> Date: Mon, 6 Feb 2023 23:59:14 +0100 Subject: [PATCH] #50 - regexp and by-name matching support for target-folder - code readability (implicit structure turned into explicit interface) --- src/custom-sort/sorting-spec-processor.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/custom-sort/sorting-spec-processor.ts b/src/custom-sort/sorting-spec-processor.ts index 591a397..00f1aa6 100644 --- a/src/custom-sort/sorting-spec-processor.ts +++ b/src/custom-sort/sorting-spec-processor.ts @@ -22,6 +22,7 @@ import { RomanNumberRegexStr } from "./matchers"; import { + FolderMatchingRegexp, FolderWildcardMatching, MATCH_ALL_SUFFIX, MATCH_CHILDREN_1_SUFFIX, @@ -601,7 +602,14 @@ const eatPrefixIfPresent = (expression: string, prefix: string, onDetected: () = } } -const consumeFolderByRegexpExpression = (expression: string): {regexp: RegExp, againstName: boolean, priority: number | undefined, log: boolean | undefined} => { +export interface ConsumedFolderMatchingRegexp { + regexp: RegExp + againstName: boolean + priority: number | undefined + log: boolean | undefined +} + +export const consumeFolderByRegexpExpression = (expression: string): ConsumedFolderMatchingRegexp => { let againstName: boolean = false let priority: number | undefined let logMatches: boolean | undefined @@ -764,8 +772,8 @@ export class SortingSpecProcessor { sortspecByWildcard = sortspecByWildcard ?? new FolderWildcardMatching() const folderByRegexpExpression: string = path.substring(MatchFolderByRegexpLexeme.length).trim() try { - const {regexp, againstName, priority, log} = consumeFolderByRegexpExpression(folderByRegexpExpression) - sortspecByWildcard.addRegexpDefinition(regexp, againstName, priority, log, spec) + const r: ConsumedFolderMatchingRegexp = consumeFolderByRegexpExpression(folderByRegexpExpression) + sortspecByWildcard.addRegexpDefinition(r.regexp, r.againstName, r.priority, r.log, spec) } catch (e) { this.problem(ProblemCode.InvalidOrEmptyFolderMatchingRegexp, `Invalid or empty folder regexp expression <${folderByRegexpExpression}>`)