MCPcopy
hub / github.com/pyrochlore/obsidian-tracker / collectDataFromFrontmatterKey

Function collectDataFromFrontmatterKey

src/collecting.ts:583–671  ·  view source on GitHub ↗
(
    fileCache: CachedMetadata,
    query: Query,
    renderInfo: RenderInfo,
    dataMap: DataMap,
    xValueMap: XValueMap
)

Source from the content-addressed store, hash-verified

581
582// In form 'key: value', target used to identify 'frontmatter key'
583export function collectDataFromFrontmatterKey(
584 fileCache: CachedMetadata,
585 query: Query,
586 renderInfo: RenderInfo,
587 dataMap: DataMap,
588 xValueMap: XValueMap
589): boolean {
590 // console.log("collectDataFromFrontmatterKey");
591
592 let frontMatter = fileCache.frontmatter;
593 if (frontMatter) {
594 // console.log(frontMatter);
595 // console.log(query.getTarget());
596 let deepValue = helper.deepValue(frontMatter, query.getTarget());
597 // console.log(deepValue);
598 if (deepValue) {
599 let retParse = helper.parseFloatFromAny(
600 deepValue,
601 renderInfo.textValueMap
602 );
603 // console.log(retParse);
604 if (retParse.value === null) {
605 // Try parsing as a boolean: true means 1, false means 0.
606 if (deepValue === "true" || deepValue === "false") {
607 retParse.type = ValueType.Number;
608 retParse.value = deepValue === "true" ? 1 : 0;
609 }
610 }
611 if (retParse.value !== null) {
612 if (retParse.type === ValueType.Time) {
613 query.valueType = ValueType.Time;
614 }
615 query.addNumTargets();
616 let xValue = xValueMap.get(renderInfo.xDataset[query.getId()]);
617 addToDataMap(dataMap, xValue, query, retParse.value);
618 return true;
619 }
620 } else if (
621 query.getParentTarget() &&
622 helper.deepValue(frontMatter, query.getParentTarget())
623 ) {
624 // console.log("multiple values");
625 // console.log(query.getTarget());
626 // console.log(query.getParentTarget());
627 // console.log(query.getSubId());
628 // console.log(
629 // frontMatter[query.getParentTarget()]
630 // );
631 let toParse = helper.deepValue(
632 frontMatter,
633 query.getParentTarget()
634 );
635 let splitted = null;
636 if (Array.isArray(toParse)) {
637 splitted = toParse.map((p) => {
638 return p.toString();
639 });
640 } else if (typeof toParse === "string") {

Callers

nothing calls this directly

Calls 7

addToDataMapFunction · 0.85
getTargetMethod · 0.80
getParentTargetMethod · 0.80
getSeparatorMethod · 0.80
getAccessorMethod · 0.80
addNumTargetsMethod · 0.45
getIdMethod · 0.45

Tested by

no test coverage detected