Files
brain/tools/secretary-hookutil.mjs
T

28 lines
1.4 KiB
JavaScript

// Чистые утилиты для тонких переходников секретаря.
/** Проверка пригодности файла-хода перед записью ссылок: UTF-8, без BOM, непусто. */
export function verifyEncoding(content) {
if (typeof content !== 'string' || content.length === 0) return { ok: false, reason: 'empty' };
if (content.charCodeAt(0) === 0xFEFF) return { ok: false, reason: 'BOM' };
return { ok: true, reason: 'utf8' };
}
/** Провенанс-метка из номеров ходов: [7,12] → "[→7, →12]". */
export function buildStepLinks(turns) {
const arr = Array.isArray(turns) ? turns.filter((t) => t != null) : [];
if (!arr.length) return '';
return `[${arr.map((t) => `${t}`).join(', ')}]`;
}
/** Период нарезки из состояния флажка и текущего хода. */
export function computePeriod(flagState = {}, currentTurn = 0) {
const from = Number.isInteger(flagState.startedAtTurn) ? flagState.startedAtTurn : 0;
return { from, to: currentTurn };
}
/** Оглавление дел как подсказка для старта сессии. */
export function renderIndexContext(indexMd) {
const body = typeof indexMd === 'string' && indexMd.trim() ? indexMd.trim() : '(дел пока нет)';
return `Открытые дела (протоколы секретаря):\n${body}`;
}