Change all SETTINGS with page references to allow "[[page]]" notation
parent
6b3649c345
commit
b273645bae
|
@ -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}`);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
|
||||||
```
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|^|
|
Loading…
Reference in New Issue