apex-ruby 1.0.6 → 1.0.7
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.
- checksums.yaml +4 -4
- data/ext/apex_ext/apex_ext.c +6 -0
- data/ext/apex_ext/apex_src/AGENTS.md +41 -0
- data/ext/apex_ext/apex_src/CHANGELOG.md +412 -2
- data/ext/apex_ext/apex_src/CMakeLists.txt +41 -29
- data/ext/apex_ext/apex_src/Formula/apex.rb +2 -2
- data/ext/apex_ext/apex_src/Package.swift +9 -0
- data/ext/apex_ext/apex_src/README.md +31 -9
- data/ext/apex_ext/apex_src/ROADMAP.md +5 -0
- data/ext/apex_ext/apex_src/VERSION +1 -1
- data/ext/apex_ext/apex_src/cli/main.c +1125 -13
- data/ext/apex_ext/apex_src/docs/index.md +459 -0
- data/ext/apex_ext/apex_src/include/apex/apex.h +67 -5
- data/ext/apex_ext/apex_src/include/apex/ast_man.h +20 -0
- data/ext/apex_ext/apex_src/include/apex/ast_markdown.h +39 -0
- data/ext/apex_ext/apex_src/include/apex/ast_terminal.h +40 -0
- data/ext/apex_ext/apex_src/include/apex/module.modulemap +1 -1
- data/ext/apex_ext/apex_src/man/apex-config.5 +333 -258
- data/ext/apex_ext/apex_src/man/apex-config.5.md +3 -1
- data/ext/apex_ext/apex_src/man/apex-plugins.7 +401 -316
- data/ext/apex_ext/apex_src/man/apex.1 +663 -620
- data/ext/apex_ext/apex_src/man/apex.1.html +703 -0
- data/ext/apex_ext/apex_src/man/apex.1.md +160 -90
- data/ext/apex_ext/apex_src/objc/Apex.swift +6 -0
- data/ext/apex_ext/apex_src/objc/NSString+Apex.h +12 -0
- data/ext/apex_ext/apex_src/objc/NSString+Apex.m +9 -0
- data/ext/apex_ext/apex_src/pages/index.md +459 -0
- data/ext/apex_ext/apex_src/src/_README.md +4 -4
- data/ext/apex_ext/apex_src/src/apex.c +702 -44
- data/ext/apex_ext/apex_src/src/ast_json.c +1130 -0
- data/ext/apex_ext/apex_src/src/ast_json.h +46 -0
- data/ext/apex_ext/apex_src/src/ast_man.c +948 -0
- data/ext/apex_ext/apex_src/src/ast_markdown.c +409 -0
- data/ext/apex_ext/apex_src/src/ast_terminal.c +2516 -0
- data/ext/apex_ext/apex_src/src/extensions/abbreviations.c +8 -5
- data/ext/apex_ext/apex_src/src/extensions/definition_list.c +491 -1514
- data/ext/apex_ext/apex_src/src/extensions/definition_list.h +8 -15
- data/ext/apex_ext/apex_src/src/extensions/emoji.c +207 -0
- data/ext/apex_ext/apex_src/src/extensions/emoji.h +14 -0
- data/ext/apex_ext/apex_src/src/extensions/header_ids.c +178 -71
- data/ext/apex_ext/apex_src/src/extensions/highlight.c +37 -5
- data/ext/apex_ext/apex_src/src/extensions/ial.c +416 -47
- data/ext/apex_ext/apex_src/src/extensions/includes.c +241 -10
- data/ext/apex_ext/apex_src/src/extensions/includes.h +1 -0
- data/ext/apex_ext/apex_src/src/extensions/metadata.c +166 -3
- data/ext/apex_ext/apex_src/src/extensions/metadata.h +7 -0
- data/ext/apex_ext/apex_src/src/extensions/sup_sub.c +34 -3
- data/ext/apex_ext/apex_src/src/extensions/syntax_highlight.c +55 -10
- data/ext/apex_ext/apex_src/src/extensions/syntax_highlight.h +7 -4
- data/ext/apex_ext/apex_src/src/extensions/table_html_postprocess.c +84 -52
- data/ext/apex_ext/apex_src/src/extensions/toc.c +133 -19
- data/ext/apex_ext/apex_src/src/filters_ast.c +194 -0
- data/ext/apex_ext/apex_src/src/filters_ast.h +36 -0
- data/ext/apex_ext/apex_src/src/html_renderer.c +1265 -35
- data/ext/apex_ext/apex_src/src/html_renderer.h +21 -0
- data/ext/apex_ext/apex_src/src/plugins_remote.c +40 -14
- data/ext/apex_ext/apex_src/tests/CMakeLists.txt +1 -0
- data/ext/apex_ext/apex_src/tests/README.md +11 -5
- data/ext/apex_ext/apex_src/tests/fixtures/comprehensive_test.md +13 -2
- data/ext/apex_ext/apex_src/tests/fixtures/filters/filter_output_with_rawblock.json +1 -0
- data/ext/apex_ext/apex_src/tests/fixtures/filters/unwrap.md +7 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/auto-wildcard.md +8 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.avif +0 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.jpg +0 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.webp +0 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.avif +0 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.jpg +0 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.webp +0 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/media_formats_test.md +63 -0
- data/ext/apex_ext/apex_src/tests/fixtures/includes/data-semi.csv +3 -0
- data/ext/apex_ext/apex_src/tests/fixtures/includes/with space.txt +1 -0
- data/ext/apex_ext/apex_src/tests/fixtures/tables/inline_tables_test.md +4 -1
- data/ext/apex_ext/apex_src/tests/paginate_cli_test.sh +64 -0
- data/ext/apex_ext/apex_src/tests/terminal_width_test.sh +29 -0
- data/ext/apex_ext/apex_src/tests/test-swift-package.sh +14 -0
- data/ext/apex_ext/apex_src/tests/test_cmark_callback.c +189 -0
- data/ext/apex_ext/apex_src/tests/test_extensions.c +374 -0
- data/ext/apex_ext/apex_src/tests/test_metadata.c +68 -0
- data/ext/apex_ext/apex_src/tests/test_output.c +291 -2
- data/ext/apex_ext/apex_src/tests/test_runner.c +10 -0
- data/ext/apex_ext/apex_src/tests/test_syntax_highlight.c +1 -1
- data/ext/apex_ext/apex_src/tests/test_tables.c +17 -1
- data/lib/apex/version.rb +1 -1
- metadata +32 -2
- data/ext/apex_ext/apex_src/docs/FUTURE_FEATURES.md +0 -456
|
@@ -1,456 +0,0 @@
|
|
|
1
|
-
# Apex - Future Features & Roadmap
|
|
2
|
-
|
|
3
|
-
**Last Updated**: December 15, 2025 (PM)
|
|
4
|
-
|
|
5
|
-
## Recently Completed ✅
|
|
6
|
-
|
|
7
|
-
### Tier 1 Features (All Complete!)
|
|
8
|
-
- [x] **Callouts** (Bear/Obsidian/Xcode) - All types with
|
|
9
|
-
|
|
10
|
-
collapsible support
|
|
11
|
-
|
|
12
|
-
- [x] **File Includes** - Marked's `<<[file]`, `<<(code)`,
|
|
13
|
-
|
|
14
|
-
`<<{html}` syntax with recursion protection
|
|
15
|
-
|
|
16
|
-
- [x] **TOC Generation** - HTML (`<!--TOC-->`), MMD
|
|
17
|
-
|
|
18
|
-
(`{{TOC}}`), and Kramdown `{:toc}` markers with `.no_toc`
|
|
19
|
-
exclusion
|
|
20
|
-
|
|
21
|
-
- [x] **Abbreviations** - Full `*[abbr]: definition` support
|
|
22
|
-
- [x] **GitHub Emoji** - Expanded to 350+ common emoji
|
|
23
|
-
- [x] **Page Breaks** - Both `<!--BREAK-->` and
|
|
24
|
-
|
|
25
|
-
`{::pagebreak /}`
|
|
26
|
-
|
|
27
|
-
- [x] **Autoscroll Pauses** - `<!--PAUSE:X-->` for
|
|
28
|
-
|
|
29
|
-
teleprompter
|
|
30
|
-
|
|
31
|
-
- [x] **End of Block Markers** - Kramdown's `^` separator
|
|
32
|
-
|
|
33
|
-
### Advanced Features (NEW - December 4, 2025)
|
|
34
|
-
- [x] **Kramdown IAL** - Full implementation with ALD
|
|
35
|
-
|
|
36
|
-
support, attribute injection in HTML
|
|
37
|
-
|
|
38
|
-
- [x] **Advanced Footnotes** - Block-level Markdown content
|
|
39
|
-
|
|
40
|
-
(paragraphs, code, lists)
|
|
41
|
-
|
|
42
|
-
- [x] **Advanced Tables** - Colspan, rowspan, and captions
|
|
43
|
-
|
|
44
|
-
(postprocessing approach)
|
|
45
|
-
|
|
46
|
-
- [ ] **Definition Lists** - Foundation complete, needs
|
|
47
|
-
|
|
48
|
-
parsing enhancement
|
|
49
|
-
|
|
50
|
-
## Features to Add
|
|
51
|
-
|
|
52
|
-
### File Transclusion (MMD Extended)
|
|
53
|
-
|
|
54
|
-
From: [MultiMarkdown 6 Transclusion Syntax](https://fletcher.github.io/MultiMarkdown-6/syntax/transclusion.html)
|
|
55
|
-
|
|
56
|
-
**Note:** Apex implements Marked's include syntax (`<<[file]`, `<<(code)`, `<<{html}`). MMD uses different syntax: `{{file}}`
|
|
57
|
-
|
|
58
|
-
**MultiMarkdown Transclusion Syntax:**
|
|
59
|
-
|
|
60
|
-
**Basic Transclusion:**
|
|
61
|
-
```markdown
|
|
62
|
-
{{some_other_file.txt}}
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
**Wildcard Extensions:**
|
|
67
|
-
```markdown
|
|
68
|
-
{{foo.*}} # Choose version based on output format (foo.html, foo.tex, etc.)
|
|
69
|
-
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
**Metadata Control:**
|
|
73
|
-
```markdown
|
|
74
|
-
transclude base: . # Relative to current file
|
|
75
|
-
transclude base: folder/ # In subfolder
|
|
76
|
-
transclude base: /absolute/path # Absolute path
|
|
77
|
-
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
**Features:**
|
|
81
|
-
|
|
82
|
-
- Recursive transclusion
|
|
83
|
-
- Metadata in transcluded files is ignored
|
|
84
|
-
- Search path based on parent file directory
|
|
85
|
-
- Can override with `transclude base` metadata
|
|
86
|
-
- Wildcard extensions choose format-appropriate version
|
|
87
|
-
|
|
88
|
-
**Current Status in Apex:**
|
|
89
|
-
|
|
90
|
-
- [x] Implements Marked's syntax: `<<[file.md]`, `<<(code)`,
|
|
91
|
-
|
|
92
|
-
`<<{html}`
|
|
93
|
-
|
|
94
|
-
- [x] Implements MMD syntax: `{{file}}` for MMD mode
|
|
95
|
-
|
|
96
|
-
compatibility
|
|
97
|
-
|
|
98
|
-
- [x] Wildcard support for transclusion:
|
|
99
|
-
|
|
100
|
-
`{{file.*}}` with preferred extensions (`.html`, `.md`, `.txt`, `.tex`)
|
|
101
|
-
|
|
102
|
-
General globbing for patterns like `{{*.md}}`, `{{c?de.py}}`, and `{{{intro,part1}.md}}`
|
|
103
|
-
|
|
104
|
-
- [x] `transclude base` metadata support
|
|
105
|
-
|
|
106
|
-
**Implementation Estimate:** 1-2 hours
|
|
107
|
-
**Complexity:** Medium (mostly extending existing includes
|
|
108
|
-
system)
|
|
109
|
-
|
|
110
|
-
### ~~Advanced Table Syntax~~ ✅ COMPLETE
|
|
111
|
-
|
|
112
|
-
**Status:** [x] Implemented (December 4, 2025)
|
|
113
|
-
|
|
114
|
-
**What's Working:**
|
|
115
|
-
|
|
116
|
-
- ✅ **Colspan** - Empty cells merge with previous cell
|
|
117
|
-
- ✅ **Colspan** - `<<` marker for explicit spanning
|
|
118
|
-
- ✅ **Rowspan** - `^^` marker merges with cell above
|
|
119
|
-
|
|
120
|
-
✅ **Table Captions** - `[Caption]` format before/after table
|
|
121
|
-
|
|
122
|
-
- ✅ **Backward Compatible** - All existing tables work
|
|
123
|
-
|
|
124
|
-
perfectly
|
|
125
|
-
|
|
126
|
-
**Examples:**
|
|
127
|
-
```markdown
|
|
128
|
-
| Header 1 | Header 2 | Header 3 |
|
|
129
|
-
| --------- | -------- | -------- |
|
|
130
|
-
| Wide cell | | Normal | # colspan with empty cells |
|
|
131
|
-
| Row 1 | Data A | Data X |
|
|
132
|
-
| ^^ | Data B | Data Y | # rowspan with ^^ |
|
|
133
|
-
|
|
134
|
-
[Table 1: Sales Data] # caption
|
|
135
|
-
|
|
136
|
-
| Quarter | Revenue |
|
|
137
|
-
| ------- | ------- |
|
|
138
|
-
| Q1 | $100k |
|
|
139
|
-
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
**Implementation:** Postprocessing extension that detects
|
|
143
|
-
span patterns and captions without modifying the core table
|
|
144
|
-
parser.
|
|
145
|
-
|
|
146
|
-
**Future Enhancements (Optional):**
|
|
147
|
-
|
|
148
|
-
- Multi-line cells with `\\` in header
|
|
149
|
-
- Cell background colors via attributes
|
|
150
|
-
- More complex table layouts
|
|
151
|
-
|
|
152
|
-
### Complete GitHub Emoji Support
|
|
153
|
-
|
|
154
|
-
From: https://gist.github.com/rxaviers/7360908
|
|
155
|
-
|
|
156
|
-
**Current:** 350+ common emoji ✅
|
|
157
|
-
**Target:** 1,800+ complete GitHub emoji set (optional
|
|
158
|
-
expansion)
|
|
159
|
-
|
|
160
|
-
**Popular Categories:**
|
|
161
|
-
|
|
162
|
-
**Smileys & Emotion:** :smile:, :heart:, :joy:, :cry:, etc.
|
|
163
|
-
|
|
164
|
-
- **People & Body:** :thumbsup:, :wave:, :clap:, :muscle:,
|
|
165
|
-
|
|
166
|
-
etc.
|
|
167
|
-
|
|
168
|
-
- **Animals & Nature:** :dog:, :cat:, :tree:, :sun:, etc.
|
|
169
|
-
- **Food & Drink:** :pizza:, :coffee:, :beer:, :cake:, etc.
|
|
170
|
-
- **Travel & Places:** :car:, :airplane:, :house:,
|
|
171
|
-
|
|
172
|
-
:flag-us:, etc.
|
|
173
|
-
|
|
174
|
-
- **Activities:** :soccer:, :basketball:, :guitar:, :art:,
|
|
175
|
-
|
|
176
|
-
etc.
|
|
177
|
-
|
|
178
|
-
- **Objects:** :phone:, :computer:, :book:, :gift:, etc.
|
|
179
|
-
- **Symbols:** :heart:, :star:, :check:, :cross:, etc.
|
|
180
|
-
- **Flags:** :flag-us:, :flag-gb:, :flag-jp:, etc.
|
|
181
|
-
|
|
182
|
-
**Implementation Approaches:**
|
|
183
|
-
|
|
184
|
-
**Option A: Static Map** (Simplest)
|
|
185
|
-
|
|
186
|
-
- Include all 1,800+ emoji in C array
|
|
187
|
-
- ~100KB of emoji data
|
|
188
|
-
- No external dependencies
|
|
189
|
-
- Fast lookup
|
|
190
|
-
- **Estimate:** 2-3 hours (mostly data entry)
|
|
191
|
-
|
|
192
|
-
**Option B: JSON Database** (Flexible)
|
|
193
|
-
|
|
194
|
-
- Load emoji from JSON file
|
|
195
|
-
- Easier to update
|
|
196
|
-
- Smaller binary
|
|
197
|
-
- **Estimate:** 3-4 hours
|
|
198
|
-
|
|
199
|
-
**Option C: External API** (Not recommended)
|
|
200
|
-
|
|
201
|
-
- Query GitHub API
|
|
202
|
-
- Requires network
|
|
203
|
-
- Slow
|
|
204
|
-
- Not practical for Apex
|
|
205
|
-
|
|
206
|
-
**Recommendation:** Option A (static map)
|
|
207
|
-
|
|
208
|
-
### Definition Lists (Foundation Complete)
|
|
209
|
-
|
|
210
|
-
**Status:** [ ] Foundation implemented, needs parsing
|
|
211
|
-
enhancement
|
|
212
|
-
|
|
213
|
-
Kramdown/PHP Markdown Extra definition lists:
|
|
214
|
-
|
|
215
|
-
```markdown
|
|
216
|
-
Term 1
|
|
217
|
-
: Definition 1a
|
|
218
|
-
: Definition 1b
|
|
219
|
-
|
|
220
|
-
Term 2
|
|
221
|
-
: Definition 2
|
|
222
|
-
With multiple paragraphs
|
|
223
|
-
|
|
224
|
-
And code blocks
|
|
225
|
-
|
|
226
|
-
code here
|
|
227
|
-
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
**What's Complete:**
|
|
231
|
-
|
|
232
|
-
- [x] Extension structure created
|
|
233
|
-
- [x] Node types registered (`<dl>`, `<dt>`, `<dd>`)
|
|
234
|
-
- [x] HTML rendering implemented
|
|
235
|
-
- [x] Block containment support
|
|
236
|
-
|
|
237
|
-
**What's Needed:**
|
|
238
|
-
|
|
239
|
-
- [ ] Parsing logic to detect `:` lines
|
|
240
|
-
- [ ] Convert paragraphs + definitions to proper structure
|
|
241
|
-
- [ ] Block-level content parsing in definitions
|
|
242
|
-
|
|
243
|
-
**Implementation Estimate:** 1-2 hours (for completion)
|
|
244
|
-
**Complexity:** Medium (parsing logic)
|
|
245
|
-
|
|
246
|
-
### ~~Kramdown IAL (Full Implementation)~~ ✅ COMPLETE
|
|
247
|
-
|
|
248
|
-
**Status:** ✅ Fully implemented (December 4, 2025)
|
|
249
|
-
|
|
250
|
-
**What's Working:**
|
|
251
|
-
|
|
252
|
-
**Block IAL:**
|
|
253
|
-
```markdown
|
|
254
|
-
## Header
|
|
255
|
-
{: #custom-id .class1 .class2 key="value"}
|
|
256
|
-
|
|
257
|
-
Paragraph with attributes.
|
|
258
|
-
{: .special}
|
|
259
|
-
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
**Output:**
|
|
263
|
-
```html
|
|
264
|
-
<h1 id="custom-id" class="class1 class2" key="value">Header</h1>
|
|
265
|
-
<p class="special">Paragraph with attributes.</p>
|
|
266
|
-
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
**Attribute List Definitions (ALD):**
|
|
270
|
-
```markdown
|
|
271
|
-
{:ref: #id .class key="value"}
|
|
272
|
-
|
|
273
|
-
## Header
|
|
274
|
-
{: ref}
|
|
275
|
-
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
**Features Complete:**
|
|
279
|
-
|
|
280
|
-
- ✅ Parse `{: attributes}` syntax
|
|
281
|
-
- ✅ Parse `{:name: attributes}` ALD definitions
|
|
282
|
-
- ✅ Store and resolve ALD references
|
|
283
|
-
- ✅ Attach attributes to block elements (headers,
|
|
284
|
-
|
|
285
|
-
paragraphs, blockquotes)
|
|
286
|
-
|
|
287
|
-
- ✅ Complex attribute parsing (ID, classes, key-value pairs)
|
|
288
|
-
- ✅ Custom HTML renderer injects attributes
|
|
289
|
-
- ✅ IAL paragraphs removed from output
|
|
290
|
-
|
|
291
|
-
**Future Enhancement:**
|
|
292
|
-
|
|
293
|
-
- Span-level IAL: `*text*{:.class}` (lower priority)
|
|
294
|
-
|
|
295
|
-
### HTML Markdown Attributes
|
|
296
|
-
|
|
297
|
-
Parse markdown inside HTML based on `markdown` attribute:
|
|
298
|
-
|
|
299
|
-
```html
|
|
300
|
-
<div markdown="1">
|
|
301
|
-
## This markdown is parsed
|
|
302
|
-
</div>
|
|
303
|
-
|
|
304
|
-
<span markdown="span">*emphasis* works</span>
|
|
305
|
-
|
|
306
|
-
<div markdown="0">
|
|
307
|
-
## This is literal, not parsed
|
|
308
|
-
</div>
|
|
309
|
-
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
**Requirements:**
|
|
313
|
-
|
|
314
|
-
- Parse HTML tags during preprocessing
|
|
315
|
-
- Check for `markdown` attribute
|
|
316
|
-
- Selectively enable/disable markdown parsing
|
|
317
|
-
- Handle block vs. span contexts
|
|
318
|
-
- Complex interaction with HTML parser
|
|
319
|
-
|
|
320
|
-
**Implementation Estimate:** 3-4 hours
|
|
321
|
-
**Complexity:** High
|
|
322
|
-
|
|
323
|
-
### ~~Advanced Footnote Features~~ ✅ COMPLETE
|
|
324
|
-
|
|
325
|
-
**Status:** ✅ Fully implemented (December 4, 2025)
|
|
326
|
-
|
|
327
|
-
**Block-level content in footnotes:**
|
|
328
|
-
```markdown
|
|
329
|
-
[^1]: Simple footnote.
|
|
330
|
-
|
|
331
|
-
[^complex]: Footnote with multiple paragraphs.
|
|
332
|
-
|
|
333
|
-
Second paragraph with more details.
|
|
334
|
-
|
|
335
|
-
```python
|
|
336
|
-
|
|
337
|
-
def example():
|
|
338
|
-
return "code in footnote"
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
- List item one
|
|
342
|
-
- List item two
|
|
343
|
-
|
|
344
|
-
```
|
|
345
|
-
|
|
346
|
-
**Features Complete:**
|
|
347
|
-
|
|
348
|
-
- [x] Detects block-level content patterns (blank lines,
|
|
349
|
-
|
|
350
|
-
indentation)
|
|
351
|
-
|
|
352
|
-
- [x] Re-parses footnote definitions as full Markdown blocks
|
|
353
|
-
- [x] Supports multiple paragraphs
|
|
354
|
-
- [x] Supports code blocks (fenced and indented)
|
|
355
|
-
- [x] Supports lists, blockquotes, and other block elements
|
|
356
|
-
|
|
357
|
-
[x] Postprocessing approach (no parser modification needed)
|
|
358
|
-
|
|
359
|
-
- [x] Maintains compatibility with simple footnotes
|
|
360
|
-
|
|
361
|
-
**Implementation:** Advanced footnotes extension with
|
|
362
|
-
postprocessing to enhance cmark-gfm's footnote system.
|
|
363
|
-
|
|
364
|
-
### ~~Page Breaks & Special Markers~~ ✅ COMPLETE
|
|
365
|
-
|
|
366
|
-
**Status:** ✅ Implemented
|
|
367
|
-
|
|
368
|
-
**Page Breaks:**
|
|
369
|
-
```markdown
|
|
370
|
-
<!--BREAK--> # [x] Working
|
|
371
|
-
{::pagebreak /} # [x] Working
|
|
372
|
-
|
|
373
|
-
```
|
|
374
|
-
|
|
375
|
-
**Autoscroll Pauses:**
|
|
376
|
-
```markdown
|
|
377
|
-
<!--PAUSE:5--> # [x] Working
|
|
378
|
-
|
|
379
|
-
```
|
|
380
|
-
|
|
381
|
-
Outputs proper HTML with classes and inline styles for
|
|
382
|
-
print/PDF compatibility.
|
|
383
|
-
|
|
384
|
-
### ~~End of Block Marker~~ ✅ COMPLETE
|
|
385
|
-
|
|
386
|
-
**Status:** ✅ Implemented
|
|
387
|
-
|
|
388
|
-
Kramdown's block separator:
|
|
389
|
-
|
|
390
|
-
```markdown
|
|
391
|
-
* list one
|
|
392
|
-
^
|
|
393
|
-
* list two
|
|
394
|
-
|
|
395
|
-
```
|
|
396
|
-
|
|
397
|
-
Forces separate lists instead of continuation.
|
|
398
|
-
|
|
399
|
-
**Implementation:** Part of special_markers extension,
|
|
400
|
-
processes `^` character as block separator.
|
|
401
|
-
|
|
402
|
-
### Pygments Syntax Highlighting
|
|
403
|
-
|
|
404
|
-
Server-side syntax highlighting using Pygments:
|
|
405
|
-
|
|
406
|
-
**Requirements:**
|
|
407
|
-
|
|
408
|
-
- Python Pygments dependency
|
|
409
|
-
- Shell out to Pygments
|
|
410
|
-
- Cache results
|
|
411
|
-
- Handle multiple languages
|
|
412
|
-
- Error handling
|
|
413
|
-
|
|
414
|
-
**Alternative:** client-side (Prism.js, highlight.js)
|
|
415
|
-
|
|
416
|
-
**Implementation Estimate:** 4-6 hours
|
|
417
|
-
**Complexity:** High (external dependency)
|
|
418
|
-
|
|
419
|
-
## Implementation Priority Recommendations
|
|
420
|
-
|
|
421
|
-
### Tier 1: High Value, Easy (< 2 hours each) - ✅ ALL COMPLETE!
|
|
422
|
-
1. [x] **Callouts** - COMPLETE
|
|
423
|
-
2. [x] **File Includes** - COMPLETE
|
|
424
|
-
3. [x] **TOC Generation** - COMPLETE
|
|
425
|
-
4. [x] **Abbreviations** - COMPLETE
|
|
426
|
-
5. [x] **GitHub Emoji** - COMPLETE (350+ emoji)
|
|
427
|
-
6. [x] **Page Breaks & Pauses** - COMPLETE
|
|
428
|
-
7. [x] **End of Block Markers** - COMPLETE
|
|
429
|
-
|
|
430
|
-
### Tier 2: High Value, Medium Effort (2-4 hours each)
|
|
431
|
-
1. **Expand GitHub Emoji** to full 1,800+ set (currently
|
|
432
|
-
|
|
433
|
-
350+) - Optional
|
|
434
|
-
|
|
435
|
-
2. [ ] **Definition Lists** (foundation complete, needs
|
|
436
|
-
|
|
437
|
-
parsing)
|
|
438
|
-
|
|
439
|
-
3. **MMD File Transclusion** ({{file}} syntax, wildcards,
|
|
440
|
-
|
|
441
|
-
ranges) - Future
|
|
442
|
-
|
|
443
|
-
### Tier 3: Complex Features
|
|
444
|
-
1. [x] **Advanced Table Syntax** - COMPLETE (rowspan,
|
|
445
|
-
|
|
446
|
-
colspan, captions)
|
|
447
|
-
|
|
448
|
-
2. [x] **Full Kramdown IAL with ALD** - COMPLETE
|
|
449
|
-
|
|
450
|
-
[x] **Advanced Footnotes** - COMPLETE (block-level content)
|
|
451
|
-
|
|
452
|
-
[ ] **HTML Markdown Attributes** - Future (lower priority)
|
|
453
|
-
|
|
454
|
-
5. [ ] **Pygments Integration** - Probably stick with
|
|
455
|
-
|
|
456
|
-
client-side highlighting
|