Change all SETTINGS with page references to allow "[[page]]" notation
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
import {
|
import {
|
||||||
|
cleanPageRef,
|
||||||
federatedPathToUrl,
|
federatedPathToUrl,
|
||||||
resolvePath,
|
resolvePath,
|
||||||
rewritePageRefs,
|
rewritePageRefs,
|
||||||
@@ -38,6 +39,9 @@ Deno.test("Test URL resolver", () => {
|
|||||||
federatedPathToUrl("!silverbullet.md/index"),
|
federatedPathToUrl("!silverbullet.md/index"),
|
||||||
"https://silverbullet.md/index",
|
"https://silverbullet.md/index",
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assertEquals(cleanPageRef("hello"), "hello");
|
||||||
|
assertEquals(cleanPageRef("[[hello]]"), "hello");
|
||||||
});
|
});
|
||||||
|
|
||||||
Deno.test("Test rewritePageRefs", () => {
|
Deno.test("Test rewritePageRefs", () => {
|
||||||
|
|||||||
@@ -66,3 +66,11 @@ export function rewritePageRefs(tree: ParseTree, containerPageName: string) {
|
|||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function cleanPageRef(pageRef: string) {
|
||||||
|
if (pageRef.startsWith("[[") && pageRef.endsWith("]]")) {
|
||||||
|
return pageRef.slice(2, -2);
|
||||||
|
} else {
|
||||||
|
return pageRef;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { PageMeta } from "../../web/types.ts";
|
|||||||
import { buildHandebarOptions } from "../directive/util.ts";
|
import { buildHandebarOptions } from "../directive/util.ts";
|
||||||
|
|
||||||
import Handlebars from "handlebars";
|
import Handlebars from "handlebars";
|
||||||
|
import { cleanPageRef } from "$sb/lib/resolve.ts";
|
||||||
|
|
||||||
export async function instantiateTemplateCommand() {
|
export async function instantiateTemplateCommand() {
|
||||||
const allPages = await space.listPages();
|
const allPages = await space.listPages();
|
||||||
@@ -176,7 +177,7 @@ export async function quickNoteCommand() {
|
|||||||
|
|
||||||
export async function dailyNoteCommand() {
|
export async function dailyNoteCommand() {
|
||||||
const { dailyNoteTemplate, dailyNotePrefix } = await readSettings({
|
const { dailyNoteTemplate, dailyNotePrefix } = await readSettings({
|
||||||
dailyNoteTemplate: "template/page/Daily Note",
|
dailyNoteTemplate: "[[template/page/Daily Note]]",
|
||||||
dailyNotePrefix: "📅 ",
|
dailyNotePrefix: "📅 ",
|
||||||
});
|
});
|
||||||
const date = niceDate(new Date());
|
const date = niceDate(new Date());
|
||||||
@@ -189,7 +190,9 @@ export async function dailyNoteCommand() {
|
|||||||
// Doesn't exist, let's create
|
// Doesn't exist, let's create
|
||||||
let dailyNoteTemplateText = "";
|
let dailyNoteTemplateText = "";
|
||||||
try {
|
try {
|
||||||
dailyNoteTemplateText = await space.readPage(dailyNoteTemplate);
|
dailyNoteTemplateText = await space.readPage(
|
||||||
|
cleanPageRef(dailyNoteTemplate),
|
||||||
|
);
|
||||||
carretPos = dailyNoteTemplateText.indexOf("|^|");
|
carretPos = dailyNoteTemplateText.indexOf("|^|");
|
||||||
if (carretPos === -1) {
|
if (carretPos === -1) {
|
||||||
carretPos = 0;
|
carretPos = 0;
|
||||||
@@ -224,13 +227,15 @@ function getWeekStartDate(monday = false) {
|
|||||||
export async function weeklyNoteCommand() {
|
export async function weeklyNoteCommand() {
|
||||||
const { weeklyNoteTemplate, weeklyNotePrefix, weeklyNoteMonday } =
|
const { weeklyNoteTemplate, weeklyNotePrefix, weeklyNoteMonday } =
|
||||||
await readSettings({
|
await readSettings({
|
||||||
weeklyNoteTemplate: "template/page/Weekly Note",
|
weeklyNoteTemplate: "[[template/page/Weekly Note]]",
|
||||||
weeklyNotePrefix: "🗓️ ",
|
weeklyNotePrefix: "🗓️ ",
|
||||||
weeklyNoteMonday: false,
|
weeklyNoteMonday: false,
|
||||||
});
|
});
|
||||||
let weeklyNoteTemplateText = "";
|
let weeklyNoteTemplateText = "";
|
||||||
try {
|
try {
|
||||||
weeklyNoteTemplateText = await space.readPage(weeklyNoteTemplate);
|
weeklyNoteTemplateText = await space.readPage(
|
||||||
|
cleanPageRef(weeklyNoteTemplate),
|
||||||
|
);
|
||||||
} catch {
|
} catch {
|
||||||
console.warn(`No weekly note template found at ${weeklyNoteTemplate}`);
|
console.warn(`No weekly note template found at ${weeklyNoteTemplate}`);
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-5
@@ -34,6 +34,7 @@ import { createEditorState } from "./editor_state.ts";
|
|||||||
import { OpenPages } from "./open_pages.ts";
|
import { OpenPages } from "./open_pages.ts";
|
||||||
import { MainUI } from "./editor_ui.tsx";
|
import { MainUI } from "./editor_ui.tsx";
|
||||||
import { DexieMQ } from "../plugos/lib/mq.dexie.ts";
|
import { DexieMQ } from "../plugos/lib/mq.dexie.ts";
|
||||||
|
import { cleanPageRef } from "$sb/lib/resolve.ts";
|
||||||
const frontMatterRegex = /^---\n(([^\n]|\n)*?)---\n/;
|
const frontMatterRegex = /^---\n(([^\n]|\n)*?)---\n/;
|
||||||
|
|
||||||
const autoSaveInterval = 1000;
|
const autoSaveInterval = 1000;
|
||||||
@@ -250,7 +251,7 @@ export class Client {
|
|||||||
|
|
||||||
private initNavigator() {
|
private initNavigator() {
|
||||||
this.pageNavigator = new PathPageNavigator(
|
this.pageNavigator = new PathPageNavigator(
|
||||||
this.settings.indexPage,
|
cleanPageRef(this.settings.indexPage),
|
||||||
);
|
);
|
||||||
|
|
||||||
this.pageNavigator.subscribe(async (pageName, pos: number | string) => {
|
this.pageNavigator.subscribe(async (pageName, pos: number | string) => {
|
||||||
@@ -386,12 +387,12 @@ export class Client {
|
|||||||
settingsText = (await this.space.readPage("SETTINGS")).text;
|
settingsText = (await this.space.readPage("SETTINGS")).text;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.info("No SETTINGS page, falling back to default", e);
|
console.info("No SETTINGS page, falling back to default", e);
|
||||||
settingsText = "```yaml\nindexPage: index\n```\n";
|
settingsText = '```yaml\nindexPage: "[[index]]"\n```\n';
|
||||||
}
|
}
|
||||||
const settings = parseYamlSettings(settingsText!) as BuiltinSettings;
|
const settings = parseYamlSettings(settingsText!) as BuiltinSettings;
|
||||||
|
|
||||||
if (!settings.indexPage) {
|
if (!settings.indexPage) {
|
||||||
settings.indexPage = "index";
|
settings.indexPage = "[[index]]";
|
||||||
}
|
}
|
||||||
return settings;
|
return settings;
|
||||||
}
|
}
|
||||||
@@ -667,7 +668,7 @@ export class Client {
|
|||||||
newWindow = false,
|
newWindow = false,
|
||||||
) {
|
) {
|
||||||
if (!name) {
|
if (!name) {
|
||||||
name = this.settings!.indexPage;
|
name = cleanPageRef(this.settings.indexPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -772,7 +773,7 @@ export class Client {
|
|||||||
if (this.settings.customStyles) {
|
if (this.settings.customStyles) {
|
||||||
try {
|
try {
|
||||||
const { text: stylesText } = await this.space.readPage(
|
const { text: stylesText } = await this.space.readPage(
|
||||||
this.settings?.customStyles,
|
cleanPageRef(this.settings.customStyles),
|
||||||
);
|
);
|
||||||
const cssBlockRegex = /```css([^`]+)```/;
|
const cssBlockRegex = /```css([^`]+)```/;
|
||||||
const match = cssBlockRegex.exec(stylesText);
|
const match = cssBlockRegex.exec(stylesText);
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
```yaml
|
|
||||||
title: SilverBullet
|
|
||||||
publishAll: true
|
|
||||||
indexPage: SilverBullet
|
|
||||||
footerPage: website-footer
|
|
||||||
```
|
|
||||||
+4
-4
@@ -2,10 +2,10 @@ This page contains settings for configuring SilverBullet and its Plugs. Changing
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# Initial page to load when launching SB
|
# Initial page to load when launching SB
|
||||||
indexPage: SilverBullet
|
indexPage: "[[SilverBullet]]"
|
||||||
|
|
||||||
# Load custom CSS styles from the following page
|
# Load custom CSS styles from the following page
|
||||||
customStyles: STYLES
|
customStyles: "[[STYLES]]"
|
||||||
|
|
||||||
# Template related settings
|
# Template related settings
|
||||||
pageTemplatePrefix: "template/page/"
|
pageTemplatePrefix: "template/page/"
|
||||||
@@ -14,10 +14,10 @@ snippetPrefix: "snippet/"
|
|||||||
quickNotePrefix: "📥 "
|
quickNotePrefix: "📥 "
|
||||||
|
|
||||||
dailyNotePrefix: "📅 "
|
dailyNotePrefix: "📅 "
|
||||||
dailyNoteTemplate: "template/page/Daily Note"
|
dailyNoteTemplate: "[[template/page/Daily Note]]"
|
||||||
|
|
||||||
weeklyNotePrefix: "🗓️ "
|
weeklyNotePrefix: "🗓️ "
|
||||||
weeklyNoteTemplate: "template/page/Weekly Note"
|
weeklyNoteTemplate: "[[template/page/Weekly Note]]"
|
||||||
weeklyNoteMonday: false
|
weeklyNoteMonday: false
|
||||||
|
|
||||||
# Markdown
|
# Markdown
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
This is my weekly note template.
|
||||||
|
|
||||||
|
|^|
|
||||||
Reference in New Issue
Block a user