lens-content-processor 0.25.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import type { ContentError, Section } from '../index.js';
1
+ import type { ContentError, Section } from "../index.js";
2
2
  export interface ResolveResult {
3
3
  content: string;
4
4
  errors: ContentError[];
@@ -1,10 +1,10 @@
1
- import { resolveWikilinkPath, findFileWithExtension, stripMdSuffix } from '../parser/wikilink.js';
2
- import { parseFrontmatter } from '../parser/frontmatter.js';
1
+ import { resolveWikilinkPath, findFileWithExtension, stripMdSuffix, } from "../parser/wikilink.js";
2
+ import { parseFrontmatter } from "../parser/frontmatter.js";
3
3
  // The (?<!::card) lookbehind handles only the bare `::card[[..]]` form.
4
4
  // `::card{attr}[[..]]` slips past it; safe because CARD_LINK_RE runs first
5
5
  // and consumes the full match, but if that order ever changes, this regex
6
6
  // would misinterpret the [[..]] portion of a card link as a wikilink.
7
- const INLINE_WIKILINK_RE = /(?<!!)(?<!::card)(\[\[([^\]|]+)(?:\|([^\]]+))?\]\])/g;
7
+ const INLINE_WIKILINK_RE = /(?<!\\)(?<!!)(?<!::card)(\[\[([^\]|]+)(?:\|([^\]]+))?\]\])/g;
8
8
  // Captures both ::card{attr}[[path|alias]] and ::card[[path|alias]]{attr} forms.
9
9
  // Group 1: pre-bracket attr (optional)
10
10
  // Group 2: target path
@@ -26,15 +26,15 @@ export function resolveTextLinks(content, sourcePath, files) {
26
26
  file: sourcePath,
27
27
  line: 0,
28
28
  message: `Card link target not found: ${path}`,
29
- severity: 'warning',
29
+ severity: "warning",
30
30
  });
31
31
  return fullMatch;
32
32
  }
33
33
  const fileContent = files.get(filePath);
34
34
  const fm = parseFrontmatter(fileContent, filePath);
