vault backup: 2026-02-05 07:18:20
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# 2026-02-02 06:50:00
|
||||
|
||||
I'm considering including management scripts in this vault,
|
||||
but I'd generally prefer to keep it content only.
|
||||
Ideally I could do anything I'd use a script for with a plugin,
|
||||
but they have their limitations.
|
||||
Eventually I should [[learn-to-write-obsidian-plugins]],
|
||||
but for now here's a useful cmdlet I wrote a while ago but misplaced.
|
||||
|
||||
```powershell
|
||||
function Import-Markdown {
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
[string]$Path
|
||||
)
|
||||
try {
|
||||
$command = Get-Command ConvertFrom-Yaml -ErrorAction "Stop"
|
||||
}
|
||||
catch {
|
||||
throw "no YAML conversion module installed. Try ``Install-Module powershell-yaml``."
|
||||
}
|
||||
|
||||
$content = Get-Content -Path $Path -Raw
|
||||
$pattern = [Regex]'(?ms)^---\s*(.*?)\s*---\s*(.*)$'
|
||||
$match = $pattern.Match($content)
|
||||
if ($match.Success) {
|
||||
$frontmatter = $match.Groups[1].Value
|
||||
$body = $match.Groups[2].Value
|
||||
}
|
||||
else {
|
||||
$frontmatter = ''
|
||||
$body = $content
|
||||
}
|
||||
|
||||
return [pscustomobject]@{
|
||||
frontmatter = $frontmatter | ConvertFrom-Yaml
|
||||
body = $body
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
That match expression is bizarre,
|
||||
and the whole thing needs better error handling,
|
||||
but it works.
|
||||
|
||||
A `Where-Markdown` for filtering by tags
|
||||
and a `{Verb}-Markdown` for modifying tags
|
||||
would be idiomatic.
|
||||
Reference in New Issue
Block a user