#50 - regexp and by-name matching support for target-folder
- code readability (implicit structure turned into explicit interface)
This commit is contained in:
parent
ea018db574
commit
afcb505633
|
@ -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}>`)
|
||||||
|
|
Loading…
Reference in New Issue