| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 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})$/;
- // https://regex101.com/r/WVpPpY/1
- const PATTERN_DEFAULT = /^((.*)\/)?([^/]+)$/;
- export class DevidedPagePath {
- constructor(path, skipNormalize = false, evalDatePath = false) {
- this.isRoot = false;
- this.isFormerRoot = false;
- this.former = null;
- this.latter = null;
- // 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;
- }
- }
- const matchDefault = pagePath.match(PATTERN_DEFAULT);
- if (matchDefault != null) {
- this.isFormerRoot = matchDefault[1] === '/';
- this.former = matchDefault[2];
- this.latter = matchDefault[3];
- }
- }
- }
|