@@ -35,6 +35,7 @@ import {
3535 BookmarksPluginInterface
3636} from "../utils/BookmarksCorePluginSignature" ;
3737import { CustomSortPluginAPI } from "../custom-sort-plugin" ;
38+ import { MDataExtractor } from "./mdata-extractors" ;
3839
3940export interface ProcessingContext {
4041 // For internal transient use
@@ -372,13 +373,14 @@ export const matchGroupRegex = (theRegex: RegExpSpec, nameForMatching: string):
372373 return [ false , undefined , undefined ]
373374}
374375
375- const mdataValueFromFMCaches = ( mdataFieldName : string , fc ?: FrontMatterCache , fcPrio ?: FrontMatterCache ) : any => {
376+ const mdataValueFromFMCaches = ( mdataFieldName : string , mdataExtractor ?: MDataExtractor , fc ?: FrontMatterCache , fcPrio ?: FrontMatterCache ) : any => {
376377 let prioValue = undefined
377378 if ( fcPrio ) {
378379 prioValue = fcPrio ?. [ mdataFieldName ]
379380 }
380381
381- return prioValue ?? fc ?. [ mdataFieldName ]
382+ const rawMDataValue = prioValue ?? fc ?. [ mdataFieldName ]
383+ return mdataExtractor ? mdataExtractor ( rawMDataValue ) : rawMDataValue
382384}
383385
384386export const determineSortingGroup = function ( entry : TFile | TFolder , spec : CustomSortSpec , ctx ?: ProcessingContext ) : FolderItemForSorting {
@@ -583,13 +585,29 @@ export const determineSortingGroup = function (entry: TFile | TFolder, spec: Cus
583585 }
584586 }
585587 if ( isPrimaryOrderByMetadata ) metadataValueToSortBy =
586- mdataValueFromFMCaches ( group ?. byMetadataField || group ?. withMetadataFieldName || DEFAULT_METADATA_FIELD_FOR_SORTING , frontMatterCache , prioFrontMatterCache )
588+ mdataValueFromFMCaches (
589+ group ?. byMetadataField || group ?. withMetadataFieldName || DEFAULT_METADATA_FIELD_FOR_SORTING ,
590+ group ?. metadataFieldValueExtractor ,
591+ frontMatterCache ,
592+ prioFrontMatterCache )
587593 if ( isSecondaryOrderByMetadata ) metadataValueSecondaryToSortBy =
588- mdataValueFromFMCaches ( group ?. byMetadataFieldSecondary || group ?. withMetadataFieldName || DEFAULT_METADATA_FIELD_FOR_SORTING , frontMatterCache , prioFrontMatterCache )
594+ mdataValueFromFMCaches (
595+ group ?. byMetadataFieldSecondary || group ?. withMetadataFieldName || DEFAULT_METADATA_FIELD_FOR_SORTING ,
596+ group ?. metadataFieldSecondaryValueExtractor ,
597+ frontMatterCache ,
598+ prioFrontMatterCache )
589599 if ( isDerivedPrimaryByMetadata ) metadataValueDerivedPrimaryToSortBy =
590- mdataValueFromFMCaches ( spec . byMetadataField || DEFAULT_METADATA_FIELD_FOR_SORTING , frontMatterCache , prioFrontMatterCache )
600+ mdataValueFromFMCaches (
601+ spec . byMetadataField || DEFAULT_METADATA_FIELD_FOR_SORTING ,
602+ spec . metadataFieldValueExtractor ,
603+ frontMatterCache ,
604+ prioFrontMatterCache )
591605 if ( isDerivedSecondaryByMetadata ) metadataValueDerivedSecondaryToSortBy =
592- mdataValueFromFMCaches ( spec . byMetadataFieldSecondary || DEFAULT_METADATA_FIELD_FOR_SORTING , frontMatterCache , prioFrontMatterCache )
606+ mdataValueFromFMCaches (
607+ spec . byMetadataFieldSecondary || DEFAULT_METADATA_FIELD_FOR_SORTING ,
608+ spec . metadataFieldSecondaryValueExtractor ,
609+ frontMatterCache ,
610+ prioFrontMatterCache )
593611 }
594612 }
595613 }
0 commit comments