feat(omo-codex): batch 21 (3 files)
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
const PRODUCT_NAME = "LazyCodex";
|
||||
|
||||
const WORD_OVERRIDES = new Map([
|
||||
["lsp", "LSP"],
|
||||
["ulw-loop", "Ulw-Loop"],
|
||||
]);
|
||||
|
||||
export function formatLazyCodexHookStatusMessage(version, label) {
|
||||
return `${PRODUCT_NAME}(${normalizeVersion(version)}): ${normalizeLazyCodexHookStatusLabel(label)}`;
|
||||
}
|
||||
|
||||
export function normalizeLazyCodexHookStatusLabel(label) {
|
||||
const parsed = parseLazyCodexHookStatusMessage(label);
|
||||
const rawLabel = parsed === null ? label : parsed.label;
|
||||
const normalized = rawLabel.replace(/\bOMO\b/gi, " ").replace(/\s+/g, " ").trim();
|
||||
if (normalized.length === 0) return "";
|
||||
return normalized
|
||||
.split(" ")
|
||||
.map(formatWord)
|
||||
.join(" ");
|
||||
}
|
||||
|
||||
export function parseLazyCodexHookStatusMessage(message) {
|
||||
const match = /^LazyCodex\(([^)]+)\):\s+(.+)$/.exec(message.trim());
|
||||
if (match === null) return null;
|
||||
const [, version, label] = match;
|
||||
return { version, label };
|
||||
}
|
||||
|
||||
function normalizeVersion(version) {
|
||||
const normalized = version.trim();
|
||||
return normalized.length === 0 ? "local" : normalized;
|
||||
}
|
||||
|
||||
function formatWord(word) {
|
||||
const lower = word.toLowerCase();
|
||||
const override = WORD_OVERRIDES.get(lower);
|
||||
if (override !== undefined) return override;
|
||||
if (word.includes("-")) {
|
||||
return word
|
||||
.split("-")
|
||||
.map(formatWord)
|
||||
.join("-");
|
||||
}
|
||||
return `${lower.slice(0, 1).toUpperCase()}${lower.slice(1)}`;
|
||||
}
|
||||
Reference in New Issue
Block a user