docrev 0.8.1 → 0.9.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.
- package/.claude/settings.local.json +9 -0
- package/.gitattributes +1 -0
- package/PLAN-tables-and-postprocess.md +850 -0
- package/README.md +33 -0
- package/bin/rev.js +12 -131
- package/bin/rev.ts +145 -0
- package/dist/bin/rev.d.ts +9 -0
- package/dist/bin/rev.d.ts.map +1 -0
- package/dist/bin/rev.js +118 -0
- package/dist/bin/rev.js.map +1 -0
- package/dist/lib/annotations.d.ts +91 -0
- package/dist/lib/annotations.d.ts.map +1 -0
- package/dist/lib/annotations.js +554 -0
- package/dist/lib/annotations.js.map +1 -0
- package/dist/lib/build.d.ts +171 -0
- package/dist/lib/build.d.ts.map +1 -0
- package/dist/lib/build.js +755 -0
- package/dist/lib/build.js.map +1 -0
- package/dist/lib/citations.d.ts +34 -0
- package/dist/lib/citations.d.ts.map +1 -0
- package/dist/lib/citations.js +140 -0
- package/dist/lib/citations.js.map +1 -0
- package/dist/lib/commands/build.d.ts +13 -0
- package/dist/lib/commands/build.d.ts.map +1 -0
- package/dist/lib/commands/build.js +678 -0
- package/dist/lib/commands/build.js.map +1 -0
- package/dist/lib/commands/citations.d.ts +11 -0
- package/dist/lib/commands/citations.d.ts.map +1 -0
- package/dist/lib/commands/citations.js +428 -0
- package/dist/lib/commands/citations.js.map +1 -0
- package/dist/lib/commands/comments.d.ts +11 -0
- package/dist/lib/commands/comments.d.ts.map +1 -0
- package/dist/lib/commands/comments.js +883 -0
- package/dist/lib/commands/comments.js.map +1 -0
- package/dist/lib/commands/context.d.ts +35 -0
- package/dist/lib/commands/context.d.ts.map +1 -0
- package/dist/lib/commands/context.js +59 -0
- package/dist/lib/commands/context.js.map +1 -0
- package/dist/lib/commands/core.d.ts +11 -0
- package/dist/lib/commands/core.d.ts.map +1 -0
- package/dist/lib/commands/core.js +246 -0
- package/dist/lib/commands/core.js.map +1 -0
- package/dist/lib/commands/doi.d.ts +11 -0
- package/dist/lib/commands/doi.d.ts.map +1 -0
- package/dist/lib/commands/doi.js +373 -0
- package/dist/lib/commands/doi.js.map +1 -0
- package/dist/lib/commands/history.d.ts +11 -0
- package/dist/lib/commands/history.d.ts.map +1 -0
- package/dist/lib/commands/history.js +245 -0
- package/dist/lib/commands/history.js.map +1 -0
- package/dist/lib/commands/index.d.ts +28 -0
- package/dist/lib/commands/index.d.ts.map +1 -0
- package/dist/lib/commands/index.js +35 -0
- package/dist/lib/commands/index.js.map +1 -0
- package/dist/lib/commands/init.d.ts +11 -0
- package/dist/lib/commands/init.d.ts.map +1 -0
- package/dist/lib/commands/init.js +209 -0
- package/dist/lib/commands/init.js.map +1 -0
- package/dist/lib/commands/response.d.ts +11 -0
- package/dist/lib/commands/response.d.ts.map +1 -0
- package/dist/lib/commands/response.js +317 -0
- package/dist/lib/commands/response.js.map +1 -0
- package/dist/lib/commands/sections.d.ts +11 -0
- package/dist/lib/commands/sections.d.ts.map +1 -0
- package/dist/lib/commands/sections.js +1071 -0
- package/dist/lib/commands/sections.js.map +1 -0
- package/dist/lib/commands/utilities.d.ts +19 -0
- package/dist/lib/commands/utilities.d.ts.map +1 -0
- package/dist/lib/commands/utilities.js +2009 -0
- package/dist/lib/commands/utilities.js.map +1 -0
- package/dist/lib/comment-realign.d.ts +50 -0
- package/dist/lib/comment-realign.d.ts.map +1 -0
- package/dist/lib/comment-realign.js +372 -0
- package/dist/lib/comment-realign.js.map +1 -0
- package/dist/lib/config.d.ts +41 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +76 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/crossref.d.ts +108 -0
- package/dist/lib/crossref.d.ts.map +1 -0
- package/dist/lib/crossref.js +597 -0
- package/dist/lib/crossref.js.map +1 -0
- package/dist/lib/dependencies.d.ts +30 -0
- package/dist/lib/dependencies.d.ts.map +1 -0
- package/dist/lib/dependencies.js +95 -0
- package/dist/lib/dependencies.js.map +1 -0
- package/dist/lib/doi-cache.d.ts +29 -0
- package/dist/lib/doi-cache.d.ts.map +1 -0
- package/dist/lib/doi-cache.js +104 -0
- package/dist/lib/doi-cache.js.map +1 -0
- package/dist/lib/doi.d.ts +65 -0
- package/dist/lib/doi.d.ts.map +1 -0
- package/dist/lib/doi.js +710 -0
- package/dist/lib/doi.js.map +1 -0
- package/dist/lib/equations.d.ts +61 -0
- package/dist/lib/equations.d.ts.map +1 -0
- package/dist/lib/equations.js +445 -0
- package/dist/lib/equations.js.map +1 -0
- package/dist/lib/errors.d.ts +60 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +303 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/format.d.ts +104 -0
- package/dist/lib/format.d.ts.map +1 -0
- package/dist/lib/format.js +416 -0
- package/dist/lib/format.js.map +1 -0
- package/dist/lib/git.d.ts +88 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +304 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/grammar.d.ts +62 -0
- package/dist/lib/grammar.d.ts.map +1 -0
- package/dist/lib/grammar.js +244 -0
- package/dist/lib/grammar.js.map +1 -0
- package/dist/lib/image-registry.d.ts +68 -0
- package/dist/lib/image-registry.d.ts.map +1 -0
- package/dist/lib/image-registry.js +112 -0
- package/dist/lib/image-registry.js.map +1 -0
- package/dist/lib/import.d.ts +184 -0
- package/dist/lib/import.d.ts.map +1 -0
- package/dist/lib/import.js +1581 -0
- package/dist/lib/import.js.map +1 -0
- package/dist/lib/journals.d.ts +55 -0
- package/dist/lib/journals.d.ts.map +1 -0
- package/dist/lib/journals.js +417 -0
- package/dist/lib/journals.js.map +1 -0
- package/dist/lib/merge.d.ts +138 -0
- package/dist/lib/merge.d.ts.map +1 -0
- package/dist/lib/merge.js +603 -0
- package/dist/lib/merge.js.map +1 -0
- package/dist/lib/orcid.d.ts +36 -0
- package/dist/lib/orcid.d.ts.map +1 -0
- package/dist/lib/orcid.js +117 -0
- package/dist/lib/orcid.js.map +1 -0
- package/dist/lib/pdf-comments.d.ts +95 -0
- package/dist/lib/pdf-comments.d.ts.map +1 -0
- package/dist/lib/pdf-comments.js +192 -0
- package/dist/lib/pdf-comments.js.map +1 -0
- package/dist/lib/pdf-import.d.ts +118 -0
- package/dist/lib/pdf-import.d.ts.map +1 -0
- package/dist/lib/pdf-import.js +397 -0
- package/dist/lib/pdf-import.js.map +1 -0
- package/dist/lib/plugins.d.ts +76 -0
- package/dist/lib/plugins.d.ts.map +1 -0
- package/dist/lib/plugins.js +235 -0
- package/dist/lib/plugins.js.map +1 -0
- package/dist/lib/postprocess.d.ts +42 -0
- package/dist/lib/postprocess.d.ts.map +1 -0
- package/dist/lib/postprocess.js +138 -0
- package/dist/lib/postprocess.js.map +1 -0
- package/dist/lib/pptx-template.d.ts +59 -0
- package/dist/lib/pptx-template.d.ts.map +1 -0
- package/dist/lib/pptx-template.js +613 -0
- package/dist/lib/pptx-template.js.map +1 -0
- package/dist/lib/pptx-themes.d.ts +80 -0
- package/dist/lib/pptx-themes.d.ts.map +1 -0
- package/dist/lib/pptx-themes.js +818 -0
- package/dist/lib/pptx-themes.js.map +1 -0
- package/dist/lib/protect-restore.d.ts +137 -0
- package/dist/lib/protect-restore.d.ts.map +1 -0
- package/dist/lib/protect-restore.js +394 -0
- package/dist/lib/protect-restore.js.map +1 -0
- package/dist/lib/rate-limiter.d.ts +27 -0
- package/dist/lib/rate-limiter.d.ts.map +1 -0
- package/dist/lib/rate-limiter.js +79 -0
- package/dist/lib/rate-limiter.js.map +1 -0
- package/dist/lib/response.d.ts +41 -0
- package/dist/lib/response.d.ts.map +1 -0
- package/dist/lib/response.js +150 -0
- package/dist/lib/response.js.map +1 -0
- package/dist/lib/review.d.ts +35 -0
- package/dist/lib/review.d.ts.map +1 -0
- package/dist/lib/review.js +263 -0
- package/dist/lib/review.js.map +1 -0
- package/dist/lib/schema.d.ts +66 -0
- package/dist/lib/schema.d.ts.map +1 -0
- package/dist/lib/schema.js +339 -0
- package/dist/lib/schema.js.map +1 -0
- package/dist/lib/scientific-words.d.ts +6 -0
- package/dist/lib/scientific-words.d.ts.map +1 -0
- package/dist/lib/scientific-words.js +66 -0
- package/dist/lib/scientific-words.js.map +1 -0
- package/dist/lib/sections.d.ts +40 -0
- package/dist/lib/sections.d.ts.map +1 -0
- package/dist/lib/sections.js +288 -0
- package/dist/lib/sections.js.map +1 -0
- package/dist/lib/slides.d.ts +86 -0
- package/dist/lib/slides.d.ts.map +1 -0
- package/dist/lib/slides.js +676 -0
- package/dist/lib/slides.js.map +1 -0
- package/dist/lib/spelling.d.ts +76 -0
- package/dist/lib/spelling.d.ts.map +1 -0
- package/dist/lib/spelling.js +272 -0
- package/dist/lib/spelling.js.map +1 -0
- package/dist/lib/templates.d.ts +30 -0
- package/dist/lib/templates.d.ts.map +1 -0
- package/dist/lib/templates.js +504 -0
- package/dist/lib/templates.js.map +1 -0
- package/dist/lib/themes.d.ts +85 -0
- package/dist/lib/themes.d.ts.map +1 -0
- package/dist/lib/themes.js +652 -0
- package/dist/lib/themes.js.map +1 -0
- package/dist/lib/trackchanges.d.ts +51 -0
- package/dist/lib/trackchanges.d.ts.map +1 -0
- package/dist/lib/trackchanges.js +202 -0
- package/dist/lib/trackchanges.js.map +1 -0
- package/dist/lib/tui.d.ts +76 -0
- package/dist/lib/tui.d.ts.map +1 -0
- package/dist/lib/tui.js +377 -0
- package/dist/lib/tui.js.map +1 -0
- package/dist/lib/types.d.ts +447 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +6 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/undo.d.ts +57 -0
- package/dist/lib/undo.d.ts.map +1 -0
- package/dist/lib/undo.js +185 -0
- package/dist/lib/undo.js.map +1 -0
- package/dist/lib/utils.d.ts +16 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +40 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/variables.d.ts +42 -0
- package/dist/lib/variables.d.ts.map +1 -0
- package/dist/lib/variables.js +141 -0
- package/dist/lib/variables.js.map +1 -0
- package/dist/lib/word.d.ts +80 -0
- package/dist/lib/word.d.ts.map +1 -0
- package/dist/lib/word.js +360 -0
- package/dist/lib/word.js.map +1 -0
- package/dist/lib/wordcomments.d.ts +51 -0
- package/dist/lib/wordcomments.d.ts.map +1 -0
- package/dist/lib/wordcomments.js +587 -0
- package/dist/lib/wordcomments.js.map +1 -0
- package/eslint.config.js +27 -0
- package/lib/annotations.ts +622 -0
- package/lib/apply-buildup-colors.py +88 -0
- package/lib/build.ts +1013 -0
- package/lib/{citations.js → citations.ts} +38 -27
- package/lib/commands/{build.js → build.ts} +80 -27
- package/lib/commands/{citations.js → citations.ts} +36 -18
- package/lib/commands/{comments.js → comments.ts} +187 -54
- package/lib/commands/{context.js → context.ts} +18 -8
- package/lib/commands/{core.js → core.ts} +34 -20
- package/lib/commands/{doi.js → doi.ts} +32 -16
- package/lib/commands/{history.js → history.ts} +25 -12
- package/lib/commands/{index.js → index.ts} +9 -5
- package/lib/commands/{init.js → init.ts} +20 -8
- package/lib/commands/{response.js → response.ts} +47 -20
- package/lib/commands/{sections.js → sections.ts} +273 -68
- package/lib/commands/{utilities.js → utilities.ts} +338 -158
- package/lib/{comment-realign.js → comment-realign.ts} +117 -45
- package/lib/config.ts +84 -0
- package/lib/{crossref.js → crossref.ts} +213 -138
- package/lib/dependencies.ts +106 -0
- package/lib/doi-cache.ts +115 -0
- package/lib/{doi.js → doi.ts} +115 -281
- package/lib/{equations.js → equations.ts} +60 -64
- package/lib/{errors.js → errors.ts} +56 -48
- package/lib/{format.js → format.ts} +137 -63
- package/lib/{git.js → git.ts} +66 -63
- package/lib/{grammar.js → grammar.ts} +45 -32
- package/lib/image-registry.ts +180 -0
- package/lib/import.ts +2060 -0
- package/lib/journals.ts +505 -0
- package/lib/{merge.js → merge.ts} +185 -135
- package/lib/{orcid.js → orcid.ts} +17 -22
- package/lib/{pdf-comments.js → pdf-comments.ts} +76 -18
- package/lib/{pdf-import.js → pdf-import.ts} +148 -70
- package/lib/{plugins.js → plugins.ts} +82 -39
- package/lib/postprocess.ts +188 -0
- package/lib/pptx-color-filter.lua +37 -0
- package/lib/pptx-template.ts +625 -0
- package/lib/pptx-themes/academic.pptx +0 -0
- package/lib/pptx-themes/corporate.pptx +0 -0
- package/lib/pptx-themes/dark.pptx +0 -0
- package/lib/pptx-themes/default.pptx +0 -0
- package/lib/pptx-themes/minimal.pptx +0 -0
- package/lib/pptx-themes/plant.pptx +0 -0
- package/lib/pptx-themes.ts +896 -0
- package/lib/protect-restore.ts +516 -0
- package/lib/rate-limiter.ts +94 -0
- package/lib/{response.js → response.ts} +36 -21
- package/lib/{review.js → review.ts} +53 -43
- package/lib/{schema.js → schema.ts} +70 -25
- package/lib/{sections.js → sections.ts} +71 -76
- package/lib/slides.ts +793 -0
- package/lib/{spelling.js → spelling.ts} +43 -59
- package/lib/{templates.js → templates.ts} +20 -17
- package/lib/themes.ts +742 -0
- package/lib/{trackchanges.js → trackchanges.ts} +52 -23
- package/lib/types.ts +509 -0
- package/lib/{undo.js → undo.ts} +75 -52
- package/lib/utils.ts +41 -0
- package/lib/{variables.js → variables.ts} +60 -54
- package/lib/word.ts +428 -0
- package/lib/{wordcomments.js → wordcomments.ts} +94 -40
- package/package.json +15 -5
- package/skill/REFERENCE.md +67 -0
- package/tsconfig.json +26 -0
- package/lib/annotations.js +0 -414
- package/lib/build.js +0 -639
- package/lib/config.js +0 -79
- package/lib/import.js +0 -1145
- package/lib/journals.js +0 -629
- package/lib/word.js +0 -225
- /package/lib/{scientific-words.js → scientific-words.ts} +0 -0
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Section handling - map between section .md files and combined documents
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import YAML from 'yaml';
|
|
7
|
+
/**
|
|
8
|
+
* Default section order (common academic paper structure)
|
|
9
|
+
*/
|
|
10
|
+
const DEFAULT_ORDER = [
|
|
11
|
+
'abstract',
|
|
12
|
+
'introduction',
|
|
13
|
+
'background',
|
|
14
|
+
'literature',
|
|
15
|
+
'theory',
|
|
16
|
+
'methods',
|
|
17
|
+
'materials',
|
|
18
|
+
'data',
|
|
19
|
+
'results',
|
|
20
|
+
'analysis',
|
|
21
|
+
'discussion',
|
|
22
|
+
'conclusion',
|
|
23
|
+
'references',
|
|
24
|
+
'appendix',
|
|
25
|
+
'supplementary',
|
|
26
|
+
];
|
|
27
|
+
/**
|
|
28
|
+
* Extract header from a markdown file
|
|
29
|
+
*/
|
|
30
|
+
export function extractHeader(filePath) {
|
|
31
|
+
if (!fs.existsSync(filePath))
|
|
32
|
+
return null;
|
|
33
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
34
|
+
const lines = content.split('\n');
|
|
35
|
+
for (const line of lines) {
|
|
36
|
+
const match = line.match(/^#\s+(.+)$/);
|
|
37
|
+
if (match && match[1]) {
|
|
38
|
+
return match[1].trim();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Generate sections.yaml from existing .md files
|
|
45
|
+
*/
|
|
46
|
+
export function generateConfig(directory, excludePatterns = ['paper.md', 'README.md', 'CLAUDE.md']) {
|
|
47
|
+
const files = fs.readdirSync(directory).filter((f) => {
|
|
48
|
+
if (!f.endsWith('.md'))
|
|
49
|
+
return false;
|
|
50
|
+
if (excludePatterns.some((p) => f.toLowerCase().includes(p.toLowerCase())))
|
|
51
|
+
return false;
|
|
52
|
+
return true;
|
|
53
|
+
});
|
|
54
|
+
const sections = {};
|
|
55
|
+
for (const file of files) {
|
|
56
|
+
const filePath = path.join(directory, file);
|
|
57
|
+
const header = extractHeader(filePath);
|
|
58
|
+
const baseName = path.basename(file, '.md').toLowerCase();
|
|
59
|
+
// Determine order based on common patterns
|
|
60
|
+
let order = DEFAULT_ORDER.findIndex((s) => baseName.includes(s));
|
|
61
|
+
if (order === -1)
|
|
62
|
+
order = 999;
|
|
63
|
+
sections[file] = {
|
|
64
|
+
header: header || titleCase(baseName),
|
|
65
|
+
aliases: [],
|
|
66
|
+
order: order,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
// Sort by order
|
|
70
|
+
const sorted = Object.entries(sections)
|
|
71
|
+
.sort((a, b) => (a[1].order ?? 999) - (b[1].order ?? 999))
|
|
72
|
+
.reduce((acc, [k, v]) => {
|
|
73
|
+
acc[k] = v;
|
|
74
|
+
return acc;
|
|
75
|
+
}, {});
|
|
76
|
+
return {
|
|
77
|
+
version: 1,
|
|
78
|
+
description: 'Section configuration for rev import/split',
|
|
79
|
+
sections: sorted,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Convert string to title case
|
|
84
|
+
*/
|
|
85
|
+
function titleCase(str) {
|
|
86
|
+
return str
|
|
87
|
+
.split(/[-_\s]+/)
|
|
88
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
89
|
+
.join(' ');
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Load sections config from yaml file
|
|
93
|
+
*/
|
|
94
|
+
export function loadConfig(configPath) {
|
|
95
|
+
const content = fs.readFileSync(configPath, 'utf-8');
|
|
96
|
+
const config = YAML.parse(content);
|
|
97
|
+
// Normalize: convert string values to full config objects
|
|
98
|
+
const normalized = {
|
|
99
|
+
version: config.version || 1,
|
|
100
|
+
description: config.description,
|
|
101
|
+
sections: {},
|
|
102
|
+
};
|
|
103
|
+
for (const [file, value] of Object.entries(config.sections || {})) {
|
|
104
|
+
if (typeof value === 'string') {
|
|
105
|
+
normalized.sections[file] = {
|
|
106
|
+
header: value,
|
|
107
|
+
aliases: [],
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
const typedValue = value;
|
|
112
|
+
normalized.sections[file] = {
|
|
113
|
+
header: typedValue.header,
|
|
114
|
+
aliases: typedValue.aliases || [],
|
|
115
|
+
order: typedValue.order,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return normalized;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Save sections config to yaml file
|
|
123
|
+
*/
|
|
124
|
+
export function saveConfig(configPath, config) {
|
|
125
|
+
const yamlStr = YAML.stringify(config, { indent: 2, lineWidth: 100 });
|
|
126
|
+
fs.writeFileSync(configPath, yamlStr, 'utf-8');
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Match a heading to a section file
|
|
130
|
+
*/
|
|
131
|
+
export function matchHeading(heading, sections) {
|
|
132
|
+
// Strip markdown header prefix (# or ##, etc.) before matching
|
|
133
|
+
const normalizedHeading = heading.replace(/^#{1,6}\s+/, '').toLowerCase().trim();
|
|
134
|
+
for (const [file, config] of Object.entries(sections)) {
|
|
135
|
+
// Check primary header
|
|
136
|
+
if (config.header.toLowerCase().trim() === normalizedHeading) {
|
|
137
|
+
return { file, config };
|
|
138
|
+
}
|
|
139
|
+
// Check aliases
|
|
140
|
+
if (config.aliases) {
|
|
141
|
+
for (const alias of config.aliases) {
|
|
142
|
+
if (alias.toLowerCase().trim() === normalizedHeading) {
|
|
143
|
+
return { file, config };
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// Fuzzy match: check if heading contains the key words
|
|
148
|
+
const headerWords = config.header.toLowerCase().split(/\s+/);
|
|
149
|
+
const headingWords = normalizedHeading.split(/\s+/);
|
|
150
|
+
const matchCount = headerWords.filter((w) => headingWords.includes(w)).length;
|
|
151
|
+
if (matchCount >= headerWords.length * 0.7) {
|
|
152
|
+
return { file, config };
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Extract sections from Word document text
|
|
159
|
+
*/
|
|
160
|
+
export function extractSectionsFromText(text, sections) {
|
|
161
|
+
const result = [];
|
|
162
|
+
// Process line by line to detect markdown headers
|
|
163
|
+
const lines = text.split('\n');
|
|
164
|
+
let currentSection = null;
|
|
165
|
+
let currentContent = [];
|
|
166
|
+
for (let i = 0; i < lines.length; i++) {
|
|
167
|
+
const line = lines[i];
|
|
168
|
+
if (!line)
|
|
169
|
+
continue;
|
|
170
|
+
const trimmed = line.trim();
|
|
171
|
+
// Explicitly check for markdown headers (# Header)
|
|
172
|
+
const headerMatch = trimmed.match(/^(#{1,6})\s+(.+)$/);
|
|
173
|
+
let matchedSection = null;
|
|
174
|
+
if (headerMatch) {
|
|
175
|
+
// This is a markdown header - try to match it to a section
|
|
176
|
+
matchedSection = matchHeading(trimmed, sections);
|
|
177
|
+
}
|
|
178
|
+
else if (trimmed.length > 0 && trimmed.length < 100 && !trimmed.includes('.')) {
|
|
179
|
+
// Fallback: check if short text without periods matches a section (for plain text headings)
|
|
180
|
+
matchedSection = matchHeading(trimmed, sections);
|
|
181
|
+
}
|
|
182
|
+
if (matchedSection) {
|
|
183
|
+
// Save previous section
|
|
184
|
+
if (currentSection) {
|
|
185
|
+
// Include header in content for proper diffing
|
|
186
|
+
const fullContent = currentSection.header + '\n\n' + currentContent.join('\n').trim();
|
|
187
|
+
result.push({
|
|
188
|
+
file: currentSection.file,
|
|
189
|
+
header: currentSection.header,
|
|
190
|
+
content: fullContent.trim(),
|
|
191
|
+
matched: true,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
currentSection = {
|
|
195
|
+
file: matchedSection.file,
|
|
196
|
+
header: trimmed,
|
|
197
|
+
};
|
|
198
|
+
currentContent = [];
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
currentContent.push(line);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Save last section
|
|
205
|
+
if (currentSection) {
|
|
206
|
+
// Include header in content for proper diffing
|
|
207
|
+
const fullContent = currentSection.header + '\n\n' + currentContent.join('\n').trim();
|
|
208
|
+
result.push({
|
|
209
|
+
file: currentSection.file,
|
|
210
|
+
header: currentSection.header,
|
|
211
|
+
content: fullContent.trim(),
|
|
212
|
+
matched: true,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
return result;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Parse annotated paper.md and split back to section files
|
|
219
|
+
*/
|
|
220
|
+
export function splitAnnotatedPaper(paperContent, sections) {
|
|
221
|
+
const result = new Map();
|
|
222
|
+
// Look for section markers: <!-- @section:filename.md -->
|
|
223
|
+
const markerPattern = /<!--\s*@section:(\S+\.md)\s*-->/g;
|
|
224
|
+
const markers = [...paperContent.matchAll(markerPattern)];
|
|
225
|
+
if (markers.length > 0) {
|
|
226
|
+
// Use markers
|
|
227
|
+
for (let i = 0; i < markers.length; i++) {
|
|
228
|
+
const marker = markers[i];
|
|
229
|
+
if (!marker || !marker[1])
|
|
230
|
+
continue;
|
|
231
|
+
const file = marker[1];
|
|
232
|
+
const start = (marker.index || 0) + marker[0].length;
|
|
233
|
+
const end = markers[i + 1]?.index || paperContent.length;
|
|
234
|
+
let content = paperContent.slice(start, end).trim();
|
|
235
|
+
// Remove trailing marker if present
|
|
236
|
+
content = content.replace(/<!--\s*@section:\S+\.md\s*-->$/, '').trim();
|
|
237
|
+
result.set(file, content);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
// Fall back to header detection
|
|
242
|
+
const lines = paperContent.split('\n');
|
|
243
|
+
let currentFile = null;
|
|
244
|
+
let currentContent = [];
|
|
245
|
+
for (const line of lines) {
|
|
246
|
+
const headerMatch = line.match(/^#\s+(.+)$/);
|
|
247
|
+
if (headerMatch && headerMatch[1]) {
|
|
248
|
+
// Save previous section
|
|
249
|
+
if (currentFile) {
|
|
250
|
+
result.set(currentFile, currentContent.join('\n').trim());
|
|
251
|
+
}
|
|
252
|
+
// Find matching section file
|
|
253
|
+
const heading = headerMatch[1].trim();
|
|
254
|
+
const match = matchHeading(heading, sections);
|
|
255
|
+
if (match) {
|
|
256
|
+
currentFile = match.file;
|
|
257
|
+
currentContent = [line];
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
// Unknown section - keep accumulating to previous
|
|
261
|
+
currentContent.push(line);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
currentContent.push(line);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
// Save last section
|
|
269
|
+
if (currentFile) {
|
|
270
|
+
result.set(currentFile, currentContent.join('\n').trim());
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return result;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Get ordered list of section files from config
|
|
277
|
+
*/
|
|
278
|
+
export function getOrderedSections(config) {
|
|
279
|
+
const entries = Object.entries(config.sections || {});
|
|
280
|
+
return entries
|
|
281
|
+
.sort((a, b) => {
|
|
282
|
+
const orderA = a[1].order ?? 999;
|
|
283
|
+
const orderB = b[1].order ?? 999;
|
|
284
|
+
return orderA - orderB;
|
|
285
|
+
})
|
|
286
|
+
.map(([file]) => file);
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=sections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sections.js","sourceRoot":"","sources":["../../lib/sections.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB;;GAEG;AACH,MAAM,aAAa,GAAG;IACpB,UAAU;IACV,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,WAAW;IACX,MAAM;IACN,SAAS;IACT,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,eAAe;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACvC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,SAAiB,EACjB,kBAA4B,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC;IAElE,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACnD,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACrC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACzF,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAkC,EAAE,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAE1D,2CAA2C;QAC3C,IAAI,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,KAAK,GAAG,GAAG,CAAC;QAE9B,QAAQ,CAAC,IAAI,CAAC,GAAG;YACf,MAAM,EAAE,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC;YACrC,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;IAED,gBAAgB;IAChB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;SACpC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;SACzD,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QACtB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAmC,CAAC,CAAC;IAE1C,OAAO;QACL,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,4CAA4C;QACzD,QAAQ,EAAE,MAAM;KACjB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,GAAG;SACP,KAAK,CAAC,SAAS,CAAC;SAChB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,UAAkB;IAC3C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEnC,0DAA0D;IAC1D,MAAM,UAAU,GAAmB;QACjC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,CAAC;QAC5B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;QAClE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG;gBAC1B,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,EAAE;aACZ,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,KAAsB,CAAC;YAC1C,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG;gBAC1B,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,EAAE;gBACjC,KAAK,EAAE,UAAU,CAAC,KAAK;aACxB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,UAAkB,EAAE,MAAsB;IACnE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACtE,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAe,EACf,QAAuC;IAEvC,+DAA+D;IAC/D,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAEjF,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,uBAAuB;QACvB,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,iBAAiB,EAAE,CAAC;YAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC1B,CAAC;QAED,gBAAgB;QAChB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,iBAAiB,EAAE,CAAC;oBACrD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAED,uDAAuD;QACvD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9E,IAAI,UAAU,IAAI,WAAW,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAY,EACZ,QAAuC;IAEvC,MAAM,MAAM,GAAuB,EAAE,CAAC;IAEtC,kDAAkD;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,cAAc,GAA4C,IAAI,CAAC;IACnE,IAAI,cAAc,GAAa,EAAE,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,mDAAmD;QACnD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAEvD,IAAI,cAAc,GAAmD,IAAI,CAAC;QAC1E,IAAI,WAAW,EAAE,CAAC;YAChB,2DAA2D;YAC3D,cAAc,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAChF,4FAA4F;YAC5F,cAAc,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,cAAc,EAAE,CAAC;YACnB,wBAAwB;YACxB,IAAI,cAAc,EAAE,CAAC;gBACnB,+CAA+C;gBAC/C,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBACtF,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,cAAc,CAAC,IAAI;oBACzB,MAAM,EAAE,cAAc,CAAC,MAAM;oBAC7B,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE;oBAC3B,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;YACL,CAAC;YAED,cAAc,GAAG;gBACf,IAAI,EAAE,cAAc,CAAC,IAAI;gBACzB,MAAM,EAAE,OAAO;aAChB,CAAC;YACF,cAAc,GAAG,EAAE,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,cAAc,EAAE,CAAC;QACnB,+CAA+C;QAC/C,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACtF,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,cAAc,CAAC,IAAI;YACzB,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE;YAC3B,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,YAAoB,EACpB,QAAuC;IAEvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,0DAA0D;IAC1D,MAAM,aAAa,GAAG,kCAAkC,CAAC;IACzD,MAAM,OAAO,GAAG,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IAE1D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,cAAc;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAAE,SAAS;YACpC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACrD,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC;YAEzD,IAAI,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAEpD,oCAAoC;YACpC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAEvE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,gCAAgC;QAChC,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,WAAW,GAAkB,IAAI,CAAC;QACtC,IAAI,cAAc,GAAa,EAAE,CAAC;QAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAE7C,IAAI,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClC,wBAAwB;gBACxB,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC5D,CAAC;gBAED,6BAA6B;gBAC7B,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACtC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAE9C,IAAI,KAAK,EAAE,CAAC;oBACV,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;oBACzB,cAAc,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC;qBAAM,CAAC;oBACN,kDAAkD;oBAClD,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAEtD,OAAO,OAAO;SACX,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC;QACjC,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC;QACjC,OAAO,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slide processing for Beamer and PPTX output
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - ::: step blocks for incremental reveals
|
|
6
|
+
* - ::: buildup blocks for progressive bullet reveals with greying
|
|
7
|
+
* - ::: notes blocks for speaker notes
|
|
8
|
+
* - Slide boundaries (---)
|
|
9
|
+
* - Slide styles: {.dark}, {.light}, {.accent}, {.inverse}
|
|
10
|
+
* - Special slides: {.cover}, {.thanks}, {.section}, {.plain}
|
|
11
|
+
*
|
|
12
|
+
* Syntax examples:
|
|
13
|
+
* ## Title {.dark} - Dark background slide
|
|
14
|
+
* ## Welcome {.cover} - Cover slide (no numbering, centered)
|
|
15
|
+
* ## Thank You {.thanks} - Thanks slide (no numbering)
|
|
16
|
+
* # Part 1 {.section} - Section divider slide
|
|
17
|
+
* ## Image {.plain} - No header/footer, full content
|
|
18
|
+
* ## Highlight {.accent .nonumber} - Accent color, no slide number
|
|
19
|
+
*
|
|
20
|
+
* Buildup syntax:
|
|
21
|
+
* ::: buildup
|
|
22
|
+
* - First point
|
|
23
|
+
* - Sub A
|
|
24
|
+
* - Sub B
|
|
25
|
+
* - Second point
|
|
26
|
+
* :::
|
|
27
|
+
*
|
|
28
|
+
* Generates slides where current point is colored, previous are greyed out.
|
|
29
|
+
* Subpoints appear sequentially within their parent.
|
|
30
|
+
*/
|
|
31
|
+
interface Step {
|
|
32
|
+
index: number;
|
|
33
|
+
content: string;
|
|
34
|
+
}
|
|
35
|
+
interface SlideStyle {
|
|
36
|
+
background: string | null;
|
|
37
|
+
type: string | null;
|
|
38
|
+
nonumber: boolean;
|
|
39
|
+
center: boolean;
|
|
40
|
+
classes: string[];
|
|
41
|
+
}
|
|
42
|
+
interface Slide {
|
|
43
|
+
title: string;
|
|
44
|
+
titleLevel: number;
|
|
45
|
+
steps: Step[];
|
|
46
|
+
notes: string | null;
|
|
47
|
+
preamble: string;
|
|
48
|
+
style: SlideStyle;
|
|
49
|
+
_frontmatter?: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Parse slide style attributes from heading
|
|
53
|
+
*/
|
|
54
|
+
declare function parseSlideStyle(heading: string): {
|
|
55
|
+
title: string;
|
|
56
|
+
style: SlideStyle;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Parse a single slide's content into steps and notes
|
|
60
|
+
*/
|
|
61
|
+
export declare function parseSlide(slideContent: string): Slide;
|
|
62
|
+
/**
|
|
63
|
+
* Parse markdown document into slides
|
|
64
|
+
*/
|
|
65
|
+
export declare function parseSlides(markdown: string): Slide[];
|
|
66
|
+
/**
|
|
67
|
+
* Generate Beamer markdown using pandoc's native slide structure
|
|
68
|
+
* Works WITH pandoc, not against it - pandoc creates frames, we add overlays
|
|
69
|
+
*/
|
|
70
|
+
export declare function generateBeamerMarkdown(slides: Slide[]): string;
|
|
71
|
+
/**
|
|
72
|
+
* Generate PPTX markdown with duplicated slides for steps
|
|
73
|
+
* Each step becomes a separate physical slide
|
|
74
|
+
* Handles ::: buildup blocks by expanding them into multiple slides
|
|
75
|
+
*/
|
|
76
|
+
export declare function generatePptxMarkdown(slides: Slide[]): string;
|
|
77
|
+
/**
|
|
78
|
+
* Process markdown for slide output format
|
|
79
|
+
*/
|
|
80
|
+
export declare function processSlideMarkdown(markdown: string, format: 'beamer' | 'pptx'): string;
|
|
81
|
+
/**
|
|
82
|
+
* Check if markdown contains slide syntax (steps, notes, buildup, or slide styles)
|
|
83
|
+
*/
|
|
84
|
+
export declare function hasSlideSyntax(markdown: string): boolean;
|
|
85
|
+
export { parseSlideStyle };
|
|
86
|
+
//# sourceMappingURL=slides.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slides.d.ts","sourceRoot":"","sources":["../../lib/slides.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,UAAU,IAAI;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,UAAU;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAiND;;GAEG;AACH,iBAAS,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CA+C9E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,KAAK,CAoHtD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE,CAoCrD;AA6BD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CA0H9D;AAYD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAkH5D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAUxF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAUxD;AAGD,OAAO,EAAE,eAAe,EAAE,CAAC"}
|