35
- const isModule = filePath.toLowerCase().includes('modules/');
35
+ const isModule = filePath.toLowerCase().includes("modules/");
36
36
  const cardData = {
37
- targetType: isModule ? 'module' : 'lens',
37
+ targetType: isModule ? "module" : "lens",
38
38
  title: fm.frontmatter.title || fileNameToTitle(filePath),
39
39
  // Original wikilink path the author wrote — kept so validators can
40
40
  // echo the directive back in suggestions (e.g. "add {allow-external}
@@ -42,7 +42,8 @@ export function resolveTextLinks(content, sourcePath, files) {
42
42
  targetPath: path,
43
43
  };
44
44
  if (isModule) {
45
- cardData.slug = fm.frontmatter.slug || fileNameToSlug(filePath);
45
+ cardData.slug =
46
+ fm.frontmatter.slug || fileNameToSlug(filePath);
46
47
  }
47
48
  else {
48
49
  cardData.contentId = fm.frontmatter.id || null;
@@ -50,16 +51,40 @@ export function resolveTextLinks(content, sourcePath, files) {
50
51
  cardData.moduleSlug = null;
51
52
  }
52
53
  // Parse attributes from either pre- or post-bracket form
53
- const attr = (preAttr || postAttr || '').trim();
54
- if (attr === 'allow-external') {
54
+ const attr = (preAttr || postAttr || "").trim();
55
+ if (attr === "allow-external") {
55
56
  cardData.allowExternal = true;
56
57
  }
57
- const json = JSON.stringify(cardData).replace(/'/g, '&#39;');
58
+ const json = JSON.stringify(cardData).replace(/'/g, "&#39;");
58
59
  return `<div data-lens-card='${json}'></div>`;
59
60
  });
60
61
  // Second pass: resolve inline wikilinks
61
62
  const resolved = processed.replace(INLINE_WIKILINK_RE, (fullMatch, _outer, rawPath, pipeDisplay) => {
62
63
  const path = rawPath.trim();
64
+ // Obsidian-compatible links to a heading or block marker in this Lens.
65
+ // Keep these as a private scheme: the renderer scrolls inside the current
66
+ // Lens instead of treating the URL hash as module navigation.
67
+ if (path.startsWith("#^")) {
68
+ const blockId = path.slice(2).trim();
69
+ if (!/^[A-Za-z0-9-]+$/.test(blockId)) {
70
+ errors.push({
71
+ file: sourcePath,
72
+ line: 0,
73
+ message: `Invalid block link: ${path}. Use letters, numbers, and dashes.`,
74
+ severity: "warning",
75
+ });
76
+ return fullMatch;
77
+ }
78
+ const display = pipeDisplay?.trim() || blockId;
79
+ return `[${display}](anchor:block:${encodeURIComponent(blockId)})`;
80
+ }
81
+ if (path.startsWith("#")) {
82
+ const heading = path.slice(1).trim();
83
+ if (!heading)
84
+ return fullMatch;
85
+ const display = pipeDisplay?.trim() || heading;
86
+ return `[${display}](anchor:heading:${encodeURIComponent(heading)})`;
87
+ }
63
88
  const resolvedPath = resolveWikilinkPath(path, sourcePath);
64
89
  const filePath = findFileWithExtension(resolvedPath, files);
65
90
  if (!filePath) {
@@ -67,14 +92,14 @@ export function resolveTextLinks(content, sourcePath, files) {
67
92
  file: sourcePath,
68
93
  line: 0,
69
94
  message: `Wikilink target not found: ${path}`,
70
- severity: 'warning',
95
+ severity: "warning",
71
96
  });
72
97
  return fullMatch;
73
98
  }
74
99
  const fileContent = files.get(filePath);
75
100
  const fm = parseFrontmatter(fileContent, filePath);
76
- const isModule = filePath.toLowerCase().includes('modules/');
77
- const isLens = filePath.toLowerCase().includes('lenses/');
101
+ const isModule = filePath.toLowerCase().includes("modules/");
102
+ const isLens = filePath.toLowerCase().includes("lenses/");
78
103
  if (isModule) {
79
104
  const slug = fm.frontmatter.slug || fileNameToSlug(filePath);
80
105
  const title = fm.frontmatter.title || fileNameToTitle(filePath);
@@ -88,7 +113,7 @@ export function resolveTextLinks(content, sourcePath, files) {
88
113
  file: sourcePath,
89
114
  line: 0,
90
115
  message: `Lens has no id in frontmatter: ${path}`,
91
- severity: 'warning',
116
+ severity: "warning",
92
117
  });
93
118
  return fullMatch;
94
119
  }
@@ -101,15 +126,15 @@ export function resolveTextLinks(content, sourcePath, files) {
101
126
  return { content: resolved, errors };
102
127
  }
103
128
  function fileNameToTitle(filePath) {
104
- const parts = filePath.split('/');
129
+ const parts = filePath.split("/");
105
130
  const filename = parts[parts.length - 1];
106
- return filename.replace(/\.md$/, '');
131
+ return filename.replace(/\.md$/, "");
107
132
  }
108
133
  function fileNameToSlug(filePath) {
109
134
  return fileNameToTitle(filePath)
110
135
  .toLowerCase()
111
- .replace(/[^a-z0-9]+/g, '-')
112
- .replace(/^-|-$/g, '');
136
+ .replace(/[^a-z0-9]+/g, "-")
137
+ .replace(/^-|-$/g, "");
113
138
  }
114
139
  const CARD_HTML_RE = /(<div data-lens-card=')([^']+)('><\/div>)/g;
115
140
  /**
@@ -125,21 +150,21 @@ const CARD_HTML_RE = /(<div data-lens-card=')([^']+)('><\/div>)/g;
125
150
  export function populateCardModuleSlugs(sections, contentIdToModuleSlug) {
126
151
  for (const section of sections) {
127
152
  for (const seg of section.segments) {
128
- if (seg.type !== 'text')
153
+ if (seg.type !== "text")
129
154
  continue;
130
- if (!seg.content.includes('data-lens-card='))
155
+ if (!seg.content.includes("data-lens-card="))
131
156
  continue;
132
157
  seg.content = seg.content.replace(CARD_HTML_RE, (_match, prefix, jsonStr, suffix) => {
133
158
  try {
134
159
  const data = JSON.parse(jsonStr.replace(/&#39;/g, "'"));
135
- if (data.targetType !== 'lens' || !data.contentId) {
160
+ if (data.targetType !== "lens" || !data.contentId) {
136
161
  return `${prefix}${jsonStr}${suffix}`;
137
162
  }
138
163
  const moduleSlug = contentIdToModuleSlug.get(data.contentId);
139
164
  if (moduleSlug) {
140
165
  data.moduleSlug = moduleSlug;
141
166
  }
142
- const newJson = JSON.stringify(data).replace(/'/g, '&#39;');
167
+ const newJson = JSON.stringify(data).replace(/'/g, "&#39;");
143
168
  return `${prefix}${newJson}${suffix}`;
144
169
  }
145
170
  catch {
@@ -159,9 +184,9 @@ const INLINE_LENS_RE = /\[([^\]]+)\]\(lens:([a-f0-9-]+)\)/g;
159
184
  export function resolveInlineLensModuleSlugs(sections, contentIdToModuleSlug) {
160
185
  for (const section of sections) {
161
186
  for (const seg of section.segments) {
162
- if (seg.type !== 'text')
187
+ if (seg.type !== "text")
163
188
  continue;
164
- if (!seg.content.includes('lens:'))
189
+ if (!seg.content.includes("lens:"))
165
190
  continue;
166
191
  seg.content = seg.content.replace(INLINE_LENS_RE, (match, display, contentId) => {
167
192
  const moduleSlug = contentIdToModuleSlug.get(contentId);
@@ -181,8 +206,12 @@ export function enrichCardLinks(sections) {
181
206
  continue;
182
207
  const enrichment = {};
183
208
  // Duration from wordCount + videoDurationSeconds
184
- const readingMin = section.wordCount ? Math.ceil(section.wordCount / 200) : 0;
185
- const videoMin = section.videoDurationSeconds ? Math.ceil(section.videoDurationSeconds / 60) : 0;
209
+ const readingMin = section.wordCount
210
+ ? Math.ceil(section.wordCount / 200)
211
+ : 0;
212
+ const videoMin = section.videoDurationSeconds
213
+ ? Math.ceil(section.videoDurationSeconds / 60)
214
+ : 0;
186
215
  const totalMin = readingMin + videoMin;
187
216
  if (totalMin > 0) {
188
217
  enrichment.duration = `${totalMin} min`;
@@ -191,14 +220,14 @@ export function enrichCardLinks(sections) {
191
220
  const seen = new Set();
192
221
  const names = [];
193
222
  for (const seg of section.segments) {
194
- if (seg.type === 'article' && 'author' in seg && seg.author) {
223
+ if (seg.type === "article" && "author" in seg && seg.author) {
195
224
  const name = seg.author;
196
225
  if (!seen.has(name)) {
197
226
  seen.add(name);
198
227
  names.push(name);
199
228
  }
200
229
  }
201
- else if (seg.type === 'video' && 'channel' in seg && seg.channel) {
230
+ else if (seg.type === "video" && "channel" in seg && seg.channel) {
202
231
  const name = seg.channel;
203
232
  if (!seen.has(name)) {
204
233
  seen.add(name);
@@ -207,7 +236,7 @@ export function enrichCardLinks(sections) {
207
236
  }
208
237
  }
209
238
  if (names.length > 0) {
210
- enrichment.attribution = names.join(' & ');
239
+ enrichment.attribution = names.join(" & ");
211
240
  }
212
241
  // Display type
213
242
  if (section.displayType) {
@@ -218,9 +247,9 @@ export function enrichCardLinks(sections) {
218
247
  // Enrich card HTML blocks in text segments
219
248
  for (const section of sections) {
220
249
  for (const seg of section.segments) {
221
- if (seg.type !== 'text')
250
+ if (seg.type !== "text")
222
251
  continue;
223
- if (!seg.content.includes('data-lens-card='))
252
+ if (!seg.content.includes("data-lens-card="))
224
253
  continue;
225
254
  seg.content = seg.content.replace(CARD_HTML_RE, (_match, prefix, jsonStr, suffix) => {
226
255
  try {
@@ -238,7 +267,7 @@ export function enrichCardLinks(sections) {
238
267
  data.attribution = enrichment.attribution;
239
268
  if (enrichment.displayType && !data.displayType)
240
269
  data.displayType = enrichment.displayType;
241
- const newJson = JSON.stringify(data).replace(/'/g, '&#39;');
270
+ const newJson = JSON.stringify(data).replace(/'/g, "&#39;");
242
271
  return `${prefix}${newJson}${suffix}`;
243
272
  }
244
273
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-text-links.js","sourceRoot":"","sources":["../../src/flattener/resolve-text-links.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve-text-links.js","sourceRoot":"","sources":["../../src/flattener/resolve-text-links.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ContentError } from '../index.js';
1
+ import type { ContentError } from "../index.js";
2
2
  export interface ParsedSection {
3
3
  type: string;
4
4
  title: string;
@@ -8,7 +8,7 @@ export interface ParsedSection {
8
8
  line: number;
9
9
  level: number;
10
10
  children?: ParsedSection[];
11
- inlineLens?: import('./lens.js').ParsedLens;
11
+ inlineLens?: import("./lens.js").ParsedLens;
12
12
  }
13
13
  export interface SectionsResult {
14
14
  sections: ParsedSection[];
@@ -1,10 +1,10 @@
1
- import { ALL_KNOWN_FIELDS } from '../content-schema.js';
2
- import { levenshtein } from '../validator/field-typos.js';
1
+ import { ALL_KNOWN_FIELDS } from "../content-schema.js";
2
+ import { levenshtein } from "../validator/field-typos.js";
3
3
  // Valid section types per file type (exported for use by other parsers)
4
- export const MODULE_SECTION_TYPES = new Set(['learning outcome', 'lens']);
5
- export const LO_SECTION_TYPES = new Set(['lens', 'test']);
4
+ export const MODULE_SECTION_TYPES = new Set(["learning outcome", "lens"]);
5
+ export const LO_SECTION_TYPES = new Set(["lens", "test"]);
6
6
  // Legacy: Lens H3 section types (no longer used — lenses are now flat H4 segments)
7
- export const LENS_SECTION_TYPES = new Set(['page', 'article', 'video']);
7
+ export const LENS_SECTION_TYPES = new Set(["page", "article", "video"]);
8
8
  // All known structural header types (sections + segments) for markdown heading detection
9
9
  // NOTE: deliberately does NOT include the survey-only segment types
10
10
  // (rating/choice). Real survey headers are consumed as section boundaries
@@ -13,17 +13,30 @@ export const LENS_SECTION_TYPES = new Set(['page', 'article', 'video']);
13
13
  // headings like "## Rating" inside content:: fields.
14
14
  const ALL_STRUCTURAL_TYPES = new Set([
15
15
  // Section types
16
- 'learning outcome', 'lens', 'test', 'module', 'meeting', 'article', 'video',
16
+ "learning outcome",
17
+ "lens",
18
+ "test",
19
+ "module",
20
+ "meeting",
21
+ "article",
22
+ "video",
17
23
  // Segment types
18
- 'text', 'chat', 'question', 'roleplay',
24
+ "text",
25
+ "chat",
26
+ "question",
27
+ "roleplay",
19
28
  ]);
20
29
  // Fields that commonly contain markdown with headings
21
- const MARKDOWN_CONTENT_FIELDS = new Set(['content', 'instructions', 'ai-instructions']);
30
+ const MARKDOWN_CONTENT_FIELDS = new Set([
31
+ "content",
32
+ "instructions",
33
+ "ai-instructions",
34
+ ]);
22
35
  // Map input section names to output types for Lens files
23
36
  export const LENS_OUTPUT_TYPE = {
24
- 'page': 'page',
25
- 'article': 'lens-article',
26
- 'video': 'lens-video',
37
+ page: "page",
38
+ article: "lens-article",
39
+ video: "lens-video",
27
40
  };
28
41
  /**
29
42
  * Parse sections from markdown content based on header hierarchy.
@@ -35,11 +48,11 @@ export const LENS_OUTPUT_TYPE = {
35
48
  * @param flat - When true, all matching headers are siblings (for segments).
36
49
  * When false, deeper headers nest inside preceding siblings (for sections).
37
50
  */
38
- export function parseSections(content, parentLevel, validTypes, file = '', flat = false) {
51
+ export function parseSections(content, parentLevel, validTypes, file = "", flat = false) {
39
52
  const minLevel = parentLevel + 1;
40
53
  // Match any header from minLevel to 6 with named capture groups
41
- const HEADER_PATTERN = new RegExp(`^(?<hashes>#{${minLevel},6})\\s+(?<type>[^:]+?)(?:\\:\\s*(?<title>.*?))?\\s*$`, 'i');
42
- const lines = content.split('\n');
54
+ const HEADER_PATTERN = new RegExp(`^(?<hashes>#{${minLevel},6})\\s+(?<type>[^:]+?)(?:\\:\\s*(?<title>.*?))?\\s*$`, "i");
55
+ const lines = content.split("\n");
43
56
  const sections = [];
44
57
  const errors = [];
45
58
  let currentSection = null;
@@ -49,13 +62,13 @@ export function parseSections(content, parentLevel, validTypes, file = '', flat
49
62
  function finalizeSection() {
50
63
  if (!currentSection)
51
64
  return;
52
- currentSection.body = currentBody.join('\n');
65
+ currentSection.body = currentBody.join("\n");
53
66
  const { warnings } = parseFields(currentSection, file);
54
67
  errors.push(...warnings);
55
68
  // Submodule sections get recursive children parsing
56
- if (currentSection.type === 'submodule') {
69
+ if (currentSection.type === "submodule") {
57
70
  const childValidTypes = new Set([...validTypes]);
58
- childValidTypes.delete('submodule'); // No nesting
71
+ childValidTypes.delete("submodule"); // No nesting
59
72
  const childResult = parseSections(currentSection.body, currentSection.level, childValidTypes, file);
60
73
  currentSection.children = childResult.sections;
61
74
  errors.push(...childResult.errors);
@@ -71,19 +84,24 @@ export function parseSections(content, parentLevel, validTypes, file = '', flat
71
84
  const headerLevel = hashes.length;
72
85
  const rawType = headerMatch.groups.type.trim();
73
86
  const normalizedType = rawType.toLowerCase();
74
- const title = (headerMatch.groups.title ?? '').trim();
87
+ const title = (headerMatch.groups.title ?? "").trim();
75
88
  // Check if this type is valid for the current context
76
89
  if (!validTypes.has(normalizedType)) {
77
90
  // Only error for unknown types at sibling level (not deeper body content)
78
- const wouldBeSibling = flat || currentSiblingLevel === 0 || headerLevel <= currentSiblingLevel;
91
+ const wouldBeSibling = flat ||
92
+ currentSiblingLevel === 0 ||
93
+ headerLevel <= currentSiblingLevel;
79
94
  if (wouldBeSibling) {
80
- const capitalized = [...validTypes].map(t => t.split(' ').map(w => w[0].toUpperCase() + w.slice(1)).join(' '));
95
+ const capitalized = [...validTypes].map((t) => t
96
+ .split(" ")
97
+ .map((w) => w[0].toUpperCase() + w.slice(1))
98
+ .join(" "));
81
99
  errors.push({
82
100
  file,
83
101
  line: lineNum,
84
102
  message: `Unknown section type: ${rawType}`,
85
- suggestion: `Valid types: ${capitalized.join(', ')}`,
86
- severity: 'error',
103
+ suggestion: `Valid types: ${capitalized.join(", ")}`,
104
+ severity: "error",
87
105
  });
88
106
  }
89
107
  // Treat as body content of current section
@@ -94,7 +112,9 @@ export function parseSections(content, parentLevel, validTypes, file = '', flat
94
112
  }
95
113
  // Sibling boundary rule (hierarchical mode only):
96
114
  // Deeper headers go into the preceding sibling's body
97
- if (!flat && currentSiblingLevel > 0 && headerLevel > currentSiblingLevel) {
115
+ if (!flat &&
116
+ currentSiblingLevel > 0 &&
117
+ headerLevel > currentSiblingLevel) {
98
118
  currentBody.push(line);
99
119
  continue;
100
120
  }
@@ -102,11 +122,11 @@ export function parseSections(content, parentLevel, validTypes, file = '', flat
102
122
  finalizeSection();
103
123
  currentSiblingLevel = headerLevel;
104
124
  currentSection = {
105
- type: normalizedType.replaceAll(' ', '-'),
125
+ type: normalizedType.replaceAll(" ", "-"),
106
126
  title,
107
127
  rawType,
108
128
  fields: {},
109
- body: '',
129
+ body: "",
110
130
  line: lineNum,
111
131
  level: headerLevel,
112
132
  };
@@ -125,9 +145,9 @@ export function parseSections(content, parentLevel, validTypes, file = '', flat
125
145
  errors.push({
126
146
  file,
127
147
  line: lineNum,
128
- message: 'Content found before first section header — this text will be ignored',
129
- suggestion: 'Move this text into a section, or remove it',
130
- severity: 'error',
148
+ message: "Content found before first section header — this text will be ignored",
149
+ suggestion: "Move this text into a section, or remove it",
150
+ severity: "error",
131
151
  });
132
152
  }
133
153
  }
@@ -139,7 +159,7 @@ export function parseSections(content, parentLevel, validTypes, file = '', flat
139
159
  }
140
160
  const FIELD_PATTERN = /^([\w-]+)::\s*(.*)$/;
141
161
  function parseFields(section, file) {
142
- const lines = section.body.split('\n');
162
+ const lines = section.body.split("\n");
143
163
  const warnings = [];
144
164
  const seenFields = new Set();
145
165
  let currentField = null;
@@ -156,23 +176,30 @@ function parseFields(section, file) {
156
176
  if (currentField && MARKDOWN_CONTENT_FIELDS.has(currentField)) {
157
177
  const headingText = headerMatch[2].trim();
158
178
  // Extract type word: "Text", "Chat: title", "Article-excerpt" etc.
159
- const typeWord = headingText.replace(/:.*$/, '').trim().toLowerCase();
179
+ const typeWord = headingText.replace(/:.*$/, "").trim().toLowerCase();
160
180
  // Also check if it's a typo of a structural type (levenshtein ≤ 2)
161
- const isTypoOfStructural = [...ALL_STRUCTURAL_TYPES].some(st => levenshtein(typeWord, st) <= 2);
181
+ const isTypoOfStructural = [...ALL_STRUCTURAL_TYPES].some((st) => levenshtein(typeWord, st) <= 2);
162
182
  if (!ALL_STRUCTURAL_TYPES.has(typeWord) && !isTypoOfStructural) {
183
+ if (headerMatch[1].length >= 2) {
184
+ // H2+ Markdown headings belong to the active markdown field. H1
185
+ // remains a document boundary because modules and lenses use it
186
+ // for top-level structure.
187
+ currentValue.push(line);
188
+ continue;
189
+ }
163
190
  const hashes = headerMatch[1];
164
191
  warnings.push({
165
192
  file,
166
193
  line: lineNum,
167
194
  message: `'${hashes} ${headingText}' looks like a Markdown heading inside ${currentField}:: field`,
168
195
  suggestion: `Escape it as '!${hashes} ${headingText}' so it's treated as content, not a section boundary`,
169
- severity: 'warning',
196
+ severity: "warning",
170
197
  });
171
198
  }
172
199
  }
173
200
  // Save current field if any
174
201
  if (currentField) {
175
- section.fields[currentField] = currentValue.join('\n').trim();
202
+ section.fields[currentField] = currentValue.join("\n").trim();
176
203
  currentField = null;
177
204
  currentValue = [];
178
205
  }
@@ -185,7 +212,7 @@ function parseFields(section, file) {
185
212
  if (match) {
186
213
  // Save previous field if any
187
214
  if (currentField) {
188
- section.fields[currentField] = currentValue.join('\n').trim();
215
+ section.fields[currentField] = currentValue.join("\n").trim();
189
216
  }
190
217
  currentField = match[1];
191
218
  const inlineValue = match[2].trim();
@@ -197,7 +224,7 @@ function parseFields(section, file) {
197
224
  line: lineNum,
198
225
  message: `Duplicate field '${currentField}' (previous value will be overwritten)`,
199
226
  suggestion: `Remove the duplicate '${currentField}::' definition`,
200
- severity: 'error',
227
+ severity: "error",
201
228
  });
202
229
  }
203
230
  seenFields.add(currentField);
@@ -210,38 +237,42 @@ function parseFields(section, file) {
210
237
  // Not inside a field — check for single-colon that should be double-colon
211
238
  // Only suggest field:: if the word is a known field name
212
239
  const singleColonMatch = line.match(/^(\w+):\s+(.*)$/);
213
- if (singleColonMatch && !line.match(/^https?:/) && ALL_KNOWN_FIELDS.includes(singleColonMatch[1])) {
240
+ if (singleColonMatch &&
241
+ !line.match(/^https?:/) &&
242
+ ALL_KNOWN_FIELDS.includes(singleColonMatch[1])) {
214
243
  warnings.push({
215
244
  file,
216
245
  line: lineNum,
217
246
  message: `Found '${singleColonMatch[1]}:' with single colon — did you mean '${singleColonMatch[1]}::'?`,
218
247
  suggestion: `Change '${singleColonMatch[1]}:' to '${singleColonMatch[1]}::' (double colon)`,
219
- severity: 'error',
248
+ severity: "error",
220
249
  });
221
250
  }
222
251
  else if (line.trim() && !freeTextWarned) {
223
252
  freeTextWarned = true;
224
- const preview = line.trim().length > 60 ? line.trim().slice(0, 60) + '...' : line.trim();
253
+ const preview = line.trim().length > 60
254
+ ? line.trim().slice(0, 60) + "..."
255
+ : line.trim();
225
256
  warnings.push({
226
257
  file,
227
258
  line: lineNum,
228
259
  message: `Text outside of a field:: definition will be ignored: "${preview}"`,
229
- suggestion: 'Place this text inside a field (e.g., content:: your text), or remove it',
230
- severity: 'error',
260
+ suggestion: "Place this text inside a field (e.g., content:: your text), or remove it",
261
+ severity: "error",
231
262
  });
232
263
  }
233
264
  }
234
265
  }
235
266
  // Save final field
236
267
  if (currentField) {
237
- section.fields[currentField] = currentValue.join('\n').trim();
268
+ section.fields[currentField] = currentValue.join("\n").trim();
238
269
  }
239
- // Unescape \# → # at start of lines in markdown content fields.
240
- // Authors use \## to prevent the parser from treating ## as a structural header;
241
- // the escape must be stripped before the content reaches consumers (e.g. ReactMarkdown).
270
+ // Unescape \# or !# → # at start of lines in markdown content fields.
271
+ // Both forms prevent structural-header parsing. The validator recommends !#;
272
+ // \# remains supported for existing content.
242
273
  for (const field of MARKDOWN_CONTENT_FIELDS) {
243
274
  if (section.fields[field]) {
244
- section.fields[field] = section.fields[field].replace(/^\\(#+)/gm, '$1');
275
+ section.fields[field] = section.fields[field].replace(/^[\\!](#+)/gm, "$1");
245
276
  }
246
277
  }
247
278
  return { warnings };
@@ -1 +1 @@
1
- {"version":3,"file":"sections.js","sourceRoot":"","sources":["../../src/parser/sections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sections.js","sourceRoot":"","sources":["../../src/parser/sections.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ContentError } from '../index.js';
1
+ import type { ContentError } from "../index.js";
2
2
  /**
3
3
  * Main validator for article body content.
4
4
  * Checks for unclosed containers, unsupported names, empty containers,
@@ -6,7 +6,7 @@ import type { ContentError } from '../index.js';
6
6
  */
7
7
  export declare function validateDirectives(body: string, file: string, bodyStartLine: number): ContentError[];
8
8
  /**
9
- * Lightweight check for directives in non-article content (e.g., lens text segments).
10
- * Returns a single warning per match since directives won't render outside articles.
9
+ * Lightweight check for article-only directives in lens-authored text segments.
10
+ * `callout` is intentionally supported by both renderers.
11
11
  */
12
12
  export declare function detectDirectivesInNonArticle(content: string, file: string, line: number): ContentError[];
@@ -1,14 +1,35 @@
1
- import { levenshtein } from './field-typos.js';
1
+ import { levenshtein } from "./field-typos.js";
2
2
  const SUPPORTED_DIRECTIVES = {
3
3
  note: { container: true, leaf: true, text: true, open: false },
4
+ hide: { container: true, leaf: false, text: true, open: false },
5
+ // Legacy alias. Keep existing content working, but do not advertise it.
4
6
  collapse: { container: true, leaf: false, text: true, open: false },
5
7
  footnote: { container: false, leaf: true, text: true, open: false },
8
+ callout: { container: true, leaf: false, text: false, open: false },
6
9
  };
10
+ const LEGACY_DIRECTIVE_ALIASES = new Map([["collapse", "hide"]]);
11
+ function supportedDirectiveNames(form) {
12
+ return Object.entries(SUPPORTED_DIRECTIVES)
13
+ .filter(([name, support]) => !LEGACY_DIRECTIVE_ALIASES.has(name) && support[form])
14
+ .map(([name]) => name)
15
+ .join(", ");
16
+ }
7
17
  const UNSUPPORTED_NAMES = new Set([
8
- 'warning', 'info', 'tip', 'caution', 'important',
9
- 'danger', 'details', 'summary', 'aside', 'callout', 'admonition',
18
+ "warning",
19
+ "info",
20
+ "tip",
21
+ "caution",
22
+ "important",
23
+ "danger",
24
+ "details",
25
+ "summary",
26
+ "aside",
27
+ "admonition",
28
+ ]);
29
+ const ALL_DIRECTIVE_NAMES = new Set([
30
+ ...Object.keys(SUPPORTED_DIRECTIVES),
31
+ ...UNSUPPORTED_NAMES,
10
32
  ]);
11
- const ALL_DIRECTIVE_NAMES = new Set([...Object.keys(SUPPORTED_DIRECTIVES), ...UNSUPPORTED_NAMES]);
12
33
  /**
13
34
  * Check if a name is a near-miss typo of a supported directive name.
14
35
  * Returns the closest match if levenshtein distance ≤ 2, else undefined.
@@ -20,15 +41,15 @@ function findNearMissDirective(name) {
20
41
  const dist = levenshtein(name.toLowerCase(), supported);
21
42
  if (dist > 0 && dist <= 2 && dist < bestDist) {
22
43
  bestDist = dist;
23
- bestMatch = supported;
44
+ bestMatch = LEGACY_DIRECTIVE_ALIASES.get(supported) ?? supported;
24
45
  }
25
46
  }
26
47
  return bestMatch;
27
48
  }
28
49
  // Regex patterns
29
- const CONTAINER_OPEN = /^:::([\w-]+)(?:\{([^}]*)\})?/;
30
- const CONTAINER_CLOSE_BARE = /^:::\s*$/;
31
- const CONTAINER_CLOSE_ATTR = /^:::\s*\{([^}]*)\}/;
50
+ const CONTAINER_OPEN = /^(:{3,})([\w-]+)(?:\s*\{([^}]*)\})?/;
51
+ const CONTAINER_CLOSE_BARE = /^(:{3,})\s*$/;
52
+ const CONTAINER_CLOSE_ATTR = /^(:{3,})\s*\{([^}]*)\}/;
32
53
  const CODE_FENCE = /^(?:```|~~~)/;
33
54
  const LEAF_DIRECTIVE_PRE = /^::([\w-]+)(?:\{([^}]*)\})?\[/;
34
55
  const LEAF_DIRECTIVE_POST = /^::([\w-]+)\[[^\]]*\]\{([^}]*)\}/;
@@ -41,21 +62,21 @@ const TEXT_UNCLOSED = /(?:^|[^:]):([\w][\w-]*)(?:\{[^}]*\})?\[[^\]]*$/;
41
62
  * Check if an attribute value looks like a typo of "open".
42
63
  */
43
64
  function isOpenTypo(attr) {
44
- if (attr === 'open')
65
+ if (attr === "open")
45
66
  return false;
46
67
  if (!attr)
47
68
  return false;
48
69
  // Case-insensitive match
49
- if (attr.toLowerCase() === 'open')
70
+ if (attr.toLowerCase() === "open")
50
71
  return true;
51
72
  // Contains = (like open=true)
52
- if (attr.includes('=')) {
53
- const key = attr.split('=')[0];
54
- if (key.toLowerCase() === 'open')
73
+ if (attr.includes("=")) {
74
+ const key = attr.split("=")[0];
75
+ if (key.toLowerCase() === "open")
55
76
  return true;
56
77
  }
57
78
  // Levenshtein distance
58
- if (levenshtein(attr.toLowerCase(), 'open') <= 2)
79
+ if (levenshtein(attr.toLowerCase(), "open") <= 2)
59
80
  return true;
60
81
  return false;
61
82
  }
@@ -69,17 +90,66 @@ function checkAttribute(name, attr, file, line) {
69
90
  const info = SUPPORTED_DIRECTIVES[name];
70
91
  if (!info)
71
92
  return errors;
72
- if (attr === '') {
93
+ if (name === "callout") {
94
+ const tokens = [...attr.matchAll(/([\w-]+)\s*=\s*"([^"]*)"/g)];
95
+ const consumed = tokens.map((match) => match[0]).join(" ");
96
+ if (consumed.replace(/\s+/g, " ").trim() !== attr.replace(/\s+/g, " ").trim()) {
97
+ errors.push({
98
+ file,
99
+ line,
100
+ message: `Invalid callout attributes '{${attr}}'`,
101
+ suggestion: 'Use key="value" attributes: title, tone, or collapse',
102
+ severity: "error",
103
+ });
104
+ return errors;
105
+ }
106
+ const values = new Map(tokens.map((match) => [match[1], match[2]]));
107
+ const allowed = new Set(["title", "tone", "collapse"]);
108
+ for (const key of values.keys()) {
109
+ if (!allowed.has(key)) {
110
+ errors.push({
111
+ file,
112
+ line,
113
+ message: `Unrecognized callout attribute '${key}'`,
114
+ suggestion: "Use title, tone, or collapse",
115
+ severity: "warning",
116
+ });
117
+ }
118
+ }
119
+ const tone = values.get("tone");
120
+ if (tone &&
121
+ !["neutral", "blue", "green", "amber", "red", "purple"].includes(tone)) {
122
+ errors.push({
123
+ file,
124
+ line,
125
+ message: `Unrecognized callout tone '${tone}'`,
126
+ suggestion: "Use neutral, blue, green, amber, red, or purple",
127
+ severity: "error",
128
+ });
129
+ }
130
+ const collapse = values.get("collapse");
131
+ if (collapse && collapse !== "closed" && collapse !== "open") {
132
+ errors.push({
133
+ file,
134
+ line,
135
+ message: `Invalid callout collapse value '${collapse}'`,
136
+ suggestion: 'Use collapse="closed", collapse="open", or omit collapse',
137
+ severity: "error",
138
+ });
139
+ }
140
+ return errors;
141
+ }
142
+ if (attr === "") {
73
143
  errors.push({
74
144
  file,
75
145
  line,
76
146
  message: `Directive '${name}' has an empty attribute '{}'`,
77
- suggestion: 'Remove the empty braces, or use {open} to make the directive open by default',
78
- severity: 'warning',
147
+ suggestion: "Remove the empty braces, or use {open} to make the directive open by default",
148
+ severity: "warning",
79
149
  });
80
150
  return errors;
81
151
  }
82
- if (attr === 'open') {
152
+ if (attr === "open") {
83
153
  // Valid attribute — but check if this directive supports it
84
154
  if (!info.open) {
85
155
  errors.push({
@@ -87,7 +157,7 @@ function checkAttribute(name, attr, file, line) {
87
157
  line,
88
158
  message: `Directive '${name}' does not support {open}`,
89
159
  suggestion: `Remove {open} — '${name}' does not support the open attribute`,
90
- severity: 'warning',
160
+ severity: "warning",
91
161
  });
92
162
  }
93
163
  }
@@ -97,7 +167,7 @@ function checkAttribute(name, attr, file, line) {
97
167
  line,
98
168
  message: `Possible attribute typo '{${attr}}' on directive '${name}'`,
99
169
  suggestion: `Did you mean {open}?`,
100
- severity: 'warning',
170
+ severity: "warning",
101
171
  });
102
172
  }
103
173
  else {
@@ -106,8 +176,10 @@ function checkAttribute(name, attr, file, line) {
106
176
  file,
107
177
  line,
108
178
  message: `Unrecognized attribute '{${attr}}' on directive '${name}'`,
109
- suggestion: info.open ? `The only supported attribute is {open}` : `'${name}' does not support any attributes`,
110
- severity: 'warning',
179
+ suggestion: info.open
180
+ ? `The only supported attribute is {open}`
181
+ : `'${name}' does not support any attributes`,
182
+ severity: "warning",
111
183
  });
112
184
  }
113
185
  return errors;
@@ -119,7 +191,7 @@ function checkAttribute(name, attr, file, line) {
119
191
  */
120
192
  export function validateDirectives(body, file, bodyStartLine) {
121
193
  const errors = [];
122
- const lines = body.split('\n');
194
+ const lines = body.split("\n");
123
195
  const stack = [];
124
196
  let inCodeBlock = false;
125
197
  for (let i = 0; i < lines.length; i++) {
@@ -135,7 +207,7 @@ export function validateDirectives(body, file, bodyStartLine) {
135
207
  // Check container close with attribute (error: {open} on closing marker)
136
208
  const closeAttrMatch = line.match(CONTAINER_CLOSE_ATTR);
137
209
  if (closeAttrMatch) {
138
- const attrOnClose = closeAttrMatch[1];
210
+ const attrOnClose = closeAttrMatch[2];
139
211
  const top = stack.pop();
140
212
  if (top) {
141
213
  errors.push({
@@ -143,7 +215,7 @@ export function validateDirectives(body, file, bodyStartLine) {
143
215
  line: absLine,
144
216
  message: `Attribute {${attrOnClose}} on closing ':::' marker has no effect`,
145
217
  suggestion: `Move to opening marker: :::${top.name}{${attrOnClose}}`,
146
- severity: 'error',
218
+ severity: "error",
147
219
  });
148
220
  // Check empty container
149
221
  if (!top.hasContent) {
@@ -151,8 +223,8 @@ export function validateDirectives(body, file, bodyStartLine) {
151
223
  file,
152
224
  line: top.line,
153
225
  message: `Empty container directive ':::${top.name}' has no content`,
154
- suggestion: 'Add content between the opening and closing markers',
155
- severity: 'warning',
226
+ suggestion: "Add content between the opening and closing markers",
227
+ severity: "warning",
156
228
  });
157
229
  }
158
230
  }
@@ -166,8 +238,8 @@ export function validateDirectives(body, file, bodyStartLine) {
166
238
  file,
167
239
  line: top.line,
168
240
  message: `Empty container directive ':::${top.name}' has no content`,
169
- suggestion: 'Add content between the opening and closing markers',
170
- severity: 'warning',
241
+ suggestion: "Add content between the opening and closing markers",
242
+ severity: "warning",
171
243
  });
172
244
  }
173
245
  continue;
@@ -175,15 +247,16 @@ export function validateDirectives(body, file, bodyStartLine) {
175
247
  // Check container open
176
248
  const openMatch = line.match(CONTAINER_OPEN);
177
249
  if (openMatch) {
178
- const name = openMatch[1];
179
- const attr = openMatch[2];
250
+ const fenceLength = openMatch[1].length;
251
+ const name = openMatch[2];
252
+ const attr = openMatch[3];
180
253
  if (UNSUPPORTED_NAMES.has(name)) {
181
254
  errors.push({
182
255
  file,
183
256
  line: absLine,
184
257
  message: `Unsupported directive ':::${name}'`,
185
- suggestion: `Supported container directives: ${Object.entries(SUPPORTED_DIRECTIVES).filter(([, v]) => v.container).map(([k]) => k).join(', ')}`,
186
- severity: 'error',
258
+ suggestion: `Supported container directives: ${supportedDirectiveNames("container")}`,
259
+ severity: "error",
187
260
  });
188
261
  }
189
262
  else if (SUPPORTED_DIRECTIVES[name]) {
@@ -193,7 +266,7 @@ export function validateDirectives(body, file, bodyStartLine) {
193
266
  line: absLine,
194
267
  message: `Directive '${name}' does not support the container ':::' form`,
195
268
  suggestion: `Use the leaf form '::${name}[text]' or inline form ':${name}[text]' instead`,
196
- severity: 'error',
269
+ severity: "error",
197
270
  });
198
271
  }
199
272
  errors.push(...checkAttribute(name, attr, file, absLine));
@@ -205,12 +278,12 @@ export function validateDirectives(body, file, bodyStartLine) {
205
278
  file,
206
279
  line: absLine,
207
280
  message: `Unknown directive ':::${name}' — did you mean ':::${nearMiss}'?`,
208
- suggestion: `Supported container directives: ${Object.entries(SUPPORTED_DIRECTIVES).filter(([, v]) => v.container).map(([k]) => k).join(', ')}`,
209
- severity: 'error',
281
+ suggestion: `Supported container directives: ${supportedDirectiveNames("container")}`,
282
+ severity: "error",
210
283
  });
211
284
  }
212
285
  }
213
- stack.push({ name, line: absLine, hasContent: false });
286
+ stack.push({ name, line: absLine, hasContent: false, fenceLength });
214
287
  continue;
215
288
  }
216
289
  // Check leaf directive (::name[...)
@@ -218,13 +291,15 @@ export function validateDirectives(body, file, bodyStartLine) {
218
291
  const leafUnclosedMatch = line.match(LEAF_UNCLOSED);
219
292
  if (leafUnclosedMatch) {
220
293
  const name = leafUnclosedMatch[1];
221
- if (SUPPORTED_DIRECTIVES[name] || UNSUPPORTED_NAMES.has(name) || findNearMissDirective(name)) {
294
+ if (SUPPORTED_DIRECTIVES[name] ||
295
+ UNSUPPORTED_NAMES.has(name) ||
296
+ findNearMissDirective(name)) {
222
297
  errors.push({
223
298
  file,
224
299
  line: absLine,
225
300
  message: `Unclosed bracket in leaf directive '::${name}[' — missing closing ']'`,
226
301
  suggestion: `Add a closing bracket: ::${name}[content]`,
227
- severity: 'error',
302
+ severity: "error",
228
303
  });
229
304
  if (stack.length > 0) {
230
305
  stack[stack.length - 1].hasContent = true;
@@ -245,8 +320,8 @@ export function validateDirectives(body, file, bodyStartLine) {
245
320
  file,
246
321
  line: absLine,
247
322
  message: `Unsupported directive '::${name}'`,
248
- suggestion: `Supported leaf directives: ${Object.entries(SUPPORTED_DIRECTIVES).filter(([, v]) => v.leaf).map(([k]) => k).join(', ')}`,
249
- severity: 'error',
323
+ suggestion: `Supported leaf directives: ${supportedDirectiveNames("leaf")}`,
324
+ severity: "error",
250
325
  });
251
326
  }
252
327
  else if (SUPPORTED_DIRECTIVES[name]) {
@@ -256,7 +331,7 @@ export function validateDirectives(body, file, bodyStartLine) {
256
331
  line: absLine,
257
332
  message: `Directive '${name}' does not support the leaf '::' form`,
258
333
  suggestion: `Use the container form ':::${name}' or inline form ':${name}[text]' instead`,
259
- severity: 'warning',
334
+ severity: "warning",
260
335
  });
261
336
  }
262
337
  errors.push(...checkAttribute(name, attr, file, absLine));
@@ -268,8 +343,8 @@ export function validateDirectives(body, file, bodyStartLine) {
268
343
  file,
269
344
  line: absLine,
270
345
  message: `Unknown directive '::${name}' — did you mean '::${nearMiss}'?`,
271
- suggestion: `Supported leaf directives: ${Object.entries(SUPPORTED_DIRECTIVES).filter(([, v]) => v.leaf).map(([k]) => k).join(', ')}`,
272
- severity: 'error',
346
+ suggestion: `Supported leaf directives: ${supportedDirectiveNames("leaf")}`,
347
+ severity: "error",
273
348
  });
274
349
  }
275
350
  }
@@ -280,20 +355,22 @@ export function validateDirectives(body, file, bodyStartLine) {
280
355
  continue;
281
356
  }
282
357
  // Check for unclosed text directive brackets (:name[ without ])
283
- const textUnclosedMatches = line.matchAll(new RegExp(TEXT_UNCLOSED, 'g'));
358
+ const textUnclosedMatches = line.matchAll(new RegExp(TEXT_UNCLOSED, "g"));
284
359
  for (const m of textUnclosedMatches) {
285
360
  const name = m[1];
286
361
  const matchIndex = m.index;
287
- const beforeMatch = line.substring(0, matchIndex + (m[0].startsWith(':') ? 0 : 1));
362
+ const beforeMatch = line.substring(0, matchIndex + (m[0].startsWith(":") ? 0 : 1));
288
363
  if (/https?$|ftp$|mailto$|tel$/.test(beforeMatch))
289
364
  continue;
290
- if (SUPPORTED_DIRECTIVES[name] || UNSUPPORTED_NAMES.has(name) || findNearMissDirective(name)) {
365
+ if (SUPPORTED_DIRECTIVES[name] ||
366
+ UNSUPPORTED_NAMES.has(name) ||
367
+ findNearMissDirective(name)) {
291
368
  errors.push({
292
369
  file,
293
370
  line: absLine,
294
371
  message: `Unclosed bracket in text directive ':${name}[' — missing closing ']'`,
295
372
  suggestion: `Add a closing bracket: :${name}[content]`,
296
- severity: 'error',
373
+ severity: "error",
297
374
  });
298
375
  }
299
376
  }
@@ -303,7 +380,7 @@ export function validateDirectives(body, file, bodyStartLine) {
303
380
  const seenTextDirectives = new Set(); // track by match index to avoid duplicates
304
381
  // Check POST first so :name[text]{attr} captures the attribute before PRE sees it without attr
305
382
  for (const pattern of [TEXT_DIRECTIVE_POST, TEXT_DIRECTIVE_PRE]) {
306
- const textMatches = line.matchAll(new RegExp(pattern, 'g'));
383
+ const textMatches = line.matchAll(new RegExp(pattern, "g"));
307
384
  for (const textMatch of textMatches) {
308
385
  const matchIndex = textMatch.index;
309
386
  if (seenTextDirectives.has(matchIndex))
@@ -312,7 +389,7 @@ export function validateDirectives(body, file, bodyStartLine) {
312
389
  const name = textMatch[1];
313
390
  const attr = textMatch[2];
314
391
  // Skip URL-like patterns (http:, https:, ftp:, etc.)
315
- const beforeMatch = line.substring(0, matchIndex + (textMatch[0].startsWith(':') ? 0 : 1));
392
+ const beforeMatch = line.substring(0, matchIndex + (textMatch[0].startsWith(":") ? 0 : 1));
316
393
  if (/https?$|ftp$|mailto$|tel$/.test(beforeMatch))
317
394
  continue;
318
395
  if (UNSUPPORTED_NAMES.has(name)) {
@@ -320,8 +397,8 @@ export function validateDirectives(body, file, bodyStartLine) {
320
397
  file,
321
398
  line: absLine,
322
399
  message: `Unsupported directive ':${name}'`,
323
- suggestion: `Supported text directives: ${Object.entries(SUPPORTED_DIRECTIVES).filter(([, v]) => v.text).map(([k]) => k).join(', ')}`,
324
- severity: 'error',
400
+ suggestion: `Supported text directives: ${supportedDirectiveNames("text")}`,
401
+ severity: "error",
325
402
  });
326
403
  }
327
404
  else if (SUPPORTED_DIRECTIVES[name]) {
@@ -334,8 +411,8 @@ export function validateDirectives(body, file, bodyStartLine) {
334
411
  file,
335
412
  line: absLine,
336
413
  message: `Unknown directive ':${name}' — did you mean ':${nearMiss}'?`,
337
- suggestion: `Supported text directives: ${Object.entries(SUPPORTED_DIRECTIVES).filter(([, v]) => v.text).map(([k]) => k).join(', ')}`,
338
- severity: 'error',
414
+ suggestion: `Supported text directives: ${supportedDirectiveNames("text")}`,
415
+ severity: "error",
339
416
  });
340
417
  }
341
418
  }
@@ -346,7 +423,7 @@ export function validateDirectives(body, file, bodyStartLine) {
346
423
  }
347
424
  }
348
425
  // Mark content in parent container (non-blank, non-directive line)
349
- if (stack.length > 0 && line.trim() !== '') {
426
+ if (stack.length > 0 && line.trim() !== "") {
350
427
  stack[stack.length - 1].hasContent = true;
351
428
  }
352
429
  }
@@ -356,18 +433,18 @@ export function validateDirectives(body, file, bodyStartLine) {
356
433
  file,
357
434
  line: entry.line,
358
435
  message: `Unclosed container directive ':::${entry.name}'`,
359
- suggestion: 'Add a closing ::: marker',
360
- severity: 'error',
436
+ suggestion: "Add a closing ::: marker",
437
+ severity: "error",
361
438
  });
362
439
  }
363
440
  return errors;
364
441
  }
365
442
  /**
366
- * Lightweight check for directives in non-article content (e.g., lens text segments).
367
- * Returns a single warning per match since directives won't render outside articles.
443
+ * Lightweight check for article-only directives in lens-authored text segments.
444
+ * `callout` is intentionally supported by both renderers.
368
445
  */
369
446
  export function detectDirectivesInNonArticle(content, file, line) {
370
- const lines = content.split('\n');
447
+ const lines = content.split("\n");
371
448
  let inCodeBlock = false;
372
449
  for (const l of lines) {
373
450
  if (CODE_FENCE.test(l)) {
@@ -379,46 +456,55 @@ export function detectDirectivesInNonArticle(content, file, line) {
379
456
  // Container directive
380
457
  if (CONTAINER_OPEN.test(l)) {
381
458
  const match = l.match(CONTAINER_OPEN);
382
- if (ALL_DIRECTIVE_NAMES.has(match[1])) {
383
- return [{
459
+ const name = match[2];
460
+ if (name === "callout")
461
+ continue;
462
+ if (ALL_DIRECTIVE_NAMES.has(name)) {
463
+ return [
464
+ {
384
465
  file,
385
466
  line,
386
- message: `Directive ':::${match[1]}' found in non-article content — directives only render in article files`,
387
- suggestion: 'Move this content to an article file (articles/*.md) or remove the directive syntax',
388
- severity: 'warning',
389
- }];
467
+ message: `Directive ':::${name}' found in non-article content — directives only render in article files`,
468
+ suggestion: "Move this content to an article file (articles/*.md) or remove the directive syntax",
469
+ severity: "warning",
470
+ },
471
+ ];
390
472
  }
391
473
  }
392
474
  // Leaf directive
393
475
  const leafMatch = l.match(LEAF_DIRECTIVE_PRE);
394
476
  if (leafMatch && ALL_DIRECTIVE_NAMES.has(leafMatch[1])) {
395
- return [{
477
+ return [
478
+ {
396
479
  file,
397
480
  line,
398
481
  message: `Directive '::${leafMatch[1]}' found in non-article content — directives only render in article files`,
399
- suggestion: 'Move this content to an article file (articles/*.md) or remove the directive syntax',
400
- severity: 'warning',
401
- }];
482
+ suggestion: "Move this content to an article file (articles/*.md) or remove the directive syntax",
483
+ severity: "warning",
484
+ },
485
+ ];
402
486
  }
403
487
  // Text/inline directive — scan for :name[ patterns (both pre and post attribute forms)
404
488
  for (const pattern of [TEXT_DIRECTIVE_PRE, TEXT_DIRECTIVE_POST]) {
405
- const textRegex = new RegExp(pattern, 'g');
489
+ const textRegex = new RegExp(pattern, "g");
406
490
  let textMatch;
407
491
  while ((textMatch = textRegex.exec(l)) !== null) {
408
492
  const name = textMatch[1];
409
493
  // Skip URL-like patterns
410
494
  const matchIndex = textMatch.index;
411
- const beforeMatch = l.substring(0, matchIndex + (textMatch[0].startsWith(':') ? 0 : 1));
495
+ const beforeMatch = l.substring(0, matchIndex + (textMatch[0].startsWith(":") ? 0 : 1));
412
496
  if (/https?$|ftp$|mailto$|tel$/.test(beforeMatch))
413
497
  continue;
414
498
  if (ALL_DIRECTIVE_NAMES.has(name)) {
415
- return [{
499
+ return [
500
+ {
416
501
  file,
417
502
  line,
418
503
  message: `Directive ':${name}' found in non-article content — directives only render in article files`,
419
- suggestion: 'Move this content to an article file (articles/*.md) or remove the directive syntax',
420
- severity: 'warning',
421
- }];
504
+ suggestion: "Move this content to an article file (articles/*.md) or remove the directive syntax",
505
+ severity: "warning",
506
+ },
507
+ ];
422
508
  }
423
509
  }
424
510
  }
@@ -1 +1 @@
1
- {"version":3,"file":"directives.js","sourceRoot":"","sources":["../../src/validator/directives.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"directives.js","sourceRoot":"","sources":["../../src/validator/directives.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lens-content-processor",
3
- "version": "0.25.0",
3
+ "version": "0.26.0",
4
4
  "description": "Parser and validator for Lens educational content (Markdown modules, lenses, learning outcomes)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",