Skip to content

Commit a53cb7c

Browse files
committed
add metadata to execution context
1 parent f474ef1 commit a53cb7c

File tree

11 files changed

+237
-22
lines changed

11 files changed

+237
-22
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
---
2+
number: 1
3+
added:
4+
- "1"
5+
- "2"
6+
removed:
7+
- "1"
8+
---
9+
# Added
10+
11+
```meta-bind
12+
INPUT[list:added]
13+
```
14+
15+
# Removed
16+
17+
```meta-bind
18+
INPUT[list:removed]
19+
```
20+
21+
# Total
22+
23+
```js-engine
24+
const dv = engine.getPlugin('dataview').api;
25+
26+
const pages = dv.pages().filter(x => x.file.name.startsWith('Note')).filter(x => x.number <= context.metadata.frontmatter.number);
27+
28+
let quests = [];
29+
30+
for (const page of pages) {
31+
for (const a_quest of page.added) {
32+
quests.push({
33+
name: a_quest,
34+
added: page.number,
35+
removed: -1,
36+
});
37+
}
38+
}
39+
40+
for (const page of pages) {
41+
for (const r_quest of page.removed) {
42+
for (const quest of quests) {
43+
if (quest.name === r_quest && quest.added <= page.number) {
44+
quest.removed = page.number;
45+
}
46+
}
47+
}
48+
}
49+
50+
const mdBuilder = engine.markdown.createBuilder();
51+
52+
mdBuilder.createTable(
53+
["Quest", "Completed", "Started On", "Completed On"],
54+
quests.map(x => [
55+
x.name,
56+
x.removed !== -1 ? "#" : "",
57+
x.added,
58+
x.removed,
59+
])
60+
);
61+
62+
return mdBuilder;
63+
```
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
---
2+
number: 2
3+
added:
4+
- "3"
5+
- "4"
6+
removed:
7+
- "2"
8+
- "3"
9+
---
10+
# Added
11+
12+
```meta-bind
13+
INPUT[list:added]
14+
```
15+
16+
# Removed
17+
18+
```meta-bind
19+
INPUT[list:removed]
20+
```
21+
22+
# Total
23+
24+
```js-engine
25+
const dv = engine.getPlugin('dataview').api;
26+
27+
const pages = dv.pages().filter(x => x.file.name.startsWith('Note')).filter(x => x.number <= context.metadata.frontmatter.number);
28+
29+
let quests = [];
30+
31+
for (const page of pages) {
32+
for (const a_quest of page.added) {
33+
quests.push({
34+
name: a_quest,
35+
added: page.number,
36+
removed: -1,
37+
});
38+
}
39+
}
40+
41+
for (const page of pages) {
42+
for (const r_quest of page.removed) {
43+
for (const quest of quests) {
44+
if (quest.name === r_quest && quest.added <= page.number) {
45+
quest.removed = page.number;
46+
}
47+
}
48+
}
49+
}
50+
51+
const mdBuilder = engine.markdown.createBuilder();
52+
53+
mdBuilder.createTable(
54+
["Quest", "Completed", "Started On", "Completed On"],
55+
quests.map(x => [
56+
x.name,
57+
x.removed !== -1 ? "#" : "",
58+
x.added,
59+
x.removed,
60+
])
61+
);
62+
63+
return mdBuilder;
64+
```
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
---
2+
number: 3
3+
added:
4+
- "3"
5+
removed:
6+
- "4"
7+
aliases: []
8+
---
9+
10+
# Added
11+
12+
```meta-bind
13+
INPUT[list:added]
14+
```
15+
16+
# Removed
17+
18+
```meta-bind
19+
INPUT[list:removed]
20+
```
21+
22+
# Total
23+
24+
```js-engine
25+
const dv = engine.getPlugin('dataview').api;
26+
27+
const pages = dv.pages().filter(x => x.file.name.startsWith('Note')).filter(x => x.number <= context.metadata.frontmatter.number);
28+
29+
let quests = [];
30+
31+
for (const page of pages) {
32+
for (const a_quest of page.added) {
33+
quests.push({
34+
name: a_quest,
35+
added: page.number,
36+
removed: -1,
37+
});
38+
}
39+
}
40+
41+
for (const page of pages) {
42+
for (const r_quest of page.removed) {
43+
for (const quest of quests) {
44+
if (quest.name === r_quest && quest.added <= page.number) {
45+
quest.removed = page.number;
46+
}
47+
}
48+
}
49+
}
50+
51+
const mdBuilder = engine.markdown.createBuilder();
52+
53+
mdBuilder.createTable(
54+
["Quest", "Completed", "Started On", "Completed On"],
55+
quests.map(x => [
56+
x.name,
57+
x.removed !== -1 ? "#" : "",
58+
x.added,
59+
x.removed,
60+
])
61+
);
62+
63+
return mdBuilder;
64+
```

