feat(okr): writeFrontmatter multi-linje tags-liste (additiv array-gren) [skip-docs]
This commit is contained in:
parent
a9d9c45192
commit
ca6c89e7be
2 changed files with 43 additions and 5 deletions
|
|
@ -41,14 +41,26 @@ export function parseFrontmatter(content) {
|
|||
return { raw, get };
|
||||
}
|
||||
|
||||
// Siter naar verdien inneholder '#'/':' eller har kant-whitespace, slik at
|
||||
// round-trip via parseFrontmatter bevarer den eksakt (jf. siter-#-regelen).
|
||||
const quoteIfNeeded = (s) =>
|
||||
/[#:]/.test(s) || /^\s|\s$/.test(s) || /^["']/.test(s) ? JSON.stringify(s) : s;
|
||||
|
||||
export function writeFrontmatter(fields) {
|
||||
const lines = ['---'];
|
||||
for (const [key, value] of Object.entries(fields)) {
|
||||
const s = String(value);
|
||||
// Siter naar verdien inneholder '#'/':' eller har kant-whitespace, slik at
|
||||
// round-trip via parseFrontmatter bevarer den eksakt (jf. siter-#-regelen).
|
||||
const needsQuote = /[#:]/.test(s) || /^\s|\s$/.test(s) || /^["']/.test(s);
|
||||
lines.push(`${key}: ${needsQuote ? JSON.stringify(s) : s}`);
|
||||
// Additiv array-gren (Step 3): emit OKF multi-linje list-verdi (f.eks.
|
||||
// `tags`) som `key:\n - item`. Lese-siden er uendret -- parseFrontmatter.
|
||||
// get() returnerer fortsatt null for list-keys. Skalar-grenen under er
|
||||
// bevart bit-for-bit (kun loftet ut til quoteIfNeeded, samme regel).
|
||||
if (Array.isArray(value)) {
|
||||
lines.push(`${key}:`);
|
||||
for (const item of value) {
|
||||
lines.push(` - ${quoteIfNeeded(String(item))}`);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
lines.push(`${key}: ${quoteIfNeeded(String(value))}`);
|
||||
}
|
||||
lines.push('---');
|
||||
return lines.join('\n') + '\n';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue