Added support for more formats of dates extraction from titles
- \[dd-mm-yyyy] and \[mm-dd-yyyy] - main README.md updated accordingly
This commit is contained in:
		
							parent
							
								
									ac263a7407
								
							
						
					
					
						commit
						44631bee4f
					
				| 
						 | 
				
			
			@ -175,7 +175,7 @@ The list of automatic sorting orders includes:
 | 
			
		|||
- `\R+`, `\.R+` or `\-R+` for Roman numbers
 | 
			
		||||
- `\d+`, `\.d+` or `\-d+` for plain numbers or compound plain numbers
 | 
			
		||||
- `\a+` to extract the last word from title
 | 
			
		||||
- `\[yyyy-mm-dd]`, `\[yyyy-dd-mm]`, `\[dd-Mmm-yyyy]`, `\[Mmm-dd-yyyy]`, `\[yyyy-Www (mm-dd)]`, `\[yyyy-Www]` or `\[yyyy-WwwISO]` to extract dates in various formats
 | 
			
		||||
- `\[yyyy-mm-dd]`, `\[yyyy-dd-mm]`, `\[dd-Mmm-yyyy]`, `\[mm-dd-yyyy]`, `\[dd-mm-yyyy]`, `\[Mmm-dd-yyyy]`, `\[yyyy-Www (mm-dd)]`, `\[yyyy-Www]` or `\[yyyy-WwwISO]` to extract dates in various formats
 | 
			
		||||
 | 
			
		||||
## Sorting by note name and note name with file extension
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,6 +13,9 @@ export const CompoundNumberDashRegexStr: string = ' *(\\d+(?:-\\d+)*)'; // Compo
 | 
			
		|||
export const Date_yyyy_mm_dd_RegexStr: string = ' *(\\d{4}-[0-3]*[0-9]-[0-3]*[0-9])'
 | 
			
		||||
export const Date_yyyy_dd_mm_RegexStr: string = Date_yyyy_mm_dd_RegexStr
 | 
			
		||||
 | 
			
		||||
export const Date_mm_dd_yyyy_RegexStr: string = ' *([0-3]*[0-9]-[0-3]*[0-9]-\\d{4})'
 | 
			
		||||
export const Date_dd_mm_yyyy_RegexStr: string = Date_mm_dd_yyyy_RegexStr
 | 
			
		||||
 | 
			
		||||
export const Date_dd_Mmm_yyyy_RegexStr: string = ' *([0-3]*[0-9]-(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\\d{4})'; // Date like 01-Jan-2020
 | 
			
		||||