exampleVault/Test.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ let lib = await engine.importJs("lib.js");
4747
return lib.getGreeting();
4848
```
4949

50+
```js-engine
51+
let lib = await engine.importJs("svelte_project/dist/assets/index-9a060cab.js");
52+
console.log(lib);
53+
console.log(lib.App);
54+
```
55+
5056
# Async Test
5157

5258
```js-engine
@@ -66,4 +72,4 @@ const inputField2 = meta_bind_api.createInputFieldFromString("INPUT[number:numbe
6672
6773
component.addChild(inputField)
6874
component.addChild(inputField2)
69-
```
75+
```

src/ArgumentManager.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
import { TFile } from 'obsidian';
1+
import {CachedMetadata, TFile} from 'obsidian';
22

33
export interface ExecutionContext {
44
file: TFile;
5+
metadata: CachedMetadata | null;
56
line: number;
67
}
78

src/JsMDRC.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,10 @@ export class JsMDRC extends MarkdownRenderChild {
4040

4141
buildExecutionContext(): ExecutionContext {
4242
console.log(this.ctx);
43+
const file = this.getExecutionFile()!;
4344
return {
44-
file: this.getExecutionFile()!,
45+
file: file,
46+
metadata: this.plugin.app.metadataCache.getFileCache(file),
4547
line: 0,
4648
};
4749
}
@@ -73,8 +75,6 @@ export class JsMDRC extends MarkdownRenderChild {
7375
return;
7476
}
7577

76-
this.renderExecutionStats(container);
77-
7878
if (typeof result === 'string') {
7979
container.innerText = result;
8080
return;
@@ -126,6 +126,7 @@ export class JsMDRC extends MarkdownRenderChild {
126126

127127
try {
128128
await this.tryRender(this.containerEl);
129+
this.renderExecutionStats(this.containerEl);
129130
} catch (e) {
130131
this.containerEl.innerText = e instanceof Error ? e.stack?.toString() ?? '' : (e as string);
131132
this.containerEl.addClass('mod-warning');

src/api/API.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export class API {
3737
*
3838
* @param path the vault relative path of the file to import
3939
*/
40-
async importJs(path: string): Promise<any> {
40+
public async importJs(path: string): Promise<any> {
4141
const fullPath = this.app.vault.adapter.getResourcePath(path);
4242
return import(fullPath);
4343
}
@@ -47,7 +47,7 @@ export class API {
4747
*
4848
* @param pluginId the id of the plugin.
4949
*/
50-
getPlugin(pluginId: string): Plugin {
50+
public getPlugin(pluginId: string): Plugin {
5151
return this.app.plugins.getPlugin(pluginId);
5252
}
5353
}

src/api/MarkdownAPI.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export class MarkdownAPI {
2525
/**
2626
* Creates a markdown builder.
2727
*/
28-
createBuilder(): MarkdownBuilder {
28+
public createBuilder(): MarkdownBuilder {
2929
return new MarkdownBuilder();
3030
}
3131

@@ -36,7 +36,7 @@ export class MarkdownAPI {
3636
*
3737
* @param markdown the string to wrap
3838
*/
39-
create(markdown: string): MarkdownString {
39+
public create(markdown: string): MarkdownString {
4040
return new MarkdownString(markdown);
4141
}
4242

@@ -45,7 +45,7 @@ export class MarkdownAPI {
4545
*
4646
* @param text
4747
*/
48-
createText(text: string): TextElement {
48+
public createText(text: string): TextElement {
4949
return new TextElement(text, false, false, false);
5050
}
5151

@@ -54,7 +54,7 @@ export class MarkdownAPI {
5454
*
5555
* @param text
5656
*/
57-
createBoldText(text: string): TextElement {
57+
public createBoldText(text: string): TextElement {
5858
return new TextElement(text, true, false, false);
5959
}
6060

@@ -63,7 +63,7 @@ export class MarkdownAPI {
6363
*
6464
* @param text
6565
*/
66-
createCursiveText(text: string): TextElement {
66+
public createCursiveText(text: string): TextElement {
6767
return new TextElement(text, false, true, false);
6868
}
6969

@@ -72,7 +72,7 @@ export class MarkdownAPI {
7272
*
7373
* @param text
7474
*/
75-
createUnderlinedText(text: string): TextElement {
75+
public createUnderlinedText(text: string): TextElement {
7676
return new TextElement(text, false, false, true);
7777
}
7878

@@ -81,7 +81,7 @@ export class MarkdownAPI {
8181
*
8282
* @param text
8383
*/
84-
createCode(text: string): CodeElement {
84+
public createCode(text: string): CodeElement {
8585
return new CodeElement(text);
8686
}
8787

@@ -90,7 +90,7 @@ export class MarkdownAPI {
9090
*
9191
* @param content
9292
*/
93-
createParagraph(content: string): ParagraphElement {
93+
public createParagraph(content: string): ParagraphElement {
9494
return new ParagraphElement(content);
9595
}
9696

@@ -100,14 +100,14 @@ export class MarkdownAPI {
100100
* @param level the level of the heading from 1 to 6
101101
* @param content the text of the heading
102102
*/
103-
createHeading(level: number, content: string): HeadingElement {
103+
public createHeading(level: number, content: string): HeadingElement {
104104
return new HeadingElement(level, content);
105105
}
106106

107107
/**
108108
* Creates a new markdown block quote element.
109109
*/
110-
createBlockQuote(): BlockQuoteElement {
110+
public createBlockQuote(): BlockQuoteElement {
111111
return new BlockQuoteElement();
112112
}
113113

@@ -118,7 +118,7 @@ export class MarkdownAPI {
118118
* @param type the type of the callout
119119
* @param args the callout args, optional
120120
*/
121-
createCallout(title: string, type: string, args: string = ''): CalloutElement {
121+
public createCallout(title: string, type: string, args: string = ''): CalloutElement {
122122
return new CalloutElement(title, type, args);
123123
}
124124

@@ -128,7 +128,7 @@ export class MarkdownAPI {
128128
* @param language the language of the code block
129129
* @param content the content of the code block
130130
*/
131-
createCodeBlock(language: string, content: string): CodeBlockElement {
131+
public createCodeBlock(language: string, content: string): CodeBlockElement {
132132
return new CodeBlockElement(language, content);
133133
}
134134

@@ -138,7 +138,7 @@ export class MarkdownAPI {
138138
* @param header the header row
139139
* @param body the table body
140140
*/
141-
createTable(header: string[], body: string[][]): TableElement {
141+
public createTable(header: string[], body: string[][]): TableElement {
142142
return new TableElement(header, body);
143143
}
144144
}

0 commit comments

Comments
 (0)