#50 - regexp and by-name matching support for target-folder

- code readability (implicit structure turned into explicit interface)
This commit is contained in:
SebastianMC 2023-02-06 23:59:14 +01:00
parent ea018db574
commit afcb505633
1 changed files with 11 additions and 3 deletions

View File

@ -22,6 +22,7 @@ import {
RomanNumberRegexStr RomanNumberRegexStr
} from "./matchers"; } from "./matchers";
import { import {
FolderMatchingRegexp,
FolderWildcardMatching, FolderWildcardMatching,
MATCH_ALL_SUFFIX, MATCH_ALL_SUFFIX,
MATCH_CHILDREN_1_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 againstName: boolean = false
let priority: number | undefined let priority: number | undefined
let logMatches: boolean | undefined let logMatches: boolean | undefined
@ -764,8 +772,8 @@ export class SortingSpecProcessor {
sortspecByWildcard = sortspecByWildcard ?? new FolderWildcardMatching<CustomSortSpec>() sortspecByWildcard = sortspecByWildcard ?? new FolderWildcardMatching<CustomSortSpec>()
const folderByRegexpExpression: string = path.substring(MatchFolderByRegexpLexeme.length).trim() const folderByRegexpExpression: string = path.substring(MatchFolderByRegexpLexeme.length).trim()
try { try {
const {regexp, againstName, priority, log} = consumeFolderByRegexpExpression(folderByRegexpExpression) const r: ConsumedFolderMatchingRegexp = consumeFolderByRegexpExpression(folderByRegexpExpression)
sortspecByWildcard.addRegexpDefinition(regexp, againstName, priority, log, spec) sortspecByWildcard.addRegexpDefinition(r.regexp, r.againstName, r.priority, r.log, spec)
} catch (e) { } catch (e) {
this.problem(ProblemCode.InvalidOrEmptyFolderMatchingRegexp, this.problem(ProblemCode.InvalidOrEmptyFolderMatchingRegexp,
`Invalid or empty folder regexp expression <${folderByRegexpExpression}>`) `Invalid or empty folder regexp expression <${folderByRegexpExpression}>`)