import * as pathUtils from '../utils/path-utils'; // https://regex101.com/r/BahpKX/2 const PATTERN_INCLUDE_DATE = /^(.+\/[^/]+)\/(\d{4}|\d{4}\/\d{2}|\d{4}\/\d{2}\/\d{2})$/; export class DevidedPagePath { isRoot: boolean; isFormerRoot: boolean; former: string; latter: string; constructor(path: string, skipNormalize = false, evalDatePath = false) { this.isRoot = false; this.isFormerRoot = false; this.former = ''; // root if (path == null || path === '' || path === '/') { this.isRoot = true; this.latter = '/'; return; } const pagePath = skipNormalize ? path : pathUtils.normalizePath(path); this.latter = pagePath; // evaluate date path if (evalDatePath) { const matchDate = pagePath.match(PATTERN_INCLUDE_DATE); if (matchDate != null) { this.former = matchDate[1]; this.latter = matchDate[2]; return; } } let PATTERN_DEFAULT = /^((.*)\/(?!em>))?(.+)$/; // this will ignore em's end tags try { // for non-chrome browsers // eslint-disable-next-line regex/invalid PATTERN_DEFAULT = new RegExp('^((.*)(?