1.5 KiB
1.5 KiB
id, aliases, title, tags, dg-publish, daily
| id | aliases | title | tags | dg-publish | daily | |||||
|---|---|---|---|---|---|---|---|---|---|---|
| 2026-02-02 06:50:00 |
|
true | 2026-02-02 |
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.
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.