const yamlKvRegex = /^\s*(\w+):\s*(.*)/; const yamlListItemRegex = /^\s*-\s+(.+)/; /** * Cheap YAML parser to determine tags (ugly, regex based but fast) * @param yamlText * @returns */ export function determineTags(yamlText: string): string[] { const lines = yamlText.split("\n"); let inTagsSection = false; const tags: string[] = []; for (const line of lines) { const yamlKv = yamlKvRegex.exec(line); if (yamlKv) { const [key, value] = yamlKv.slice(1); // Looking for a 'tags' key if (key === "tags") { inTagsSection = true; // 'template' there? Yay! if (value) { tags.push(...value.split(/,\s*/)); } } else { inTagsSection = false; } } const yamlListem = yamlListItemRegex.exec(line); if (yamlListem && inTagsSection) { tags.push(yamlListem[1]); } } return tags; }