export const Date_Mmm_dd_yyyy_RegexStr: string = ' *((?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-[0-3]*[0-9]-\\d{4})'; // Date like Jan-01-2020
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -138,6 +141,8 @@ export function getNormalizedDate_NormalizerFn_for(separator: string, dayIdx: nu
 | 
			
		|||
 | 
			
		||||
export const getNormalizedDate_yyyy_mm_dd_NormalizerFn = getNormalizedDate_NormalizerFn_for('-', 2, 1, 0)
 | 
			
		||||
export const getNormalizedDate_yyyy_dd_mm_NormalizerFn = getNormalizedDate_NormalizerFn_for('-', 1, 2, 0)
 | 
			
		||||
export const getNormalizedDate_mm_dd_yyyy_NormalizerFn = getNormalizedDate_NormalizerFn_for('-', 1, 0, 2)
 | 
			
		||||
export const getNormalizedDate_dd_mm_yyyy_NormalizerFn = getNormalizedDate_NormalizerFn_for('-', 0, 1, 2)
 | 
			
		||||
export const getNormalizedDate_dd_Mmm_yyyy_NormalizerFn = getNormalizedDate_NormalizerFn_for('-', 0, 1, 2, MONTHS)
 | 
			
		||||
export const getNormalizedDate_Mmm_dd_yyyy_NormalizerFn = getNormalizedDate_NormalizerFn_for('-', 1, 0, 2, MONTHS)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,7 +17,9 @@ import {
 | 
			
		|||
	CompoundRomanNumberDashRegexStr,
 | 
			
		||||
	CompoundRomanNumberDotRegexStr,
 | 
			
		||||
	DASH_SEPARATOR,
 | 
			
		||||
	Date_dd_mm_yyyy_RegexStr,
 | 
			
		||||
	Date_dd_Mmm_yyyy_RegexStr,
 | 
			
		||||
	Date_mm_dd_yyyy_RegexStr,
 | 
			
		||||
	Date_Mmm_dd_yyyy_RegexStr,
 | 
			
		||||
	Date_yyyy_dd_mm_RegexStr,
 | 
			
		||||
	Date_yyyy_mm_dd_RegexStr,
 | 
			
		||||
| 
						 | 
				
			
			@ -25,7 +27,9 @@ import {
 | 
			
		|||
	Date_yyyy_Www_RegexStr,
 | 
			
		||||
	Date_yyyy_WwwISO_RegexStr,
 | 
			
		||||
	DOT_SEPARATOR,
 | 
			
		||||
	getNormalizedDate_dd_mm_yyyy_NormalizerFn,
 | 
			
		||||
	getNormalizedDate_dd_Mmm_yyyy_NormalizerFn,
 | 
			
		||||
	getNormalizedDate_mm_dd_yyyy_NormalizerFn,
 | 
			
		||||
	getNormalizedDate_Mmm_dd_yyyy_NormalizerFn,
 | 
			
		||||
	getNormalizedDate_yyyy_dd_mm_NormalizerFn,
 | 
			
		||||
	getNormalizedDate_yyyy_mm_dd_NormalizerFn,
 | 
			
		||||
| 
						 | 
				
			
			@ -363,6 +367,8 @@ const Date_yyyy_mm_dd_RegexSymbol: string = '\\[yyyy-mm-dd]'
 | 
			
		|||
const Date_yyyy_dd_mm_RegexSymbol: string = '\\[yyyy-dd-mm]'
 | 
			
		||||
const Date_dd_Mmm_yyyy_RegexSymbol: string = '\\[dd-Mmm-yyyy]'
 | 
			
		||||
const Date_Mmm_dd_yyyy_RegexSymbol: string = '\\[Mmm-dd-yyyy]'
 | 
			
		||||
const Date_dd_mm_yyyy_RegexSymbol: string = '\\[dd-mm-yyyy]'
 | 
			
		||||
const Date_mm_dd_yyyy_RegexSymbol: string = '\\[mm-dd-yyyy]'
 | 
			
		||||
const Date_yyyy_Www_mm_dd_RegexSymbol: string = '\\[yyyy-Www (mm-dd)]'
 | 
			
		||||
const Date_yyyy_Www_RegexSymbol: string = '\\[yyyy-Www]'
 | 
			
		||||
const Date_yyyy_WwwISO_RegexSymbol: string = '\\[yyyy-WwwISO]'
 | 
			
		||||
| 
						 | 
				
			
			@ -389,6 +395,8 @@ const sortingSymbolsArr: Array<string> = [
 | 
			
		|||
	escapeRegexUnsafeCharacters(Date_yyyy_dd_mm_RegexSymbol),
 | 
			
		||||
	escapeRegexUnsafeCharacters(Date_dd_Mmm_yyyy_RegexSymbol),
 | 
			
		||||
	escapeRegexUnsafeCharacters(Date_Mmm_dd_yyyy_RegexSymbol),
 | 
			
		||||
	escapeRegexUnsafeCharacters(Date_dd_mm_yyyy_RegexSymbol),
 | 
			
		||||
	escapeRegexUnsafeCharacters(Date_mm_dd_yyyy_RegexSymbol),
 | 
			
		||||
	escapeRegexUnsafeCharacters(Date_yyyy_Www_mm_dd_RegexSymbol),
 | 
			
		||||
	escapeRegexUnsafeCharacters(Date_yyyy_WwwISO_RegexSymbol),
 | 
			
		||||
	escapeRegexUnsafeCharacters(Date_yyyy_Www_RegexSymbol),
 | 
			
		||||
| 
						 | 
				
			
			@ -463,6 +471,8 @@ export const Date_yyyy_mm_dd_NormalizerFn: NormalizerFn = (s: string) => getNorm
 | 
			
		|||
export const Date_yyyy_dd_mm_NormalizerFn: NormalizerFn = (s: string) => getNormalizedDate_yyyy_dd_mm_NormalizerFn(s)
 | 
			
		||||
export const Date_dd_Mmm_yyyy_NormalizerFn: NormalizerFn = (s: string) => getNormalizedDate_dd_Mmm_yyyy_NormalizerFn(s)
 | 
			
		||||
export const Date_Mmm_dd_yyyy_NormalizerFn: NormalizerFn = (s: string) => getNormalizedDate_Mmm_dd_yyyy_NormalizerFn(s)
 | 
			
		||||
export const Date_dd_mm_yyyy_NormalizerFn: NormalizerFn = (s: string) => getNormalizedDate_dd_mm_yyyy_NormalizerFn(s)
 | 
			
		||||
export const Date_mm_dd_yyyy_NormalizerFn: NormalizerFn = (s: string) => getNormalizedDate_mm_dd_yyyy_NormalizerFn(s)
 | 
			
		||||
export const Date_yyyy_Www_mm_dd_NormalizerFn: NormalizerFn = (s: string) => getNormalizedDate_yyyy_Www_mm_dd_NormalizerFn(s)
 | 
			
		||||
export const Date_yyyy_WwwISO_NormalizerFn: NormalizerFn = (s: string) => getNormalizedDate_yyyy_WwwISO_NormalizerFn(s)
 | 
			
		||||
export const Date_yyyy_Www_NormalizerFn: NormalizerFn = (s: string) => getNormalizedDate_yyyy_Www_NormalizerFn(s)
 | 
			
		||||
| 
						 | 
				
			
			@ -481,6 +491,8 @@ export enum AdvancedRegexType {
 | 
			
		|||
	Date_yyyy_dd_mm,
 | 
			
		||||
	Date_dd_Mmm_yyyy,
 | 
			
		||||
	Date_Mmm_dd_yyyy,
 | 
			
		||||
	Date_dd_mm_yyyy,
 | 
			
		||||
	Date_mm_dd_yyyy,
 | 
			
		||||
	Date_yyyy_Www_mm_dd_yyyy,
 | 
			
		||||
	Date_yyyy_WwwISO,
 | 
			
		||||
	Date_yyyy_Www
 | 
			
		||||
| 
						 | 
				
			
			@ -548,6 +560,16 @@ const sortingSymbolToRegexpStr: { [key: string]: RegExpSpecStr } = {
 | 
			
		|||
		normalizerFn: Date_Mmm_dd_yyyy_NormalizerFn,
 | 
			
		||||
		advancedRegexType: AdvancedRegexType.Date_Mmm_dd_yyyy
 | 
			
		||||
	},
 | 
			
		||||
	[Date_dd_mm_yyyy_RegexSymbol]: { // Intentionally retain character case
 | 
			
		||||
		regexpStr: Date_dd_mm_yyyy_RegexStr,
 | 
			
		||||
		normalizerFn: Date_dd_mm_yyyy_NormalizerFn,
 | 
			
		||||
		advancedRegexType: AdvancedRegexType.Date_dd_mm_yyyy
 | 
			
		||||
	},
 | 
			
		||||
	[Date_mm_dd_yyyy_RegexSymbol]: { // Intentionally retain character case
 | 
			
		||||
		regexpStr: Date_mm_dd_yyyy_RegexStr,
 | 
			
		||||
		normalizerFn: Date_mm_dd_yyyy_NormalizerFn,
 | 
			
		||||
		advancedRegexType: AdvancedRegexType.Date_mm_dd_yyyy
 | 
			
		||||
	},
 | 
			
		||||
	[Date_yyyy_Www_mm_dd_RegexSymbol]: { // Intentionally retain character case
 | 
			
		||||
		regexpStr: Date_yyyy_Www_mm_dd_RegexStr,
 | 
			
		||||
		normalizerFn: Date_yyyy_Www_mm_dd_NormalizerFn,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,9 @@ import {
 | 
			
		|||
	ConsumedFolderMatchingRegexp,
 | 
			
		||||
	consumeFolderByRegexpExpression,
 | 
			
		||||
	convertPlainStringToRegex,
 | 
			
		||||
	Date_dd_mm_yyyy_NormalizerFn,
 | 
			
		||||
	Date_dd_Mmm_yyyy_NormalizerFn,
 | 
			
		||||
	Date_mm_dd_yyyy_NormalizerFn,
 | 
			
		||||
	Date_Mmm_dd_yyyy_NormalizerFn,
 | 
			
		||||
	Date_yyyy_dd_mm_NormalizerFn,
 | 
			
		||||
	Date_yyyy_mm_dd_NormalizerFn,
 | 
			
		||||
| 
						 | 
				
			
			@ -387,6 +389,8 @@ Week number interpreted in ISO standard \\[yyyy-WwwISO]
 | 
			
		|||
Week number interpreted in U.S. standard \\[yyyy-Www]
 | 
			
		||||
\\[yyyy-mm-dd] plain spec 1
 | 
			
		||||
\\[yyyy-dd-mm] plain spec 2
 | 
			
		||||
\\[dd-mm-yyyy] plain spec 3
 | 
			
		||||
\\[mm-dd-yyyy] plain spec 4
 | 
			
		||||
`
 | 
			
		||||
 | 
			
		||||
const expectedSortSpecsExampleSortingSymbols: { [key: string]: CustomSortSpec } = {
 | 
			
		||||
| 
						 | 
				
			
			@ -479,11 +483,23 @@ const expectedSortSpecsExampleSortingSymbols: { [key: string]: CustomSortSpec }
 | 
			
		|||
				regex: /^ *(\d{4}-[0-3]*[0-9]-[0-3]*[0-9]) plain spec 2$/i,
 | 
			
		||||
				normalizerFn: Date_yyyy_dd_mm_NormalizerFn
 | 
			
		||||
			}
 | 
			
		||||
		}, {
 | 
			
		||||
			type: CustomSortGroupType.ExactName,
 | 
			
		||||
			regexPrefix: {
 | 
			
		||||
				regex: /^ *([0-3]*[0-9]-[0-3]*[0-9]-\d{4}) plain spec 3$/i,
 | 
			
		||||
				normalizerFn: Date_dd_mm_yyyy_NormalizerFn
 | 
			
		||||
			}
 | 
			
		||||
		}, {
 | 
			
		||||
			type: CustomSortGroupType.ExactName,
 | 
			
		||||
			regexPrefix: {
 | 
			
		||||
				regex: /^ *([0-3]*[0-9]-[0-3]*[0-9]-\d{4}) plain spec 4$/i,
 | 
			
		||||
				normalizerFn: Date_mm_dd_yyyy_NormalizerFn
 | 
			
		||||
			}
 | 
			
		||||
		}, {
 | 
			
		||||
			type: CustomSortGroupType.Outsiders
 | 
			
		||||
		}],
 | 
			
		||||
		targetFoldersPaths: ['mock-folder'],
 | 
			
		||||
		outsidersGroupIdx: 14
 | 
			
		||||
		outsidersGroupIdx: 16
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue