Skip to content

Commit

Permalink
Support for inline dataview fields
Browse files Browse the repository at this point in the history
  • Loading branch information
Laharah committed Jan 31, 2023
1 parent 22979f1 commit f38673a
Showing 1 changed file with 68 additions and 31 deletions.
99 changes: 68 additions & 31 deletions src/collecting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -775,39 +775,76 @@ export function collectDataFromFileMeta(

// In form 'key::value', named group 'value' from plugin
export function collectDataFromDvField(
content: string,
query: Query,
renderInfo: RenderInfo,
dataMap: DataMap,
xValueMap: XValueMap
content: string,
query: Query,
renderInfo: RenderInfo,
dataMap: DataMap,
xValueMap: XValueMap
): boolean {
let dvTarget = query.getTarget();
if (query.getParentTarget()) {
dvTarget = query.getParentTarget(); // use parent tag name for multiple values
}
// Dataview ask user to add dashes for spaces as search target
// So a dash may stands for a real dash or a space
dvTarget = dvTarget.replace("-", "[\\s\\-]");

// Test this in Regex101
// remember '\s' includes new line
// (^| |\t)\*{0,2}dvTarget\*{0,2}(::[ |\t]*(?<value>[\d\.\/\-\w,@; \t:]*))(\r?\n|\r|$)
let strRegex =
"(^| |\\t)\\*{0,2}" +
dvTarget +
"\\*{0,2}(::[ |\\t]*(?<value>[\\d\\.\\/\\-,@; \\t:" +
WordCharacters +
"]*))(\\r\\?\\n|\\r|$)";
// console.log(strRegex);

return extractDataUsingRegexWithMultipleValues(
content,
strRegex,
query,
dataMap,
xValueMap,
renderInfo
let dvTarget = query.getTarget();
if (query.getParentTarget()) {
dvTarget = query.getParentTarget(); // use parent tag name for multiple values
}
// Dataview ask user to add dashes for spaces as search target
// So a dash may stands for a real dash or a space
dvTarget = dvTarget.replace("-", "[\\s\\-]");

// Test this in Regex101
// remember '\s' includes new line
// (^| |\t)\*{0,2}dvTarget\*{0,2}(::[ |\t]*(?<value>[\d\.\/\-\w,@; \t:]*))(\r?\n|\r|$)
let strRegex =
"(^| |\\t)\\*{0,2}" +
dvTarget +
"\\*{0,2}(::[ |\\t]*(?<value>[\\d\\.\\/\\-,@; \\t:" +
WordCharacters +
"]*))(\\r\\?\\n|\\r|$)";
let outline = extractDataUsingRegexWithMultipleValues(
content,
strRegex,
query,
dataMap,
xValueMap,
renderInfo
);
let inline = collectDataFromInlineDvField(content, query, renderInfo, dataMap, xValueMap)
return outline || inline
}

// In form 'key::value', named group 'value' from plugin
export function collectDataFromInlineDvField(
content: string,
query: Query,
renderInfo: RenderInfo,
dataMap: DataMap,
xValueMap: XValueMap
): boolean {
let dvTarget = query.getTarget();
if (query.getParentTarget()) {
dvTarget = query.getParentTarget(); // use parent tag name for multiple values
}
// Dataview ask user to add dashes for spaces as search target
// So a dash may stands for a real dash or a space
dvTarget = dvTarget.replace("-", "[\\s\\-]");

// Test this in Regex101
// remember '\s' includes new line
// ^.*?(\[|\()\*{0,2}dvTarget\*{0,2}(::[ |\t]*(?<value>[\d\.\/\-\w,@; \t:]*))(\]|\)).*?
let strRegex =
"^.*?(\\[|\\()\\*{0,2}" +
dvTarget +
"\\*{0,2}(::[ |\\t]*(?<value>[\\d\\.\\/\\-,@; \\t:" +
WordCharacters +
"]*))(\\]|\\)).*?$";
// console.log(strRegex);

return extractDataUsingRegexWithMultipleValues(
content,
strRegex,
query,
dataMap,
xValueMap,
renderInfo
);
}

// In form 'regex with value', name group 'value' from users
Expand Down

0 comments on commit f38673a

Please sign in to comment.