At work we use a number of internal link systems; go/foobar for a link shorterner, bug/12345 for the bug tracker, and more. Many of our internal systems support this natively; that is, typing bug/12345 into documents will automatically link it to http://bug/12345 (which then redirects to the full URLhttps://bugtracker.company-internal.com/show_bug?id=12345). Now, typing http://bug/12345 works, but it would be really nice to type something shorter, especially if it can be just bug/12345. Bonus points if I can actually make the underlying link the full URL.
Doing this at the rendering system is likely impossible. Instead, I’ve added a couple of links to toggle the prefix (this is slightly hacky, but, hey, tinkerware, right?)
silverbullet.registerCommand({name: "Linkify: Add http://"}, async() => {
let text = await editor.getText();
matches = text.matchAll(/([\s^])((bug|change)\/[A-Za-z0-9_\-]+)/g);
let changes = [];
for (match of matches) {
let from = match.index + match[1].length;
let to = from + match[2].length;
changes.push({from:from, to:to, insert: "http://" + match[2]});
}
console.log(changes);
editor.dispatch({changes});
})
silverbullet.registerCommand({name: "Linkify: Drop http://"}, async() => {
let text = await editor.getText();
matches = text.matchAll(/\bhttp:\/\/((bug|change)\/[A-Za-z0-9_\-]+)/g);
let changes = [];
for (match of matches) {
let from = match.index;
let to = match.index + match[0].length;
changes.push({from:from, to:to, insert: match[1]});
}
console.log(changes);
editor.dispatch({changes});
})
A bit of a teaser, but as part of the stuff I’m working on as part of Space Lua I’ll likely be adding a ${lua expression} syntax, which will Live Preview to whatever markdown that expression returns.
This would mean you can easily define a function named bug that could return markdown linking to a bug.
Concept code (but not really, since this already works on Edge, just don’t use it yet as some key things may still change):
Anywhere in your space:
```space-lua
function bug(id)
return "[Bug #" .. id .. "](https://bugtracker.company-internal.com/show_bug?id=" .. id .. ")"
end
```
And you can then use it anywhere else like this:
See this bug: ${bug "10"}, or if you prefer ${bug(10)}