Markdown parser fork with extended syntax for personal use.
1//! Semantic labels of things happening.
2
3use crate::unist;
4use crate::util::constant::TAB_SIZE;
5
6/// Semantic label of a span.
7#[derive(Clone, Debug, Eq, Hash, PartialEq)]
8pub enum Name {
9 /// Attention sequence.
10 ///
11 /// > 👉 **Note**: this is used while parsing but compiled away.
12 AttentionSequence,
13 /// Whole autolink.
14 ///
15 /// ## Info
16 ///
17 /// * **Context**:
18 /// [text content][crate::construct::text]
19 /// * **Content model**:
20 /// [`AutolinkEmail`][Name::AutolinkEmail],
21 /// [`AutolinkMarker`][Name::AutolinkMarker],
22 /// [`AutolinkProtocol`][Name::AutolinkProtocol]
23 /// * **Construct**:
24 /// [`autolink`][crate::construct::autolink]
25 ///
26 /// ## Example
27 ///
28 /// ```markdown
29 /// > | <https://example.com> and <admin@example.com>
30 /// ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^
31 /// ```
32 Autolink,
33 /// Email autolink w/o markers.
34 ///
35 /// ## Info
36 ///
37 /// * **Context**:
38 /// [`Autolink`][Name::Autolink]
39 /// * **Content model**:
40 /// void
41 /// * **Construct**:
42 /// [`autolink`][crate::construct::autolink]
43 ///
44 /// ## Example
45 ///
46 /// ```markdown
47 /// > | <admin@example.com>
48 /// ^^^^^^^^^^^^^^^^^
49 /// ```
50 AutolinkEmail,
51 /// Marker of an autolink.
52 ///
53 /// ## Info
54 ///
55 /// * **Context**:
56 /// [`Autolink`][Name::Autolink]
57 /// * **Content model**:
58 /// void
59 /// * **Construct**:
60 /// [`autolink`][crate::construct::autolink]
61 ///
62 /// ## Example
63 ///
64 /// ```markdown
65 /// > | <https://example.com>
66 /// ^ ^
67 /// ```
68 AutolinkMarker,
69 /// Protocol autolink w/o markers.
70 ///
71 /// ## Info
72 ///
73 /// * **Context**:
74 /// [`Autolink`][Name::Autolink]
75 /// * **Content model**:
76 /// void
77 /// * **Construct**:
78 /// [`autolink`][crate::construct::autolink]
79 ///
80 /// ## Example
81 ///
82 /// ```markdown
83 /// > | <https://example.com>
84 /// ^^^^^^^^^^^^^^^^^^^
85 /// ```
86 AutolinkProtocol,
87 /// Line ending preceded only by whitespace or nothing at all.
88 ///
89 /// ## Info
90 ///
91 /// * **Context**:
92 /// [flow content][crate::construct::flow]
93 /// * **Content model**:
94 /// void
95 /// * **Construct**:
96 /// [`blank_line`][crate::construct::blank_line]
97 ///
98 /// ## Example
99 ///
100 /// ```markdown
101 /// > | ␠␠␊
102 /// ^
103 /// ```
104 BlankLineEnding,
105 /// Whole block quote.
106 ///
107 /// ## Info
108 ///
109 /// * **Context**:
110 /// [document content][crate::construct::document]
111 /// * **Content model**:
112 /// [`BlockQuotePrefix`][Name::BlockQuotePrefix],
113 /// [flow content][crate::construct::flow]
114 /// * **Construct**:
115 /// [`block_quote`][crate::construct::block_quote]
116 ///
117 /// ## Example
118 ///
119 /// ```markdown
120 /// > | > a
121 /// ^^^
122 /// > | b
123 /// ^
124 /// ```
125 ObsidianBlockQuoteCallout,
126 ObsidianBlockQuoteCalloutType,
127 ObsidianText,
128 BlockQuote,
129 /// Block quote marker.
130 ///
131 /// ## Info
132 ///
133 /// * **Context**:
134 /// [`BlockQuotePrefix`][Name::BlockQuotePrefix]
135 /// * **Content model**:
136 /// void
137 /// * **Construct**:
138 /// [`block_quote`][crate::construct::block_quote]
139 ///
140 /// ## Example
141 ///
142 /// ```markdown
143 /// > | > a
144 /// ^
145 /// | b
146 /// ```
147 BlockQuoteMarker,
148 /// Block quote prefix.
149 ///
150 /// ## Info
151 ///
152 /// * **Context**:
153 /// [`BlockQuote`][Name::BlockQuote]
154 /// * **Content model**:
155 /// [`BlockQuoteMarker`][Name::BlockQuoteMarker],
156 /// [`SpaceOrTab`][Name::SpaceOrTab]
157 /// * **Construct**:
158 /// [`block_quote`][crate::construct::block_quote]
159 ///
160 /// ## Example
161 ///
162 /// ```markdown
163 /// > | > a
164 /// ^^
165 /// | b
166 /// ```
167 BlockQuotePrefix,
168 /// Byte order mark.
169 ///
170 /// ## Info
171 ///
172 /// * **Context**:
173 /// optional first event
174 /// * **Content model**:
175 /// void
176 /// * **Construct**:
177 /// [`document`][crate::construct::document]
178 ByteOrderMark,
179 /// Whole character escape.
180 ///
181 /// ## Info
182 ///
183 /// * **Context**:
184 /// [string content][crate::construct::string] or
185 /// [text content][crate::construct::text]
186 /// * **Content model**:
187 /// [`CharacterEscapeMarker`][Name::CharacterEscapeMarker],
188 /// [`CharacterEscapeValue`][Name::CharacterEscapeValue]
189 /// * **Construct**:
190 /// [`character_escape`][crate::construct::character_escape]
191 ///
192 /// ## Example
193 ///
194 /// ```markdown
195 /// > | a \- b
196 /// ^^
197 /// ```
198 CharacterEscape,
199 /// Character escape marker.
200 ///
201 /// ## Info
202 ///
203 /// * **Context**:
204 /// [`CharacterEscape`][Name::CharacterEscape]
205 /// * **Content model**:
206 /// void
207 /// * **Construct**:
208 /// [`character_escape`][crate::construct::character_escape]
209 ///
210 /// ## Example
211 ///
212 /// ```markdown
213 /// > | a \- b
214 /// ^
215 /// ```
216 CharacterEscapeMarker,
217 /// Character escape value.
218 ///
219 /// ## Info
220 ///
221 /// * **Context**:
222 /// [`CharacterEscape`][Name::CharacterEscape]
223 /// * **Content model**:
224 /// void
225 /// * **Construct**:
226 /// [`character_escape`][crate::construct::character_escape]
227 ///
228 /// ## Example
229 ///
230 /// ```markdown
231 /// > | a \- b
232 /// ^
233 /// ```
234 CharacterEscapeValue,
235 /// Whole character reference.
236 ///
237 /// ## Info
238 ///
239 /// * **Context**:
240 /// [string content][crate::construct::string] or
241 /// [text content][crate::construct::text]
242 /// * **Content model**:
243 /// [`CharacterReferenceMarker`][Name::CharacterReferenceMarker],
244 /// [`CharacterReferenceMarkerHexadecimal`][Name::CharacterReferenceMarkerHexadecimal],
245 /// [`CharacterReferenceMarkerNumeric`][Name::CharacterReferenceMarkerNumeric],
246 /// [`CharacterReferenceMarkerSemi`][Name::CharacterReferenceMarkerSemi],
247 /// [`CharacterReferenceValue`][Name::CharacterReferenceValue]
248 /// * **Construct**:
249 /// [`character_reference`][crate::construct::character_reference]
250 ///
251 /// ## Example
252 ///
253 /// ```markdown
254 /// > | a & b ≠ c 𝌆 d
255 /// ^^^^^ ^^^^^^^ ^^^^^^^^^
256 /// ```
257 CharacterReference,
258 /// Character reference opening marker.
259 ///
260 /// ## Info
261 ///
262 /// * **Context**:
263 /// [`CharacterReference`][Name::CharacterReference]
264 /// * **Content model**:
265 /// void
266 /// * **Construct**:
267 /// [`character_reference`][crate::construct::character_reference]
268 ///
269 /// ## Example
270 ///
271 /// ```markdown
272 /// > | a & b ≠ c 𝌆 d
273 /// ^ ^ ^
274 /// ```
275 CharacterReferenceMarker,
276 /// Character reference hexadecimal numeric marker.
277 ///
278 /// ## Info
279 ///
280 /// * **Context**:
281 /// [`CharacterReference`][Name::CharacterReference]
282 /// * **Content model**:
283 /// void
284 /// * **Construct**:
285 /// [`character_reference`][crate::construct::character_reference]
286 ///
287 /// ## Example
288 ///
289 /// ```markdown
290 /// > | a & b ≠ c 𝌆 d
291 /// ^
292 /// ```
293 CharacterReferenceMarkerHexadecimal,
294 /// Character reference numeric marker.
295 ///
296 /// ## Info
297 ///
298 /// * **Context**:
299 /// [`CharacterReference`][Name::CharacterReference]
300 /// * **Content model**:
301 /// void
302 /// * **Construct**:
303 /// [`character_reference`][crate::construct::character_reference]
304 ///
305 /// ## Example
306 ///
307 /// ```markdown
308 /// > | a & b ≠ c 𝌆 d
309 /// ^ ^
310 /// ```
311 CharacterReferenceMarkerNumeric,
312 /// Character reference closing marker.
313 ///
314 /// ## Info
315 ///
316 /// * **Context**:
317 /// [`CharacterReference`][Name::CharacterReference]
318 /// * **Content model**:
319 /// void
320 /// * **Construct**:
321 /// [`character_reference`][crate::construct::character_reference]
322 ///
323 /// ## Example
324 ///
325 /// ```markdown
326 /// > | a & b ≠ c 𝌆 d
327 /// ^ ^ ^
328 /// ```
329 CharacterReferenceMarkerSemi,
330 /// Character reference value.
331 ///
332 /// ## Info
333 ///
334 /// * **Context**:
335 /// [`CharacterReference`][Name::CharacterReference]
336 /// * **Content model**:
337 /// void
338 /// * **Construct**:
339 /// [`character_reference`][crate::construct::character_reference]
340 ///
341 /// ## Example
342 ///
343 /// ```markdown
344 /// > | a & b ≠ c 𝌆 d
345 /// ^^^ ^^^^ ^^^^^
346 /// ```
347 CharacterReferenceValue,
348 /// Whole code (fenced).
349 ///
350 /// ## Info
351 ///
352 /// * **Context**:
353 /// [flow content][crate::construct::flow]
354 /// * **Content model**:
355 /// [`CodeFencedFence`][Name::CodeFencedFence],
356 /// [`CodeFlowChunk`][Name::CodeFlowChunk],
357 /// [`LineEnding`][Name::LineEnding],
358 /// [`SpaceOrTab`][Name::SpaceOrTab]
359 /// * **Construct**:
360 /// [`raw_flow`][crate::construct::raw_flow]
361 ///
362 /// ## Example
363 ///
364 /// ````markdown
365 /// > | ```js
366 /// ^^^^^
367 /// > | console.log(1)
368 /// ^^^^^^^^^^^^^^
369 /// > | ```
370 /// ^^^
371 /// ````
372 CodeFenced,
373 /// A code (fenced) fence.
374 ///
375 /// ## Info
376 ///
377 /// * **Context**:
378 /// [`CodeFenced`][Name::CodeFenced]
379 /// * **Content model**:
380 /// [`CodeFencedFenceInfo`][Name::CodeFencedFenceInfo],
381 /// [`CodeFencedFenceMeta`][Name::CodeFencedFenceMeta],
382 /// [`CodeFencedFenceSequence`][Name::CodeFencedFenceSequence],
383 /// [`SpaceOrTab`][Name::SpaceOrTab]
384 /// * **Construct**:
385 /// [`raw_flow`][crate::construct::raw_flow]
386 ///
387 /// ## Example
388 ///
389 /// ````markdown
390 /// > | ```js
391 /// ^^^^^
392 /// | console.log(1)
393 /// > | ```
394 /// ^^^
395 /// ````
396 CodeFencedFence,
397 /// A code (fenced) fence info word.
398 ///
399 /// ## Info
400 ///
401 /// * **Context**:
402 /// [`CodeFencedFence`][Name::CodeFencedFence]
403 /// * **Content model**:
404 /// [string content][crate::construct::string]
405 /// * **Construct**:
406 /// [`raw_flow`][crate::construct::raw_flow]
407 ///
408 /// ## Example
409 ///
410 /// ````markdown
411 /// > | ```js
412 /// ^^
413 /// | console.log(1)
414 /// | ```
415 /// ````
416 CodeFencedFenceInfo,
417 /// A code (fenced) fence meta string.
418 ///
419 /// ## Info
420 ///
421 /// * **Context**:
422 /// [`CodeFencedFence`][Name::CodeFencedFence]
423 /// * **Content model**:
424 /// [string content][crate::construct::string]
425 /// * **Construct**:
426 /// [`raw_flow`][crate::construct::raw_flow]
427 ///
428 /// ## Example
429 ///
430 /// ````markdown
431 /// > | ```js highlight="1"
432 /// ^^^^^^^^^^^^^
433 /// | console.log(1)
434 /// | ```
435 /// ````
436 CodeFencedFenceMeta,
437 /// A code (fenced) fence sequence.
438 ///
439 /// ## Info
440 ///
441 /// * **Context**:
442 /// [`CodeFencedFenceSequence`][Name::CodeFencedFenceSequence]
443 /// * **Content model**:
444 /// void
445 /// * **Construct**:
446 /// [`raw_flow`][crate::construct::raw_flow]
447 ///
448 /// ## Example
449 ///
450 /// ````markdown
451 /// > | ```js
452 /// ^^^
453 /// | console.log(1)
454 /// > | ```
455 /// ^^^
456 /// ````
457 CodeFencedFenceSequence,
458 /// A code (fenced, indented) chunk.
459 ///
460 /// ## Info
461 ///
462 /// * **Context**:
463 /// [`CodeFenced`][Name::CodeFenced],
464 /// [`CodeIndented`][Name::CodeIndented]
465 /// * **Content model**:
466 /// void
467 /// * **Construct**:
468 /// [`raw_flow`][crate::construct::raw_flow],
469 /// [`code_indented`][crate::construct::code_indented]
470 ///
471 /// ## Example
472 ///
473 /// ````markdown
474 /// | ```js
475 /// > | console.log(1)
476 /// ^^^^^^^^^^^^^^
477 /// | ```
478 /// ````
479 ///
480 /// ```markdown
481 /// > | ␠␠␠␠console.log(1)
482 /// ^^^^^^^^^^^^^^
483 /// ```
484 CodeFlowChunk,
485 /// Whole code (indented).
486 ///
487 /// ## Info
488 ///
489 /// * **Context**:
490 /// [flow content][crate::construct::flow]
491 /// * **Content model**:
492 /// [`CodeFlowChunk`][Name::CodeFlowChunk],
493 /// [`LineEnding`][Name::LineEnding],
494 /// [`SpaceOrTab`][Name::SpaceOrTab]
495 /// * **Construct**:
496 /// [`raw_flow`][crate::construct::raw_flow]
497 ///
498 /// ## Example
499 ///
500 /// ```markdown
501 /// ␠␠␠␠console.log(1)
502 /// ^^^^^^^^^^^^^^^^^^
503 /// ```
504 CodeIndented,
505 /// Whole code (text).
506 ///
507 /// ## Info
508 ///
509 /// * **Context**:
510 /// [text content][crate::construct::text]
511 /// * **Content model**:
512 /// [`CodeTextData`][Name::CodeTextData],
513 /// [`CodeTextSequence`][Name::CodeTextSequence],
514 /// [`LineEnding`][Name::LineEnding]
515 /// * **Construct**:
516 /// [`raw_text`][crate::construct::raw_text]
517 ///
518 /// ## Example
519 ///
520 /// ```markdown
521 /// > | a `b` c
522 /// ^^^
523 /// ```
524 CodeText,
525 /// Code (text) data.
526 ///
527 /// ## Info
528 ///
529 /// * **Context**:
530 /// [`CodeText`][Name::CodeText]
531 /// * **Content model**:
532 /// void
533 /// * **Construct**:
534 /// [`raw_text`][crate::construct::raw_text]
535 ///
536 /// ## Example
537 ///
538 /// ```markdown
539 /// > | a `b` c
540 /// ^
541 /// ```
542 CodeTextData,
543 /// Code (text) sequence.
544 ///
545 /// ## Info
546 ///
547 /// * **Context**:
548 /// [`CodeText`][Name::CodeText]
549 /// * **Content model**:
550 /// void
551 /// * **Construct**:
552 /// [`raw_text`][crate::construct::raw_text]
553 ///
554 /// ## Example
555 ///
556 /// ```markdown
557 /// > | a `b` c
558 /// ^ ^
559 /// ```
560 CodeTextSequence,
561 /// Content.
562 ///
563 /// ## Info
564 ///
565 /// * **Context**:
566 /// [flow content][crate::construct::flow]
567 /// * **Content model**:
568 /// [content][crate::construct::content]
569 /// * **Construct**:
570 /// [`content`][crate::construct::content]
571 ///
572 /// ## Example
573 ///
574 /// ```markdown
575 /// > | [a]: b
576 /// ^^^^^^
577 /// > | c.
578 /// ^^
579 /// ```
580 Content,
581 /// Data.
582 ///
583 /// ## Info
584 ///
585 /// * **Context**:
586 /// [string content][crate::construct::string],
587 /// [text content][crate::construct::text]
588 /// * **Content model**:
589 /// void
590 /// * **Construct**:
591 /// [`data`][crate::construct::partial_data]
592 ///
593 /// ## Example
594 ///
595 /// ```markdown
596 /// > | aa *bb* cc
597 /// ^^^ ^^ ^^^
598 /// ```
599 Data,
600 /// Whole definition.
601 ///
602 /// ## Info
603 ///
604 /// * **Context**:
605 /// [flow content][crate::construct::flow]
606 /// * **Content model**:
607 /// [`DefinitionMarker`][Name::DefinitionMarker],
608 /// [`DefinitionLabel`][Name::DefinitionLabel],
609 /// [`DefinitionDestination`][Name::DefinitionDestination],
610 /// [`DefinitionTitle`][Name::DefinitionTitle],
611 /// [`LineEnding`][Name::LineEnding],
612 /// [`SpaceOrTab`][Name::SpaceOrTab]
613 /// * **Construct**:
614 /// [`definition`][crate::construct::definition]
615 ///
616 /// ## Example
617 ///
618 /// ```markdown
619 /// > | [a]: b "c"
620 /// ^^^^^^^^^^
621 /// ```
622 Definition,
623 /// Whole definition destination.
624 ///
625 /// ## Info
626 ///
627 /// * **Context**:
628 /// [`Definition`][Name::Definition]
629 /// * **Content model**:
630 /// [`DefinitionDestinationLiteral`][Name::DefinitionDestinationLiteral],
631 /// [`DefinitionDestinationRaw`][Name::DefinitionDestinationRaw]
632 /// * **Construct**:
633 /// [`destination`][crate::construct::partial_destination]
634 ///
635 /// ## Example
636 ///
637 /// ```markdown
638 /// > | [a]: b "c"
639 /// ^
640 /// > | [a]: <b> "c"
641 /// ^^^
642 /// ```
643 DefinitionDestination,
644 /// Definition destination literal.
645 ///
646 /// ## Info
647 ///
648 /// * **Context**:
649 /// [`DefinitionDestination`][Name::DefinitionDestination]
650 /// * **Content model**:
651 /// [`DefinitionDestinationLiteralMarker`][Name::DefinitionDestinationLiteralMarker],
652 /// [`DefinitionDestinationString`][Name::DefinitionDestinationString]
653 /// * **Construct**:
654 /// [`destination`][crate::construct::partial_destination]
655 ///
656 /// ## Example
657 ///
658 /// ```markdown
659 /// > | [a]: <b> "c"
660 /// ^^^
661 /// ```
662 DefinitionDestinationLiteral,
663 /// Definition destination literal marker.
664 ///
665 /// ## Info
666 ///
667 /// * **Context**:
668 /// [`DefinitionDestinationLiteral`][Name::DefinitionDestinationLiteral]
669 /// * **Content model**:
670 /// void
671 /// * **Construct**:
672 /// [`destination`][crate::construct::partial_destination]
673 ///
674 /// ## Example
675 ///
676 /// ```markdown
677 /// > | [a]: <b> "c"
678 /// ^ ^
679 /// ```
680 DefinitionDestinationLiteralMarker,
681 /// Definition destination raw.
682 ///
683 /// ## Info
684 ///
685 /// * **Context**:
686 /// [`DefinitionDestination`][Name::DefinitionDestination]
687 /// * **Content model**:
688 /// [`DefinitionDestinationString`][Name::DefinitionDestinationString]
689 /// * **Construct**:
690 /// [`destination`][crate::construct::partial_destination]
691 ///
692 /// ## Example
693 ///
694 /// ```markdown
695 /// > | [a]: b "c"
696 /// ^
697 /// ```
698 DefinitionDestinationRaw,
699 /// Definition destination data.
700 ///
701 /// ## Info
702 ///
703 /// * **Context**:
704 /// [`DefinitionDestinationLiteral`][Name::DefinitionDestinationLiteral],
705 /// [`DefinitionDestinationRaw`][Name::DefinitionDestinationRaw]
706 /// * **Content model**:
707 /// [string content][crate::construct::string]
708 /// * **Construct**:
709 /// [`destination`][crate::construct::partial_destination]
710 ///
711 /// ## Example
712 ///
713 /// ```markdown
714 /// > | [a]: b "c"
715 /// ^
716 /// > | [a]: <b> "c"
717 /// ^
718 /// ```
719 DefinitionDestinationString,
720 /// Whole definition label.
721 ///
722 /// ## Info
723 ///
724 /// * **Context**:
725 /// [`Definition`][Name::Definition]
726 /// * **Content model**:
727 /// [`DefinitionLabelMarker`][Name::DefinitionLabelMarker],
728 /// [`DefinitionLabelString`][Name::DefinitionLabelString],
729 /// [`LineEnding`][Name::LineEnding],
730 /// [`SpaceOrTab`][Name::SpaceOrTab]
731 /// * **Construct**:
732 /// [`label`][crate::construct::partial_label]
733 ///
734 /// ## Example
735 ///
736 /// ```markdown
737 /// > | [a]: b "c"
738 /// ^^^
739 /// ```
740 DefinitionLabel,
741 /// Definition label marker.
742 ///
743 /// ## Info
744 ///
745 /// * **Context**:
746 /// [`DefinitionLabel`][Name::DefinitionLabel]
747 /// * **Content model**:
748 /// void
749 /// * **Construct**:
750 /// [`label`][crate::construct::partial_label]
751 ///
752 /// ## Example
753 ///
754 /// ```markdown
755 /// > | [a]: b "c"
756 /// ^ ^
757 /// ```
758 DefinitionLabelMarker,
759 /// Definition label data.
760 ///
761 /// ## Info
762 ///
763 /// * **Context**:
764 /// [`DefinitionLabel`][Name::DefinitionLabel]
765 /// * **Content model**:
766 /// [string content][crate::construct::string]
767 /// * **Construct**:
768 /// [`label`][crate::construct::partial_label]
769 ///
770 /// ## Example
771 ///
772 /// ```markdown
773 /// > | [a]: b "c"
774 /// ^
775 /// ```
776 DefinitionLabelString,
777 /// Definition marker.
778 ///
779 /// ## Info
780 ///
781 /// * **Context**:
782 /// [`Definition`][Name::Definition],
783 /// [`GfmFootnoteDefinition`][Name::GfmFootnoteDefinition]
784 /// * **Content model**:
785 /// void
786 /// * **Construct**:
787 /// [`definition`][crate::construct::definition]
788 ///
789 /// ## Example
790 ///
791 /// ```markdown
792 /// > | [a]: b "c"
793 /// ^
794 /// ```
795 DefinitionMarker,
796 /// Whole definition title.
797 ///
798 /// ## Info
799 ///
800 /// * **Context**:
801 /// [`Definition`][Name::Definition]
802 /// * **Content model**:
803 /// [`DefinitionTitleMarker`][Name::DefinitionTitleMarker],
804 /// [`DefinitionTitleString`][Name::DefinitionTitleString],
805 /// [`LineEnding`][Name::LineEnding],
806 /// [`SpaceOrTab`][Name::SpaceOrTab]
807 /// * **Construct**:
808 /// [`title`][crate::construct::partial_title]
809 ///
810 /// ## Example
811 ///
812 /// ```markdown
813 /// > | [a]: b "c"
814 /// ^^^
815 /// ```
816 DefinitionTitle,
817 /// Definition title marker.
818 ///
819 /// ## Info
820 ///
821 /// * **Context**:
822 /// [`DefinitionTitle`][Name::DefinitionTitle]
823 /// * **Content model**:
824 /// void
825 /// * **Construct**:
826 /// [`title`][crate::construct::partial_title]
827 ///
828 /// ## Example
829 ///
830 /// ```markdown
831 /// > | [a]: b "c"
832 /// ^ ^
833 /// ```
834 DefinitionTitleMarker,
835 /// Definition title data.
836 ///
837 /// ## Info
838 ///
839 /// * **Context**:
840 /// [`DefinitionTitle`][Name::DefinitionTitle]
841 /// * **Content model**:
842 /// [string content][crate::construct::string]
843 /// * **Construct**:
844 /// [`title`][crate::construct::partial_title]
845 ///
846 /// ## Example
847 ///
848 /// ```markdown
849 /// > | [a]: b "c"
850 /// ^
851 /// ```
852 DefinitionTitleString,
853 /// Emphasis.
854 ///
855 /// ## Info
856 ///
857 /// * **Context**:
858 /// [text content][crate::construct::text]
859 /// * **Content model**:
860 /// [`EmphasisSequence`][Name::EmphasisSequence],
861 /// [`EmphasisText`][Name::EmphasisText]
862 /// * **Construct**:
863 /// [`attention`][crate::construct::attention]
864 ///
865 /// ## Example
866 ///
867 /// ```markdown
868 /// > | *a*
869 /// ^^^
870 /// ```
871 Emphasis,
872 /// Emphasis sequence.
873 ///
874 /// ## Info
875 ///
876 /// * **Context**:
877 /// [`Emphasis`][Name::Emphasis]
878 /// * **Content model**:
879 /// void
880 /// * **Construct**:
881 /// [`attention`][crate::construct::attention]
882 ///
883 /// ## Example
884 ///
885 /// ```markdown
886 /// > | *a*
887 /// ^ ^
888 /// ```
889 EmphasisSequence,
890 /// Emphasis text.
891 ///
892 /// ## Info
893 ///
894 /// * **Context**:
895 /// [`Emphasis`][Name::Emphasis]
896 /// * **Content model**:
897 /// [text content][crate::construct::text]
898 /// * **Construct**:
899 /// [`attention`][crate::construct::attention]
900 ///
901 /// ## Example
902 ///
903 /// ```markdown
904 /// > | *a*
905 /// ^
906 /// ```
907 EmphasisText,
908 /// Whole frontmatter.
909 ///
910 /// ## Info
911 ///
912 /// * **Context**:
913 /// [document content][crate::construct::document]
914 /// * **Content model**:
915 /// [`FrontmatterFence`][Name::FrontmatterFence],
916 /// [`FrontmatterChunk`][Name::FrontmatterChunk],
917 /// [`LineEnding`][Name::LineEnding]
918 /// * **Construct**:
919 /// [`frontmatter`][crate::construct::frontmatter]
920 ///
921 /// ## Example
922 ///
923 /// ```markdown
924 /// > | ---
925 /// ^^^
926 /// > | title: Neptune
927 /// ^^^^^^^^^^^^^^
928 /// > | ---
929 /// ^^^
930 /// ```
931 Frontmatter,
932 /// Frontmatter chunk.
933 ///
934 /// ## Info
935 ///
936 /// * **Context**:
937 /// [`Frontmatter`][Name::Frontmatter]
938 /// * **Content model**:
939 /// void
940 /// * **Construct**:
941 /// [`frontmatter`][crate::construct::frontmatter]
942 ///
943 /// ## Example
944 ///
945 /// ```markdown
946 /// | ---
947 /// > | title: Neptune
948 /// ^^^^^^^^^^^^^^
949 /// | ---
950 /// ```
951 FrontmatterChunk,
952 /// Frontmatter fence.
953 ///
954 /// ## Info
955 ///
956 /// * **Context**:
957 /// [`Frontmatter`][Name::Frontmatter]
958 /// * **Content model**:
959 /// [`FrontmatterSequence`][Name::FrontmatterSequence],
960 /// [`SpaceOrTab`][Name::SpaceOrTab]
961 /// * **Construct**:
962 /// [`frontmatter`][crate::construct::frontmatter]
963 ///
964 /// ## Example
965 ///
966 /// ```markdown
967 /// > | ---
968 /// ^^^
969 /// | title: Neptune
970 /// > | ---
971 /// ^^^
972 /// ```
973 FrontmatterFence,
974 /// Frontmatter sequence.
975 ///
976 /// ## Info
977 ///
978 /// * **Context**:
979 /// [`FrontmatterFence`][Name::FrontmatterFence]
980 /// * **Content model**:
981 /// void
982 /// * **Construct**:
983 /// [`frontmatter`][crate::construct::frontmatter]
984 ///
985 /// ## Example
986 ///
987 /// ```markdown
988 /// > | ---
989 /// ^^^
990 /// | title: Neptune
991 /// > | ---
992 /// ^^^
993 /// ```
994 FrontmatterSequence,
995 /// GFM extension: email autolink.
996 ///
997 /// ## Info
998 ///
999 /// * **Context**:
1000 /// [text content][crate::construct::text]
1001 /// * **Content model**:
1002 /// void.
1003 /// * **Construct**:
1004 /// [`gfm_autolink_literal`][crate::construct::gfm_autolink_literal]
1005 ///
1006 /// ## Example
1007 ///
1008 /// ```markdown
1009 /// > | context@example.com
1010 /// ^^^^^^^^^^^^^^^^^^^
1011 /// ```
1012 GfmAutolinkLiteralEmail,
1013 /// GFM extension: email autolink w/ explicit `mailto`.
1014 ///
1015 /// ## Info
1016 ///
1017 /// * **Context**:
1018 /// [text content][crate::construct::text]
1019 /// * **Content model**:
1020 /// void.
1021 /// * **Construct**:
1022 /// [`gfm_autolink_literal`][crate::construct::gfm_autolink_literal]
1023 ///
1024 /// ## Example
1025 ///
1026 /// ```markdown
1027 /// > | mailto:context@example.com
1028 /// ^^^^^^^^^^^^^^^^^^^^^^^^^^
1029 /// ```
1030 GfmAutolinkLiteralMailto,
1031 /// GFM extension: autolink w/ protocol.
1032 ///
1033 /// ## Info
1034 ///
1035 /// * **Context**:
1036 /// [text content][crate::construct::text]
1037 /// * **Content model**:
1038 /// void.
1039 /// * **Construct**:
1040 /// [`gfm_autolink_literal`][crate::construct::gfm_autolink_literal]
1041 ///
1042 /// ## Example
1043 ///
1044 /// ```markdown
1045 /// > | https://example.com
1046 /// ^^^^^^^^^^^^^^^^^^^
1047 /// ```
1048 GfmAutolinkLiteralProtocol,
1049 /// GFM extension: autolink w/ www.
1050 ///
1051 /// ## Info
1052 ///
1053 /// * **Context**:
1054 /// [text content][crate::construct::text]
1055 /// * **Content model**:
1056 /// void.
1057 /// * **Construct**:
1058 /// [`gfm_autolink_literal`][crate::construct::gfm_autolink_literal]
1059 ///
1060 /// ## Example
1061 ///
1062 /// ```markdown
1063 /// > | www.example.com
1064 /// ^^^^^^^^^^^^^^^
1065 /// ```
1066 GfmAutolinkLiteralWww,
1067 /// GFM extension: email autolink w/ explicit `xmpp`.
1068 ///
1069 /// ## Info
1070 ///
1071 /// * **Context**:
1072 /// [text content][crate::construct::text]
1073 /// * **Content model**:
1074 /// void.
1075 /// * **Construct**:
1076 /// [`gfm_autolink_literal`][crate::construct::gfm_autolink_literal]
1077 ///
1078 /// ## Example
1079 ///
1080 /// ```markdown
1081 /// > | mailto:a@b.c/d
1082 /// ^^^^^^^^^^^^^^
1083 /// ```
1084 GfmAutolinkLiteralXmpp,
1085 /// GFM extension: whole footnote call.
1086 ///
1087 /// ## Info
1088 ///
1089 /// * **Context**:
1090 /// [text content][crate::construct::text]
1091 /// * **Content model**:
1092 /// [`Label`][Name::Label]
1093 /// * **Construct**:
1094 /// [`label_end`][crate::construct::label_end]
1095 ///
1096 /// ## Example
1097 ///
1098 /// ```markdown
1099 /// > | a [^b] c
1100 /// ^^^^
1101 /// ```
1102 GfmFootnoteCall,
1103 /// GFM extension: label start (footnote).
1104 ///
1105 /// ## Info
1106 ///
1107 /// * **Context**:
1108 /// [`Label`][Name::Label]
1109 /// * **Content model**:
1110 /// [`GfmFootnoteCallMarker`][Name::GfmFootnoteCallMarker],
1111 /// [`LabelMarker`][Name::LabelMarker]
1112 /// * **Construct**:
1113 /// [`gfm_label_start_footnote`][crate::construct::gfm_label_start_footnote]
1114 ///
1115 /// ## Example
1116 ///
1117 /// ```markdown
1118 /// > | a [^b] c
1119 /// ^^
1120 /// ```
1121 GfmFootnoteCallLabel,
1122 /// GFM extension: label start (footnote) marker.
1123 ///
1124 /// ## Info
1125 ///
1126 /// * **Context**:
1127 /// [`GfmFootnoteCallLabel`][Name::GfmFootnoteCallLabel]
1128 /// * **Content model**:
1129 /// void
1130 /// * **Construct**:
1131 /// [`gfm_label_start_footnote`][crate::construct::gfm_label_start_footnote]
1132 ///
1133 /// ## Example
1134 ///
1135 /// ```markdown
1136 /// > | a [^b] c
1137 /// ^
1138 /// ```
1139 GfmFootnoteCallMarker,
1140 /// GFM extension: whole footnote definition.
1141 ///
1142 /// ## Info
1143 ///
1144 /// * **Context**:
1145 /// [document content][crate::construct::document]
1146 /// * **Content model**:
1147 /// [`GfmFootnoteDefinitionPrefix`][Name::GfmFootnoteDefinitionPrefix],
1148 /// [document content][crate::construct::flow]
1149 /// * **Construct**:
1150 /// [`gfm_footnote_definition`][crate::construct::gfm_footnote_definition]
1151 ///
1152 /// ## Example
1153 ///
1154 /// ```markdown
1155 /// > | [^a]: b
1156 /// ^^^^^^^
1157 /// ```
1158 GfmFootnoteDefinition,
1159 /// GFM extension: footnote definition prefix.
1160 ///
1161 /// ## Info
1162 ///
1163 /// * **Context**:
1164 /// [`GfmFootnoteDefinition`][Name::GfmFootnoteDefinition]
1165 /// * **Content model**:
1166 /// [`DefinitionMarker`][Name::DefinitionMarker],
1167 /// [`GfmFootnoteDefinitionLabel`][Name::GfmFootnoteDefinitionLabel],
1168 /// [`SpaceOrTab`][Name::SpaceOrTab]
1169 /// * **Construct**:
1170 /// [`gfm_footnote_definition`][crate::construct::gfm_footnote_definition]
1171 ///
1172 /// ## Example
1173 ///
1174 /// ```markdown
1175 /// > | [^a]: b
1176 /// ^^^^^^
1177 /// ```
1178 GfmFootnoteDefinitionPrefix,
1179 /// GFM extension: footnote definition label.
1180 ///
1181 /// ## Info
1182 ///
1183 /// * **Context**:
1184 /// [`GfmFootnoteDefinitionPrefix`][Name::GfmFootnoteDefinitionPrefix]
1185 /// * **Content model**:
1186 /// [`GfmFootnoteDefinitionLabelMarker`][Name::GfmFootnoteDefinitionLabelMarker],
1187 /// [`GfmFootnoteDefinitionLabelString`][Name::GfmFootnoteDefinitionLabelString],
1188 /// [`GfmFootnoteDefinitionMarker`][Name::GfmFootnoteDefinitionMarker]
1189 /// * **Construct**:
1190 /// [`gfm_footnote_definition`][crate::construct::gfm_footnote_definition]
1191 ///
1192 /// ## Example
1193 ///
1194 /// ```markdown
1195 /// > | [^a]: b
1196 /// ^^^^
1197 /// ```
1198 GfmFootnoteDefinitionLabel,
1199 /// GFM extension: footnote definition label marker.
1200 ///
1201 /// ## Info
1202 ///
1203 /// * **Context**:
1204 /// [`GfmFootnoteDefinitionLabel`][Name::GfmFootnoteDefinitionLabel]
1205 /// * **Content model**:
1206 /// void
1207 /// * **Construct**:
1208 /// [`gfm_footnote_definition`][crate::construct::gfm_footnote_definition]
1209 ///
1210 /// ## Example
1211 ///
1212 /// ```markdown
1213 /// > | [^a]: b
1214 /// ^ ^
1215 GfmFootnoteDefinitionLabelMarker,
1216 /// GFM extension: footnote definition label string.
1217 ///
1218 /// ## Info
1219 ///
1220 /// * **Context**:
1221 /// [`GfmFootnoteDefinitionLabel`][Name::GfmFootnoteDefinitionLabel]
1222 /// * **Content model**:
1223 /// [string content][crate::construct::string]
1224 /// * **Construct**:
1225 /// [`gfm_footnote_definition`][crate::construct::gfm_footnote_definition]
1226 ///
1227 /// ## Example
1228 ///
1229 /// ```markdown
1230 /// > | [^a]: b
1231 /// ^
1232 GfmFootnoteDefinitionLabelString,
1233 /// GFM extension: footnote definition marker.
1234 ///
1235 /// ## Info
1236 ///
1237 /// * **Context**:
1238 /// [`GfmFootnoteDefinitionLabel`][Name::GfmFootnoteDefinitionLabel]
1239 /// * **Content model**:
1240 /// void
1241 /// * **Construct**:
1242 /// [`gfm_footnote_definition`][crate::construct::gfm_footnote_definition]
1243 ///
1244 /// ## Example
1245 ///
1246 /// ```markdown
1247 /// > | [^a]: b
1248 /// ^
1249 GfmFootnoteDefinitionMarker,
1250 /// GFM extension: Strikethrough.
1251 ///
1252 /// ## Info
1253 ///
1254 /// * **Context**:
1255 /// [text content][crate::construct::text]
1256 /// * **Content model**:
1257 /// [`GfmStrikethroughSequence`][Name::GfmStrikethroughSequence],
1258 /// [`GfmStrikethroughText`][Name::GfmStrikethroughText]
1259 /// * **Construct**:
1260 /// [`attention`][crate::construct::attention]
1261 ///
1262 /// ## Example
1263 ///
1264 /// ```markdown
1265 /// > | ~a~
1266 /// ^^^
1267 /// ```
1268 GfmStrikethrough,
1269 /// GFM extension: Strikethrough sequence.
1270 ///
1271 /// ## Info
1272 ///
1273 /// * **Context**:
1274 /// [`GfmStrikethrough`][Name::GfmStrikethrough]
1275 /// * **Content model**:
1276 /// void
1277 /// * **Construct**:
1278 /// [`attention`][crate::construct::attention]
1279 ///
1280 /// ## Example
1281 ///
1282 /// ```markdown
1283 /// > | ~a~
1284 /// ^ ^
1285 /// ```
1286 GfmStrikethroughSequence,
1287 /// GFM extension: Strikethrough text.
1288 ///
1289 /// ## Info
1290 ///
1291 /// * **Context**:
1292 /// [`GfmStrikethrough`][Name::GfmStrikethrough]
1293 /// * **Content model**:
1294 /// [text content][crate::construct::text]
1295 /// * **Construct**:
1296 /// [`attention`][crate::construct::attention]
1297 ///
1298 /// ## Example
1299 ///
1300 /// ```markdown
1301 /// > | ~a~
1302 /// ^
1303 /// ```
1304 GfmStrikethroughText,
1305 /// GFM extension: Table.
1306 ///
1307 /// ## Info
1308 ///
1309 /// * **Context**:
1310 /// [flow content][crate::construct::flow]
1311 /// * **Content model**:
1312 /// [`GfmTableBody`][Name::GfmTableBody],
1313 /// [`GfmTableHead`][Name::GfmTableHead],
1314 /// [`LineEnding`][Name::LineEnding]
1315 /// * **Construct**:
1316 /// [`gfm_table`][crate::construct::gfm_table]
1317 ///
1318 /// ## Example
1319 ///
1320 /// ```markdown
1321 /// > | | a |
1322 /// ^^^^^
1323 /// > | | - |
1324 /// ^^^^^
1325 /// > | | b |
1326 /// ^^^^^
1327 /// ```
1328 GfmTable,
1329 /// GFM extension: Table body.
1330 ///
1331 /// ## Info
1332 ///
1333 /// * **Context**:
1334 /// [`GfmTable`][Name::GfmTable]
1335 /// * **Content model**:
1336 /// [`GfmTableRow`][Name::GfmTableRow],
1337 /// [`LineEnding`][Name::LineEnding]
1338 /// * **Construct**:
1339 /// [`gfm_table`][crate::construct::gfm_table]
1340 ///
1341 /// ## Example
1342 ///
1343 /// ```markdown
1344 /// | | a |
1345 /// | | - |
1346 /// > | | b |
1347 /// ^^^^^
1348 /// ```
1349 GfmTableBody,
1350 /// GFM extension: Table cell.
1351 ///
1352 /// ## Info
1353 ///
1354 /// * **Context**:
1355 /// [`GfmTableRow`][Name::GfmTableRow]
1356 /// * **Content model**:
1357 /// [`GfmTableCellDivider`][Name::GfmTableCellDivider],
1358 /// [`GfmTableCellText`][Name::GfmTableCellText],
1359 /// [`SpaceOrTab`][Name::SpaceOrTab]
1360 /// * **Construct**:
1361 /// [`gfm_table`][crate::construct::gfm_table]
1362 ///
1363 /// ## Example
1364 ///
1365 /// ```markdown
1366 /// > | | a |
1367 /// ^^^^^
1368 /// | | - |
1369 /// > | | b |
1370 /// ^^^^^
1371 /// ```
1372 GfmTableCell,
1373 /// GFM extension: Table cell text.
1374 ///
1375 /// ## Info
1376 ///
1377 /// * **Context**:
1378 /// [`GfmTableCell`][Name::GfmTableCell]
1379 /// * **Content model**:
1380 /// [text content][crate::construct::text]
1381 /// * **Construct**:
1382 /// [`gfm_table`][crate::construct::gfm_table]
1383 ///
1384 /// ## Example
1385 ///
1386 /// ```markdown
1387 /// > | | a |
1388 /// ^
1389 /// | | - |
1390 /// > | | b |
1391 /// ^
1392 /// ```
1393 GfmTableCellText,
1394 /// GFM extension: Table cell divider.
1395 ///
1396 /// ## Info
1397 ///
1398 /// * **Context**:
1399 /// [`GfmTableCell`][Name::GfmTableCell]
1400 /// * **Content model**:
1401 /// void
1402 /// * **Construct**:
1403 /// [`gfm_table`][crate::construct::gfm_table]
1404 ///
1405 /// ## Example
1406 ///
1407 /// ```markdown
1408 /// > | | a |
1409 /// ^ ^
1410 /// > | | - |
1411 /// ^ ^
1412 /// > | | b |
1413 /// ^ ^
1414 /// ```
1415 GfmTableCellDivider,
1416 /// GFM extension: Table delimiter row.
1417 ///
1418 /// ## Info
1419 ///
1420 /// * **Context**:
1421 /// [`GfmTableHead`][Name::GfmTableHead]
1422 /// * **Content model**:
1423 /// [`GfmTableDelimiterCell`][Name::GfmTableDelimiterCell]
1424 /// * **Construct**:
1425 /// [`gfm_table`][crate::construct::gfm_table]
1426 ///
1427 /// ## Example
1428 ///
1429 /// ```markdown
1430 /// | | a |
1431 /// > | | - |
1432 /// ^^^^^
1433 /// | | b |
1434 /// ```
1435 GfmTableDelimiterRow,
1436 /// GFM extension: Table delimiter alignment marker.
1437 ///
1438 /// ## Info
1439 ///
1440 /// * **Context**:
1441 /// [`GfmTableDelimiterCellValue`][Name::GfmTableDelimiterCellValue]
1442 /// * **Content model**:
1443 /// void
1444 /// * **Construct**:
1445 /// [`gfm_table`][crate::construct::gfm_table]
1446 ///
1447 /// ## Example
1448 ///
1449 /// ```markdown
1450 /// | | a |
1451 /// > | | :- |
1452 /// ^
1453 /// | | b |
1454 /// ```
1455 GfmTableDelimiterMarker,
1456 /// GFM extension: Table delimiter cell.
1457 ///
1458 /// ## Info
1459 ///
1460 /// * **Context**:
1461 /// [`GfmTableDelimiterRow`][Name::GfmTableDelimiterRow]
1462 /// * **Content model**:
1463 /// [`GfmTableCellDivider`][Name::GfmTableCellDivider],
1464 /// [`GfmTableDelimiterCellValue`][Name::GfmTableDelimiterCellValue],
1465 /// [`SpaceOrTab`][Name::SpaceOrTab]
1466 /// * **Construct**:
1467 /// [`gfm_table`][crate::construct::gfm_table]
1468 ///
1469 /// ## Example
1470 ///
1471 /// ```markdown
1472 /// | | a |
1473 /// > | | - |
1474 /// ^^^^^
1475 /// | | b |
1476 /// ```
1477 GfmTableDelimiterCell,
1478 /// GFM extension: Table delimiter cell alignment.
1479 ///
1480 /// ## Info
1481 ///
1482 /// * **Context**:
1483 /// [`GfmTableDelimiterCell`][Name::GfmTableDelimiterCell]
1484 /// * **Content model**:
1485 /// [`GfmTableDelimiterMarker`][Name::GfmTableDelimiterMarker],
1486 /// [`GfmTableDelimiterFiller`][Name::GfmTableDelimiterFiller]
1487 /// * **Construct**:
1488 /// [`gfm_table`][crate::construct::gfm_table]
1489 ///
1490 /// ## Example
1491 ///
1492 /// ```markdown
1493 /// | | a |
1494 /// > | | - |
1495 /// ^
1496 /// | | b |
1497 /// ```
1498 GfmTableDelimiterCellValue,
1499 /// GFM extension: Table delimiter filler.
1500 ///
1501 /// ## Info
1502 ///
1503 /// * **Context**:
1504 /// [`GfmTableDelimiterCellValue`][Name::GfmTableDelimiterCellValue]
1505 /// * **Content model**:
1506 /// void
1507 /// * **Construct**:
1508 /// [`gfm_table`][crate::construct::gfm_table]
1509 ///
1510 /// ## Example
1511 ///
1512 /// ```markdown
1513 /// | | a |
1514 /// > | | - |
1515 /// ^
1516 /// | | b |
1517 /// ```
1518 GfmTableDelimiterFiller,
1519 /// GFM extension: Table head.
1520 ///
1521 /// ## Info
1522 ///
1523 /// * **Context**:
1524 /// [`GfmTable`][Name::GfmTable]
1525 /// * **Content model**:
1526 /// [`GfmTableRow`][Name::GfmTableRow],
1527 /// [`GfmTableDelimiterRow`][Name::GfmTableDelimiterRow],
1528 /// [`LineEnding`][Name::LineEnding]
1529 /// * **Construct**:
1530 /// [`gfm_table`][crate::construct::gfm_table]
1531 ///
1532 /// ## Example
1533 ///
1534 /// ```markdown
1535 /// > | | a |
1536 /// ^^^^^
1537 /// > | | - |
1538 /// ^^^^^
1539 /// | | b |
1540 /// ```
1541 GfmTableHead,
1542 /// GFM extension: Table row.
1543 ///
1544 /// ## Info
1545 ///
1546 /// * **Context**:
1547 /// [`GfmTableBody`][Name::GfmTableBody],
1548 /// [`GfmTableHead`][Name::GfmTableHead]
1549 /// * **Content model**:
1550 /// [`GfmTableCell`][Name::GfmTableCell]
1551 /// * **Construct**:
1552 /// [`gfm_table`][crate::construct::gfm_table]
1553 ///
1554 /// ## Example
1555 ///
1556 /// ```markdown
1557 /// > | | a |
1558 /// ^^^^^
1559 /// | | - |
1560 /// > | | b |
1561 /// ^^^^^
1562 /// ```
1563 GfmTableRow,
1564 /// GFM extension: task list item check.
1565 ///
1566 /// ## Info
1567 ///
1568 /// * **Context**:
1569 /// [text content][crate::construct::text]
1570 /// * **Content model**:
1571 /// [`GfmTaskListItemMarker`][Name::GfmTaskListItemMarker],
1572 /// [`GfmTaskListItemValueChecked`][Name::GfmTaskListItemValueChecked],
1573 /// [`GfmTaskListItemValueUnchecked`][Name::GfmTaskListItemValueUnchecked]
1574 /// * **Construct**:
1575 /// [`gfm_task_list_item_check`][crate::construct::gfm_task_list_item_check]
1576 ///
1577 /// ## Example
1578 ///
1579 /// ```markdown
1580 /// > | * [x] y.
1581 /// ^^^
1582 /// ```
1583 GfmTaskListItemCheck,
1584 /// GFM extension: task list item check marker.
1585 ///
1586 /// ## Info
1587 ///
1588 /// * **Context**:
1589 /// [`GfmTaskListItemCheck`][Name::GfmTaskListItemCheck]
1590 /// * **Content model**:
1591 /// void
1592 /// * **Construct**:
1593 /// [`gfm_task_list_item_check`][crate::construct::gfm_task_list_item_check]
1594 ///
1595 /// ## Example
1596 ///
1597 /// ```markdown
1598 /// > | * [x] y.
1599 /// ^ ^
1600 /// ```
1601 GfmTaskListItemMarker,
1602 /// GFM extension: task list item value: checked.
1603 ///
1604 /// ## Info
1605 ///
1606 /// * **Context**:
1607 /// [`GfmTaskListItemCheck`][Name::GfmTaskListItemCheck]
1608 /// * **Content model**:
1609 /// void
1610 /// * **Construct**:
1611 /// [`gfm_task_list_item_check`][crate::construct::gfm_task_list_item_check]
1612 ///
1613 /// ## Example
1614 ///
1615 /// ```markdown
1616 /// > | * [x] y.
1617 /// ^
1618 /// ```
1619 GfmTaskListItemValueChecked,
1620 /// GFM extension: task list item value: unchecked.
1621 ///
1622 /// ## Info
1623 ///
1624 /// * **Context**:
1625 /// [`GfmTaskListItemCheck`][Name::GfmTaskListItemCheck]
1626 /// * **Content model**:
1627 /// void
1628 /// * **Construct**:
1629 /// [`gfm_task_list_item_check`][crate::construct::gfm_task_list_item_check]
1630 ///
1631 /// ## Example
1632 ///
1633 /// ```markdown
1634 /// > | * [ ] z.
1635 /// ^
1636 /// ```
1637 GfmTaskListItemValueUnchecked,
1638 /// Whole hard break (escape).
1639 ///
1640 /// ## Info
1641 ///
1642 /// * **Context**:
1643 /// [text content][crate::construct::text]
1644 /// * **Content model**:
1645 /// void
1646 /// * **Construct**:
1647 /// [`hard_break_escape`][crate::construct::hard_break_escape]
1648 ///
1649 /// ## Example
1650 ///
1651 /// ```markdown
1652 /// > | a\␊
1653 /// ^
1654 /// > | b
1655 /// ```
1656 HardBreakEscape,
1657 /// Whole hard break (trailing).
1658 ///
1659 /// ## Info
1660 ///
1661 /// * **Context**:
1662 /// [text content][crate::construct::text]
1663 /// * **Content model**:
1664 /// void
1665 /// * **Construct**:
1666 /// [`whitespace`][crate::construct::partial_whitespace]
1667 ///
1668 /// ## Example
1669 ///
1670 /// ```markdown
1671 /// > | a␠␠␊
1672 /// ^^
1673 /// > | b
1674 /// ```
1675 HardBreakTrailing,
1676 /// Whole heading (atx).
1677 ///
1678 /// ## Info
1679 ///
1680 /// * **Context**:
1681 /// [flow content][crate::construct::flow]
1682 /// * **Content model**:
1683 /// [`HeadingAtxSequence`][Name::HeadingAtxSequence],
1684 /// [`HeadingAtxText`][Name::HeadingAtxText],
1685 /// [`SpaceOrTab`][Name::SpaceOrTab]
1686 /// * **Construct**:
1687 /// [`heading_atx`][crate::construct::heading_atx]
1688 ///
1689 /// ## Example
1690 ///
1691 /// ```markdown
1692 /// > | # alpha
1693 /// ^^^^^^^
1694 /// ```
1695 HeadingAtx,
1696 /// Heading (atx) sequence.
1697 ///
1698 /// ## Info
1699 ///
1700 /// * **Context**:
1701 /// [`HeadingAtx`][Name::HeadingAtx]
1702 /// * **Content model**:
1703 /// void
1704 /// * **Construct**:
1705 /// [`heading_atx`][crate::construct::heading_atx]
1706 ///
1707 /// ## Example
1708 ///
1709 /// ```markdown
1710 /// > | # alpha
1711 /// ^
1712 /// ```
1713 HeadingAtxSequence,
1714 /// Heading (atx) data.
1715 ///
1716 /// ## Info
1717 ///
1718 /// * **Context**:
1719 /// [`HeadingAtx`][Name::HeadingAtx]
1720 /// * **Content model**:
1721 /// [text content][crate::construct::text]
1722 /// * **Construct**:
1723 /// [`heading_atx`][crate::construct::heading_atx]
1724 ///
1725 /// ## Example
1726 ///
1727 /// ```markdown
1728 /// > | # alpha
1729 /// ^^^^^
1730 /// ```
1731 HeadingAtxText,
1732 /// Whole heading (setext).
1733 ///
1734 /// ## Info
1735 ///
1736 /// * **Context**:
1737 /// [flow content][crate::construct::flow]
1738 /// * **Content model**:
1739 /// [`HeadingSetextText`][Name::HeadingSetextText],
1740 /// [`HeadingSetextUnderline`][Name::HeadingSetextUnderline],
1741 /// [`LineEnding`][Name::LineEnding],
1742 /// [`SpaceOrTab`][Name::SpaceOrTab]
1743 /// * **Construct**:
1744 /// [`heading_setext`][crate::construct::heading_setext]
1745 ///
1746 /// ## Example
1747 ///
1748 /// ```markdown
1749 /// > | alpha
1750 /// ^^^^^
1751 /// > | =====
1752 /// ^^^^^
1753 /// ```
1754 HeadingSetext,
1755 /// Heading (setext) data.
1756 ///
1757 /// ## Info
1758 ///
1759 /// * **Context**:
1760 /// [`HeadingSetext`][Name::HeadingSetext]
1761 /// * **Content model**:
1762 /// [text content][crate::construct::text]
1763 /// * **Construct**:
1764 /// [`heading_setext`][crate::construct::heading_setext]
1765 ///
1766 /// ## Example
1767 ///
1768 /// ```markdown
1769 /// > | alpha
1770 /// ^^^^^
1771 /// | =====
1772 /// ```
1773 HeadingSetextText,
1774 /// Heading (setext) underline.
1775 ///
1776 /// ## Info
1777 ///
1778 /// * **Context**:
1779 /// [`HeadingSetext`][Name::HeadingSetext]
1780 /// * **Content model**:
1781 /// [`HeadingSetextUnderlineSequence`][Name::HeadingSetextUnderlineSequence],
1782 /// [`SpaceOrTab`][Name::SpaceOrTab]
1783 /// * **Construct**:
1784 /// [`heading_setext`][crate::construct::heading_setext]
1785 ///
1786 /// ## Example
1787 ///
1788 /// ```markdown
1789 /// | alpha
1790 /// > | =====
1791 /// ^^^^^
1792 /// ```
1793 HeadingSetextUnderline,
1794 /// Heading (setext) underline sequence.
1795 ///
1796 /// ## Info
1797 ///
1798 /// * **Context**:
1799 /// [`HeadingSetext`][Name::HeadingSetext]
1800 /// * **Content model**:
1801 /// void
1802 /// * **Construct**:
1803 /// [`heading_setext`][crate::construct::heading_setext]
1804 ///
1805 /// ## Example
1806 ///
1807 /// ```markdown
1808 /// | alpha
1809 /// > | =====
1810 /// ^^^^^
1811 /// ```
1812 HeadingSetextUnderlineSequence,
1813 /// Whole html (flow).
1814 ///
1815 /// ## Info
1816 ///
1817 /// * **Context**:
1818 /// [flow content][crate::construct::flow]
1819 /// * **Content model**:
1820 /// [`HtmlFlowData`][Name::HtmlFlowData],
1821 /// [`LineEnding`][Name::LineEnding],
1822 /// [`SpaceOrTab`][Name::SpaceOrTab]
1823 /// * **Construct**:
1824 /// [`html_flow`][crate::construct::html_flow]
1825 ///
1826 /// ## Example
1827 ///
1828 /// ```markdown
1829 /// > | <div>
1830 /// ^^^^^
1831 /// ```
1832 HtmlFlow,
1833 /// HTML (flow) data.
1834 ///
1835 /// ## Info
1836 ///
1837 /// * **Context**:
1838 /// [`HtmlFlow`][Name::HtmlFlow]
1839 /// * **Content model**:
1840 /// void
1841 /// * **Construct**:
1842 /// [`html_flow`][crate::construct::html_flow]
1843 ///
1844 /// ## Example
1845 ///
1846 /// ```markdown
1847 /// > | <div>
1848 /// ^^^^^
1849 /// ```
1850 HtmlFlowData,
1851 /// Whole html (text).
1852 ///
1853 /// ## Info
1854 ///
1855 /// * **Context**:
1856 /// [text content][crate::construct::text]
1857 /// * **Content model**:
1858 /// [`HtmlTextData`][Name::HtmlTextData],
1859 /// [`LineEnding`][Name::LineEnding],
1860 /// [`SpaceOrTab`][Name::SpaceOrTab]
1861 /// * **Construct**:
1862 /// [`html_text`][crate::construct::html_text]
1863 ///
1864 /// ## Example
1865 ///
1866 /// ```markdown
1867 /// > | a <b> c
1868 /// ^^^
1869 /// ```
1870 HtmlText,
1871 /// HTML (text) data.
1872 ///
1873 /// ## Info
1874 ///
1875 /// * **Context**:
1876 /// [`HtmlText`][Name::HtmlText]
1877 /// * **Content model**:
1878 /// void
1879 /// * **Construct**:
1880 /// [`html_text`][crate::construct::html_text]
1881 ///
1882 /// ## Example
1883 ///
1884 /// ```markdown
1885 /// > | a <b> c
1886 /// ^^^
1887 /// ```
1888 HtmlTextData,
1889 /// Image.
1890 ///
1891 /// ## Info
1892 ///
1893 /// * **Context**:
1894 /// [text content][crate::construct::text]
1895 /// * **Content model**:
1896 /// [`Label`][Name::Label],
1897 /// [`Resource`][Name::Resource],
1898 /// [`Reference`][Name::Reference]
1899 /// * **Construct**:
1900 /// [`label_end`][crate::construct::label_end]
1901 ///
1902 /// ## Example
1903 ///
1904 /// ```markdown
1905 /// > | a ![b] c
1906 /// ^^^^
1907 /// > | a ![b][c] d
1908 /// ^^^^^^^
1909 /// > | a  d
1910 /// ^^^^^^^
1911 /// ```
1912 Image,
1913 WikilinkText,
1914 WikilinkStart,
1915 WikilinkEnd,
1916 /// Label.
1917 ///
1918 /// ## Info
1919 ///
1920 /// * **Context**:
1921 /// [`Image`][Name::Image],
1922 /// [`Link`][Name::Link]
1923 /// * **Content model**:
1924 /// [`LabelImage`][Name::LabelImage],
1925 /// [`LabelLink`][Name::LabelLink],
1926 /// [`LabelEnd`][Name::LabelEnd],
1927 /// [`LabelText`][Name::LabelText]
1928 /// * **Construct**:
1929 /// [`label_end`][crate::construct::label_end]
1930 ///
1931 /// ## Example
1932 ///
1933 /// ```markdown
1934 /// > | a [b] c
1935 /// ^^^
1936 /// > | a ![b][c] d
1937 /// ^^^^
1938 /// > | a [b](c) d
1939 /// ^^^
1940 /// ```
1941 Label,
1942 /// Label end.
1943 ///
1944 /// ## Info
1945 ///
1946 /// * **Context**:
1947 /// [`Label`][Name::Label]
1948 /// * **Content model**:
1949 /// [`LabelMarker`][Name::LabelMarker]
1950 /// * **Construct**:
1951 /// [`label_end`][crate::construct::label_end]
1952 ///
1953 /// ## Example
1954 ///
1955 /// ```markdown
1956 /// > | a  d
1957 /// ^
1958 /// > | a [b](c) d
1959 /// ^
1960 /// ```
1961 LabelEnd,
1962 /// Label start (image).
1963 ///
1964 /// ## Info
1965 ///
1966 /// * **Context**:
1967 /// [`Label`][Name::Label]
1968 /// * **Content model**:
1969 /// [`LabelImageMarker`][Name::LabelImageMarker],
1970 /// [`LabelMarker`][Name::LabelMarker]
1971 /// * **Construct**:
1972 /// [`label_start_image`][crate::construct::label_start_image]
1973 ///
1974 /// ## Example
1975 ///
1976 /// ```markdown
1977 /// > | a  d
1978 /// ^^
1979 /// ```
1980 LabelImage,
1981 /// Label start (image) marker.
1982 ///
1983 /// ## Info
1984 ///
1985 /// * **Context**:
1986 /// [`LabelImage`][Name::LabelImage]
1987 /// * **Content model**:
1988 /// void
1989 /// * **Construct**:
1990 /// [`label_start_image`][crate::construct::label_start_image]
1991 ///
1992 /// ## Example
1993 ///
1994 /// ```markdown
1995 /// > | a  d
1996 /// ^
1997 /// ```
1998 LabelImageMarker,
1999 /// Label start (link).
2000 ///
2001 /// ## Info
2002 ///
2003 /// * **Context**:
2004 /// [`Label`][Name::Label]
2005 /// * **Content model**:
2006 /// [`LabelMarker`][Name::LabelMarker]
2007 /// * **Construct**:
2008 /// [`label_start_link`][crate::construct::label_start_link]
2009 ///
2010 /// ## Example
2011 ///
2012 /// ```markdown
2013 /// > | a [b](c) d
2014 /// ^
2015 /// ```
2016 LabelLink,
2017 /// Label marker.
2018 ///
2019 /// ## Info
2020 ///
2021 /// * **Context**:
2022 /// [`LabelImage`][Name::LabelImage],
2023 /// [`LabelLink`][Name::LabelLink],
2024 /// [`LabelEnd`][Name::LabelEnd]
2025 /// * **Content model**:
2026 /// void
2027 /// * **Construct**:
2028 /// [`label_start_image`][crate::construct::label_start_image],
2029 /// [`label_start_link`][crate::construct::label_start_link],
2030 /// [`label_end`][crate::construct::label_end]
2031 ///
2032 /// ## Example
2033 ///
2034 /// ```markdown
2035 /// > | a  d
2036 /// ^ ^
2037 /// > | a [b](c) d
2038 /// ^ ^
2039 /// ```
2040 LabelMarker,
2041 /// Label text.
2042 ///
2043 /// ## Info
2044 ///
2045 /// * **Context**:
2046 /// [`Label`][Name::Label]
2047 /// * **Content model**:
2048 /// [text content][crate::construct::text]
2049 /// * **Construct**:
2050 /// [`label_end`][crate::construct::label_end]
2051 ///
2052 /// ## Example
2053 ///
2054 /// ```markdown
2055 /// > | a [b] c
2056 /// ^
2057 /// > | a ![b][c] d
2058 /// ^
2059 /// > | a [b](c) d
2060 /// ^
2061 /// ```
2062 LabelText,
2063 /// Line ending.
2064 ///
2065 /// ## Info
2066 ///
2067 /// * **Context**:
2068 /// basically everywhere
2069 /// * **Content model**:
2070 /// void
2071 /// * **Construct**:
2072 /// n/a
2073 ///
2074 /// ## Example
2075 ///
2076 /// ```markdown
2077 /// > | a␊
2078 /// ^
2079 /// | b
2080 /// ```
2081 LineEnding,
2082 /// Link.
2083 ///
2084 /// ## Info
2085 ///
2086 /// * **Context**:
2087 /// [text content][crate::construct::text]
2088 /// * **Content model**:
2089 /// [`Label`][Name::Label],
2090 /// [`Resource`][Name::Resource],
2091 /// [`Reference`][Name::Reference]
2092 /// * **Construct**:
2093 /// [`label_end`][crate::construct::label_end]
2094 ///
2095 /// ## Example
2096 ///
2097 /// ```markdown
2098 /// > | a [b] c
2099 /// ^^^
2100 /// > | a [b][c] d
2101 /// ^^^^^^
2102 /// > | a [b](c) d
2103 /// ^^^^^^
2104 /// ```
2105 Link,
2106 /// List item.
2107 ///
2108 /// ## Info
2109 ///
2110 /// * **Context**:
2111 /// [`ListOrdered`][Name::ListOrdered],
2112 /// [`ListUnordered`][Name::ListUnordered]
2113 /// * **Content model**:
2114 /// [`ListItemPrefix`][Name::ListItemPrefix],
2115 /// [flow content][crate::construct::flow]
2116 /// * **Construct**:
2117 /// [`list item`][crate::construct::list_item]
2118 ///
2119 /// ## Example
2120 ///
2121 /// ```markdown
2122 /// > | * a
2123 /// ^^^
2124 /// > | 1. b
2125 /// ^^^^
2126 /// ```
2127 ListItem,
2128 /// List item (marker).
2129 ///
2130 /// ## Info
2131 ///
2132 /// * **Context**:
2133 /// [`ListItemPrefix`][Name::ListItemPrefix]
2134 /// * **Content model**:
2135 /// void
2136 /// * **Construct**:
2137 /// [`list item`][crate::construct::list_item]
2138 ///
2139 /// ## Example
2140 ///
2141 /// ```markdown
2142 /// > | * a
2143 /// ^
2144 /// > | 1. b
2145 /// ^
2146 /// ```
2147 ListItemMarker,
2148 /// List item (prefix).
2149 ///
2150 /// ## Info
2151 ///
2152 /// * **Context**:
2153 /// [`ListItem`][Name::ListItem]
2154 /// * **Content model**:
2155 /// [`ListItemMarker`][Name::ListItemMarker],
2156 /// [`ListItemValue`][Name::ListItemValue],
2157 /// [`SpaceOrTab`][Name::SpaceOrTab]
2158 /// * **Construct**:
2159 /// [`list item`][crate::construct::list_item]
2160 ///
2161 /// ## Example
2162 ///
2163 /// ```markdown
2164 /// > | * a
2165 /// ^^
2166 /// > | b
2167 /// ^^
2168 /// ```
2169 ListItemPrefix,
2170 /// List item (value).
2171 ///
2172 /// ## Info
2173 ///
2174 /// * **Context**:
2175 /// [`ListItemPrefix`][Name::ListItemPrefix]
2176 /// * **Content model**:
2177 /// void
2178 /// * **Construct**:
2179 /// [`list item`][crate::construct::list_item]
2180 ///
2181 /// ## Example
2182 ///
2183 /// ```markdown
2184 /// > | 1. b
2185 /// ^
2186 /// ```
2187 ListItemValue,
2188 /// List (ordered).
2189 ///
2190 /// ## Info
2191 ///
2192 /// * **Context**:
2193 /// [document content][crate::construct::document]
2194 /// * **Content model**:
2195 /// [`BlankLineEnding`][Name::BlankLineEnding],
2196 /// [`BlockQuotePrefix`][Name::BlockQuotePrefix],
2197 /// [`ListItem`][Name::ListItem],
2198 /// [`LineEnding`][Name::LineEnding],
2199 /// [`SpaceOrTab`][Name::SpaceOrTab]
2200 /// * **Construct**:
2201 /// [`list item`][crate::construct::list_item]
2202 ///
2203 /// ## Example
2204 ///
2205 /// ```markdown
2206 /// > | 1. a
2207 /// ^^^^
2208 /// > | 2. b
2209 /// ^^^^
2210 /// ```
2211 ListOrdered,
2212 /// List (unordered).
2213 ///
2214 /// ## Info
2215 ///
2216 /// * **Context**:
2217 /// [document content][crate::construct::document]
2218 /// * **Content model**:
2219 /// [`BlankLineEnding`][Name::BlankLineEnding],
2220 /// [`BlockQuotePrefix`][Name::BlockQuotePrefix],
2221 /// [`ListItem`][Name::ListItem],
2222 /// [`LineEnding`][Name::LineEnding],
2223 /// [`SpaceOrTab`][Name::SpaceOrTab]
2224 /// * **Construct**:
2225 /// [`list item`][crate::construct::list_item]
2226 ///
2227 /// ## Example
2228 ///
2229 /// ```markdown
2230 /// > | * a
2231 /// ^^^
2232 /// > | * b
2233 /// ^^^
2234 /// ```
2235 ListUnordered,
2236 /// Whole math (flow).
2237 ///
2238 /// ## Info
2239 ///
2240 /// * **Context**:
2241 /// [flow content][crate::construct::flow]
2242 /// * **Content model**:
2243 /// [`MathFlowFence`][Name::MathFlowFence],
2244 /// [`MathFlowChunk`][Name::MathFlowChunk],
2245 /// [`LineEnding`][Name::LineEnding],
2246 /// [`SpaceOrTab`][Name::SpaceOrTab]
2247 /// * **Construct**:
2248 /// [`raw_flow`][crate::construct::raw_flow]
2249 ///
2250 /// ## Example
2251 ///
2252 /// ```markdown
2253 /// > | $$
2254 /// ^^
2255 /// > | \frac{1}{2}
2256 /// ^^^^^^^^^^^
2257 /// > | $$
2258 /// ^^
2259 /// ```
2260 MathFlow,
2261 /// A math (flow) fence.
2262 ///
2263 /// ## Info
2264 ///
2265 /// * **Context**:
2266 /// [`MathFlow`][Name::MathFlow]
2267 /// * **Content model**:
2268 /// [`MathFlowFenceMeta`][Name::MathFlowFenceMeta],
2269 /// [`MathFlowFenceSequence`][Name::MathFlowFenceSequence],
2270 /// [`SpaceOrTab`][Name::SpaceOrTab]
2271 /// * **Construct**:
2272 /// [`raw_flow`][crate::construct::raw_flow]
2273 ///
2274 /// ## Example
2275 ///
2276 /// ```markdown
2277 /// > | $$
2278 /// ^^
2279 /// | \frac{1}{2}
2280 /// > | $$
2281 /// ^^
2282 /// ```
2283 MathFlowFence,
2284 /// A math (flow) fence meta string.
2285 ///
2286 /// ## Info
2287 ///
2288 /// * **Context**:
2289 /// [`MathFlowFence`][Name::MathFlowFence]
2290 /// * **Content model**:
2291 /// [string content][crate::construct::string]
2292 /// * **Construct**:
2293 /// [`raw_flow`][crate::construct::raw_flow]
2294 ///
2295 /// ## Example
2296 ///
2297 /// ```markdown
2298 /// > | $$alpha bravo
2299 /// ^^^^^^^^^^^
2300 /// | \frac{1}{2}
2301 /// | $$
2302 /// ```
2303 MathFlowFenceMeta,
2304 /// A math (flow) fence sequence.
2305 ///
2306 /// ## Info
2307 ///
2308 /// * **Context**:
2309 /// [`MathFlowFenceSequence`][Name::MathFlowFenceSequence]
2310 /// * **Content model**:
2311 /// void
2312 /// * **Construct**:
2313 /// [`raw_flow`][crate::construct::raw_flow]
2314 ///
2315 /// ## Example
2316 ///
2317 /// ```markdown
2318 /// > | $$
2319 /// ^^
2320 /// | \frac{1}{2}
2321 /// > | $$
2322 /// ^^
2323 /// ```
2324 MathFlowFenceSequence,
2325 /// A math (flow) chunk.
2326 ///
2327 /// ## Info
2328 ///
2329 /// * **Context**:
2330 /// [`MathFlow`][Name::MathFlow]
2331 /// * **Content model**:
2332 /// void
2333 /// * **Construct**:
2334 /// [`raw_flow`][crate::construct::raw_flow]
2335 ///
2336 /// ## Example
2337 ///
2338 /// ```markdown
2339 /// | $$
2340 /// > | \frac{1}{2}
2341 /// ^^^^^^^^^^^
2342 /// | $$
2343 /// ```
2344 MathFlowChunk,
2345 /// Whole math (text).
2346 ///
2347 /// ## Info
2348 ///
2349 /// * **Context**:
2350 /// [text content][crate::construct::text]
2351 /// * **Content model**:
2352 /// [`MathTextData`][Name::MathTextData],
2353 /// [`MathTextSequence`][Name::MathTextSequence],
2354 /// [`LineEnding`][Name::LineEnding]
2355 /// * **Construct**:
2356 /// [`raw_text`][crate::construct::raw_text]
2357 ///
2358 /// ## Example
2359 ///
2360 /// ```markdown
2361 /// > | a $b$ c
2362 /// ^^^
2363 /// ```
2364 MathText,
2365 /// Math (text) data.
2366 ///
2367 /// ## Info
2368 ///
2369 /// * **Context**:
2370 /// [`MathText`][Name::MathText]
2371 /// * **Content model**:
2372 /// void
2373 /// * **Construct**:
2374 /// [`raw_text`][crate::construct::raw_text]
2375 ///
2376 /// ## Example
2377 ///
2378 /// ```markdown
2379 /// > | a `b` c
2380 /// ^
2381 /// ```
2382 MathTextData,
2383 /// Math (text) sequence.
2384 ///
2385 /// ## Info
2386 ///
2387 /// * **Context**:
2388 /// [`MathText`][Name::MathText]
2389 /// * **Content model**:
2390 /// void
2391 /// * **Construct**:
2392 /// [`raw_text`][crate::construct::raw_text]
2393 ///
2394 /// ## Example
2395 ///
2396 /// ```markdown
2397 /// > | a $b$ c
2398 /// ^ ^
2399 /// ```
2400 MathTextSequence,
2401 /// MDX extension: ESM.
2402 ///
2403 /// ## Info
2404 ///
2405 /// * **Context**:
2406 /// [flow content][crate::construct::flow]
2407 /// * **Content model**:
2408 /// void
2409 /// [`MdxEsmData`][Name::MdxEsmData],
2410 /// [`SpaceOrTab`][Name::SpaceOrTab],
2411 /// [`LineEnding`][Name::LineEnding]
2412 /// * **Construct**:
2413 /// [`mdx_esm`][crate::construct::mdx_esm]
2414 ///
2415 /// ## Example
2416 ///
2417 /// ```markdown
2418 /// > | import a from 'b'
2419 /// ^^^^^^^^^^^^^^^^^
2420 /// ```
2421 MdxEsm,
2422 /// MDX extension: ESM data.
2423 ///
2424 /// ## Info
2425 ///
2426 /// * **Context**:
2427 /// [`MdxEsm`][Name::MdxEsm]
2428 /// * **Content model**:
2429 /// void
2430 /// * **Construct**:
2431 /// [`mdx_esm`][crate::construct::mdx_esm]
2432 ///
2433 /// ## Example
2434 ///
2435 /// ```markdown
2436 /// > | import a from 'b'
2437 /// ^^^^^^^^^^^^^^^^^
2438 /// ```
2439 MdxEsmData,
2440 /// MDX extension: expression marker.
2441 ///
2442 /// ## Info
2443 ///
2444 /// * **Context**:
2445 /// [`MdxFlowExpression`][Name::MdxFlowExpression],
2446 /// [`MdxTextExpression`][Name::MdxTextExpression],
2447 /// [`MdxJsxTagAttributeExpression`][Name::MdxJsxTagAttributeExpression],
2448 /// [`MdxJsxTagAttributeValueExpression`][Name::MdxJsxTagAttributeValueExpression]
2449 /// * **Content model**:
2450 /// void
2451 /// * **Construct**:
2452 /// [`partial_mdx_expression`][crate::construct::partial_mdx_expression]
2453 ///
2454 /// ## Example
2455 ///
2456 /// ```markdown
2457 /// > | {Math.PI}
2458 /// ^ ^
2459 /// ```
2460 MdxExpressionMarker,
2461 /// MDX extension: expression data.
2462 ///
2463 /// ## Info
2464 ///
2465 /// * **Context**:
2466 /// [`MdxFlowExpression`][Name::MdxFlowExpression],
2467 /// [`MdxTextExpression`][Name::MdxTextExpression],
2468 /// [`MdxJsxTagAttributeExpression`][Name::MdxJsxTagAttributeExpression],
2469 /// [`MdxJsxTagAttributeValueExpression`][Name::MdxJsxTagAttributeValueExpression]
2470 /// * **Content model**:
2471 /// void
2472 /// * **Construct**:
2473 /// [`partial_mdx_expression`][crate::construct::partial_mdx_expression]
2474 ///
2475 /// ## Example
2476 ///
2477 /// ```markdown
2478 /// > | {Math.PI}
2479 /// ^^^^^^^
2480 /// ```
2481 MdxExpressionData,
2482 /// MDX extension: expression (flow).
2483 ///
2484 /// ## Info
2485 ///
2486 /// * **Context**:
2487 /// [flow content][crate::construct::flow]
2488 /// * **Content model**:
2489 /// [`LineEnding`][Name::LineEnding],
2490 /// [`SpaceOrTab`][Name::SpaceOrTab],
2491 /// [`MdxExpressionMarker`][Name::MdxExpressionMarker],
2492 /// [`MdxExpressionData`][Name::MdxExpressionData]
2493 /// * **Construct**:
2494 /// [`mdx_expression_flow`][crate::construct::mdx_expression_flow]
2495 ///
2496 /// ## Example
2497 ///
2498 /// ```markdown
2499 /// > | {Math.PI}
2500 /// ^^^^^^^^^
2501 /// ```
2502 MdxFlowExpression,
2503 /// MDX extension: expression (text).
2504 ///
2505 /// ## Info
2506 ///
2507 /// * **Context**:
2508 /// [flow content][crate::construct::flow]
2509 /// * **Content model**:
2510 /// [`LineEnding`][Name::LineEnding],
2511 /// [`SpaceOrTab`][Name::SpaceOrTab],
2512 /// [`MdxExpressionMarker`][Name::MdxExpressionMarker],
2513 /// [`MdxExpressionData`][Name::MdxExpressionData]
2514 /// * **Construct**:
2515 /// [`mdx_expression_text`][crate::construct::mdx_expression_text]
2516 ///
2517 /// ## Example
2518 ///
2519 /// ```markdown
2520 /// > | a {Math.PI} b
2521 /// ^^^^^^^^^
2522 /// ```
2523 MdxTextExpression,
2524 /// MDX extension: JSX (flow).
2525 ///
2526 /// ## Info
2527 ///
2528 /// * **Context**:
2529 /// [flow content][crate::construct::flow]
2530 /// * **Content model**:
2531 /// [`LineEnding`][Name::LineEnding],
2532 /// [`MdxJsxEsWhitespace`][Name::MdxJsxEsWhitespace],
2533 /// [`MdxJsxTagMarker`][Name::MdxJsxTagMarker],
2534 /// [`MdxJsxTagClosingMarker`][Name::MdxJsxTagClosingMarker],
2535 /// [`MdxJsxTagName`][Name::MdxJsxTagName],
2536 /// [`MdxJsxTagAttribute`][Name::MdxJsxTagAttribute],
2537 /// [`MdxJsxTagAttributeExpression`][Name::MdxJsxTagAttributeExpression],
2538 /// [`MdxJsxTagSelfClosingMarker`][Name::MdxJsxTagSelfClosingMarker]
2539 /// * **Construct**:
2540 /// [`mdx_jsx_flow`][crate::construct::mdx_jsx_flow]
2541 ///
2542 /// ## Example
2543 ///
2544 /// ```markdown
2545 /// > | <B />
2546 /// ^^^^^
2547 /// ```
2548 MdxJsxFlowTag,
2549 /// MDX extension: JSX (text).
2550 ///
2551 /// ## Info
2552 ///
2553 /// * **Context**:
2554 /// [text content][crate::construct::text]
2555 /// * **Content model**:
2556 /// [`LineEnding`][Name::LineEnding],
2557 /// [`MdxJsxEsWhitespace`][Name::MdxJsxEsWhitespace],
2558 /// [`MdxJsxTagMarker`][Name::MdxJsxTagMarker],
2559 /// [`MdxJsxTagClosingMarker`][Name::MdxJsxTagClosingMarker],
2560 /// [`MdxJsxTagName`][Name::MdxJsxTagName],
2561 /// [`MdxJsxTagAttribute`][Name::MdxJsxTagAttribute],
2562 /// [`MdxJsxTagAttributeExpression`][Name::MdxJsxTagAttributeExpression],
2563 /// [`MdxJsxTagSelfClosingMarker`][Name::MdxJsxTagSelfClosingMarker]
2564 /// * **Construct**:
2565 /// [`mdx_jsx_text`][crate::construct::mdx_jsx_text]
2566 ///
2567 /// ## Example
2568 ///
2569 /// ```markdown
2570 /// > | a <B /> c
2571 /// ^^^^^
2572 /// ```
2573 MdxJsxTextTag,
2574 /// MDX extension: JSX: ECMAScript whitespace.
2575 ///
2576 /// ## Info
2577 ///
2578 /// * **Context**:
2579 /// [`MdxJsxFlowTag`][Name::MdxJsxFlowTag],
2580 /// [`MdxJsxTextTag`][Name::MdxJsxTextTag],
2581 /// [`MdxJsxTagName`][Name::MdxJsxTagName],
2582 /// [`MdxJsxTagAttribute`][Name::MdxJsxTagAttribute],
2583 /// [`MdxJsxTagAttributeName`][Name::MdxJsxTagAttributeName]
2584 /// * **Content model**:
2585 /// void
2586 /// * **Construct**:
2587 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2588 ///
2589 /// ## Example
2590 ///
2591 /// ```markdown
2592 /// > | a <B /> c
2593 /// ^
2594 /// ```
2595 MdxJsxEsWhitespace,
2596 /// MDX extension: JSX: tag marker.
2597 ///
2598 /// ## Info
2599 ///
2600 /// * **Context**:
2601 /// [`MdxJsxFlowTag`][Name::MdxJsxFlowTag],
2602 /// [`MdxJsxTextTag`][Name::MdxJsxTextTag]
2603 /// * **Content model**:
2604 /// void
2605 /// * **Construct**:
2606 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2607 ///
2608 /// ## Example
2609 ///
2610 /// ```markdown
2611 /// > | a <B /> c
2612 /// ^ ^
2613 /// ```
2614 MdxJsxTagMarker,
2615 /// MDX extension: JSX: closing tag marker.
2616 ///
2617 /// ## Info
2618 ///
2619 /// * **Context**:
2620 /// [`MdxJsxFlowTag`][Name::MdxJsxFlowTag],
2621 /// [`MdxJsxTextTag`][Name::MdxJsxTextTag]
2622 /// * **Content model**:
2623 /// void
2624 /// * **Construct**:
2625 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2626 ///
2627 /// ## Example
2628 ///
2629 /// ```markdown
2630 /// > | a </B> c
2631 /// ^
2632 /// ```
2633 MdxJsxTagClosingMarker,
2634 /// MDX extension: JSX: tag name.
2635 ///
2636 /// ## Info
2637 ///
2638 /// * **Context**:
2639 /// [`MdxJsxFlowTag`][Name::MdxJsxFlowTag],
2640 /// [`MdxJsxTextTag`][Name::MdxJsxTextTag]
2641 /// * **Content model**:
2642 /// [`LineEnding`][Name::LineEnding],
2643 /// [`MdxJsxEsWhitespace`][Name::MdxJsxEsWhitespace],
2644 /// [`MdxJsxTagNamePrimary`][Name::MdxJsxTagNamePrimary],
2645 /// [`MdxJsxTagNameMember`][Name::MdxJsxTagNameMember],
2646 /// [`MdxJsxTagNameMemberMarker`][Name::MdxJsxTagNameMemberMarker],
2647 /// [`MdxJsxTagNamePrefixMarker`][Name::MdxJsxTagNamePrefixMarker],
2648 /// [`MdxJsxTagNameLocal`][Name::MdxJsxTagNameLocal]
2649 /// * **Construct**:
2650 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2651 ///
2652 /// ## Example
2653 ///
2654 /// ```markdown
2655 /// > | a <b> c
2656 /// ^
2657 /// > | a <b:c> d
2658 /// ^^^
2659 /// > | a <b.c> d
2660 /// ^^^
2661 /// ```
2662 #[allow(clippy::enum_variant_names)]
2663 MdxJsxTagName,
2664 /// MDX extension: JSX: primary tag name.
2665 ///
2666 /// ## Info
2667 ///
2668 /// * **Context**:
2669 /// [`MdxJsxTagName`][Name::MdxJsxTagName]
2670 /// * **Content model**:
2671 /// void
2672 /// * **Construct**:
2673 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2674 ///
2675 /// ## Example
2676 ///
2677 /// ```markdown
2678 /// > | a <b> c
2679 /// ^
2680 /// > | a <b:c> d
2681 /// ^
2682 /// > | a <b.c> d
2683 /// ^
2684 /// ```
2685 MdxJsxTagNamePrimary,
2686 /// MDX extension: JSX: tag name member marker.
2687 ///
2688 /// ## Info
2689 ///
2690 /// * **Context**:
2691 /// [`MdxJsxTagName`][Name::MdxJsxTagName]
2692 /// * **Content model**:
2693 /// void
2694 /// * **Construct**:
2695 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2696 ///
2697 /// ## Example
2698 ///
2699 /// ```markdown
2700 /// > | a <b.c> d
2701 /// ^
2702 /// ```
2703 MdxJsxTagNameMemberMarker,
2704 /// MDX extension: JSX: tag name prefix marker.
2705 ///
2706 /// ## Info
2707 ///
2708 /// * **Context**:
2709 /// [`MdxJsxTagName`][Name::MdxJsxTagName]
2710 /// * **Content model**:
2711 /// void
2712 /// * **Construct**:
2713 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2714 ///
2715 /// ## Example
2716 ///
2717 /// ```markdown
2718 /// > | a <b:c> d
2719 /// ^
2720 /// ```
2721 MdxJsxTagNamePrefixMarker,
2722 /// MDX extension: JSX: tag name member.
2723 ///
2724 /// ## Info
2725 ///
2726 /// * **Context**:
2727 /// [`MdxJsxTagName`][Name::MdxJsxTagName]
2728 /// * **Content model**:
2729 /// void
2730 /// * **Construct**:
2731 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2732 ///
2733 /// ## Example
2734 ///
2735 /// ```markdown
2736 /// > | a <b.c> d
2737 /// ^
2738 /// ```
2739 MdxJsxTagNameMember,
2740 /// MDX extension: JSX: tag name local.
2741 ///
2742 /// ## Info
2743 ///
2744 /// * **Context**:
2745 /// [`MdxJsxTagName`][Name::MdxJsxTagName]
2746 /// * **Content model**:
2747 /// void
2748 /// * **Construct**:
2749 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2750 ///
2751 /// ## Example
2752 ///
2753 /// ```markdown
2754 /// > | a <b:c> d
2755 /// ^
2756 /// ```
2757 MdxJsxTagNameLocal,
2758 /// MDX extension: JSX: attribute.
2759 ///
2760 /// ## Info
2761 ///
2762 /// * **Context**:
2763 /// [`MdxJsxFlowTag`][Name::MdxJsxFlowTag],
2764 /// [`MdxJsxTextTag`][Name::MdxJsxTextTag]
2765 /// * **Content model**:
2766 /// [`LineEnding`][Name::LineEnding],
2767 /// [`MdxJsxEsWhitespace`][Name::MdxJsxEsWhitespace],
2768 /// [`MdxJsxTagAttributeName`][Name::MdxJsxTagAttributeName],
2769 /// [`MdxJsxTagAttributeInitializerMarker`][Name::MdxJsxTagAttributeInitializerMarker],
2770 /// [`MdxJsxTagAttributeValueLiteral`][Name::MdxJsxTagAttributeValueLiteral],
2771 /// [`MdxJsxTagAttributeValueExpression`][Name::MdxJsxTagAttributeValueExpression]
2772 /// * **Construct**:
2773 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2774 ///
2775 /// ## Example
2776 ///
2777 /// ```markdown
2778 /// > | a <b c> d
2779 /// ^
2780 /// > | a <b c="d"> e
2781 /// ^^^^^
2782 /// > | a <b c={d}> e
2783 /// ^^^^^
2784 /// ```
2785 MdxJsxTagAttribute,
2786 /// MDX extension: JSX tag attribute expression.
2787 ///
2788 /// ## Info
2789 ///
2790 /// * **Context**:
2791 /// [`MdxJsxFlowTag`][Name::MdxJsxFlowTag],
2792 /// [`MdxJsxTextTag`][Name::MdxJsxTextTag]
2793 /// * **Content model**:
2794 /// [`LineEnding`][Name::LineEnding],
2795 /// [`SpaceOrTab`][Name::SpaceOrTab],
2796 /// [`MdxExpressionMarker`][Name::MdxExpressionMarker],
2797 /// [`MdxExpressionData`][Name::MdxExpressionData]
2798 /// * **Construct**:
2799 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2800 ///
2801 /// ## Example
2802 ///
2803 /// ```markdown
2804 /// > | a <b {Math.PI} /> c
2805 /// ^^^^^^^^^
2806 /// ```
2807 MdxJsxTagAttributeExpression,
2808 /// MDX extension: JSX: attribute name.
2809 ///
2810 /// ## Info
2811 ///
2812 /// * **Context**:
2813 /// [`MdxJsxTagAttribute`][Name::MdxJsxTagAttribute]
2814 /// * **Content model**:
2815 /// [`LineEnding`][Name::LineEnding],
2816 /// [`MdxJsxEsWhitespace`][Name::MdxJsxEsWhitespace],
2817 /// [`MdxJsxTagAttributePrimaryName`][Name::MdxJsxTagAttributePrimaryName],
2818 /// [`MdxJsxTagAttributeNamePrefixMarker`][Name::MdxJsxTagAttributeNamePrefixMarker],
2819 /// [`MdxJsxTagAttributeNameLocal`][Name::MdxJsxTagAttributeNameLocal]
2820 /// * **Construct**:
2821 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2822 ///
2823 /// ## Example
2824 ///
2825 /// ```markdown
2826 /// > | a <b c> d
2827 /// ^
2828 /// > | a <b c:d="e"> f
2829 /// ^^^
2830 /// ```
2831 #[allow(clippy::enum_variant_names)]
2832 MdxJsxTagAttributeName,
2833 /// MDX extension: JSX: primary attribute name.
2834 ///
2835 /// ## Info
2836 ///
2837 /// * **Context**:
2838 /// [`MdxJsxTagAttributeName`][Name::MdxJsxTagAttributeName]
2839 /// * **Content model**:
2840 /// void
2841 /// * **Construct**:
2842 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2843 ///
2844 /// ## Example
2845 ///
2846 /// ```markdown
2847 /// > | a <b c> d
2848 /// ^
2849 /// > | a <b c:d="e"> f
2850 /// ^
2851 /// ```
2852 #[allow(clippy::enum_variant_names)]
2853 MdxJsxTagAttributePrimaryName,
2854 /// MDX extension: JSX: attribute name prefix marker.
2855 ///
2856 /// ## Info
2857 ///
2858 /// * **Context**:
2859 /// [`MdxJsxTagAttributeName`][Name::MdxJsxTagAttributeName]
2860 /// * **Content model**:
2861 /// void
2862 /// * **Construct**:
2863 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2864 ///
2865 /// ## Example
2866 ///
2867 /// ```markdown
2868 /// > | a <b c:d="e"> f
2869 /// ^
2870 /// ```
2871 MdxJsxTagAttributeNamePrefixMarker,
2872 /// MDX extension: JSX: local attribute name.
2873 ///
2874 /// ## Info
2875 ///
2876 /// * **Context**:
2877 /// [`MdxJsxTagAttributeName`][Name::MdxJsxTagAttributeName]
2878 /// * **Content model**:
2879 /// void
2880 /// * **Construct**:
2881 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2882 ///
2883 /// ## Example
2884 ///
2885 /// ```markdown
2886 /// > | a <b c:d="e"> f
2887 /// ^
2888 /// ```
2889 MdxJsxTagAttributeNameLocal,
2890 /// MDX extension: JSX: attribute initializer marker.
2891 ///
2892 /// ## Info
2893 ///
2894 /// * **Context**:
2895 /// [`MdxJsxTagAttribute`][Name::MdxJsxTagAttribute]
2896 /// * **Content model**:
2897 /// void
2898 /// * **Construct**:
2899 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2900 ///
2901 /// ## Example
2902 ///
2903 /// ```markdown
2904 /// > | a <b c="d"> e
2905 /// ^
2906 /// ```
2907 MdxJsxTagAttributeInitializerMarker,
2908 /// MDX extension: JSX tag attribute value expression.
2909 ///
2910 /// ## Info
2911 ///
2912 /// * **Context**:
2913 /// [`MdxJsxFlowTag`][Name::MdxJsxFlowTag],
2914 /// [`MdxJsxTextTag`][Name::MdxJsxTextTag]
2915 /// * **Content model**:
2916 /// [`LineEnding`][Name::LineEnding],
2917 /// [`SpaceOrTab`][Name::SpaceOrTab],
2918 /// [`MdxExpressionMarker`][Name::MdxExpressionMarker],
2919 /// [`MdxExpressionData`][Name::MdxExpressionData]
2920 /// * **Construct**:
2921 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2922 ///
2923 /// ## Example
2924 ///
2925 /// ```markdown
2926 /// > | a <b c={Math.PI} /> d
2927 /// ^^^^^^^^^
2928 /// ```
2929 MdxJsxTagAttributeValueExpression,
2930 /// MDX extension: JSX: attribute value literal.
2931 ///
2932 /// ## Info
2933 ///
2934 /// * **Context**:
2935 /// [`MdxJsxTagAttribute`][Name::MdxJsxTagAttribute]
2936 /// * **Content model**:
2937 /// [`LineEnding`][Name::LineEnding],
2938 /// [`MdxJsxEsWhitespace`][Name::MdxJsxEsWhitespace],
2939 /// [`MdxJsxTagAttributeValueLiteralMarker`][Name::MdxJsxTagAttributeValueLiteralMarker],
2940 /// [`MdxJsxTagAttributeValueLiteralValue`][Name::MdxJsxTagAttributeValueLiteralValue]
2941 /// * **Construct**:
2942 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2943 ///
2944 /// ## Example
2945 ///
2946 /// ```markdown
2947 /// > | a <b c="d"> e
2948 /// ^^^
2949 /// ```
2950 MdxJsxTagAttributeValueLiteral,
2951 /// MDX extension: JSX: attribute value literal marker.
2952 ///
2953 /// ## Info
2954 ///
2955 /// * **Context**:
2956 /// [`MdxJsxTagAttributeValueLiteral`][Name::MdxJsxTagAttributeValueLiteral]
2957 /// * **Content model**:
2958 /// void
2959 /// * **Construct**:
2960 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2961 ///
2962 /// ## Example
2963 ///
2964 /// ```markdown
2965 /// > | a <b c="d"> e
2966 /// ^ ^
2967 /// ```
2968 MdxJsxTagAttributeValueLiteralMarker,
2969 /// MDX extension: JSX: attribute value literal value.
2970 ///
2971 /// ## Info
2972 ///
2973 /// * **Context**:
2974 /// [`MdxJsxTagAttributeValueLiteral`][Name::MdxJsxTagAttributeValueLiteral]
2975 /// * **Content model**:
2976 /// void
2977 /// * **Construct**:
2978 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2979 ///
2980 /// ## Example
2981 ///
2982 /// ```markdown
2983 /// > | a <b c="d"> e
2984 /// ^
2985 /// ```
2986 MdxJsxTagAttributeValueLiteralValue,
2987 /// MDX extension: JSX: self-closing tag marker.
2988 ///
2989 /// ## Info
2990 ///
2991 /// * **Context**:
2992 /// [`MdxJsxFlowTag`][Name::MdxJsxFlowTag],
2993 /// [`MdxJsxTextTag`][Name::MdxJsxTextTag]
2994 /// * **Content model**:
2995 /// void
2996 /// * **Construct**:
2997 /// [`partial_mdx_jsx`][crate::construct::partial_mdx_jsx]
2998 ///
2999 /// ## Example
3000 ///
3001 /// ```markdown
3002 /// > | a <b /> c
3003 /// ^
3004 /// ```
3005 MdxJsxTagSelfClosingMarker,
3006 /// Paragraph.
3007 ///
3008 /// ## Info
3009 ///
3010 /// * **Context**:
3011 /// [content][crate::construct::content]
3012 /// * **Content model**:
3013 /// [text content][crate::construct::text]
3014 /// * **Construct**:
3015 /// [`paragraph`][crate::construct::paragraph]
3016 ///
3017 /// ## Example
3018 ///
3019 /// ```markdown
3020 /// > | a b
3021 /// ^^^
3022 /// > | c.
3023 /// ^^
3024 /// ```
3025 Paragraph,
3026 /// Reference.
3027 ///
3028 /// ## Info
3029 ///
3030 /// * **Context**:
3031 /// [`Image`][Name::Image],
3032 /// [`Link`][Name::Link]
3033 /// * **Content model**:
3034 /// [`ReferenceMarker`][Name::ReferenceMarker],
3035 /// [`ReferenceString`][Name::ReferenceString]
3036 /// * **Construct**:
3037 /// [`label`][crate::construct::partial_label]
3038 ///
3039 /// ## Example
3040 ///
3041 /// ```markdown
3042 /// > | a ![b][c] d
3043 /// ^^^
3044 /// ```
3045 Reference,
3046 /// Reference marker.
3047 ///
3048 /// ## Info
3049 ///
3050 /// * **Context**:
3051 /// [`Reference`][Name::Reference]
3052 /// * **Content model**:
3053 /// void
3054 /// * **Construct**:
3055 /// [`label`][crate::construct::partial_label]
3056 ///
3057 /// ## Example
3058 ///
3059 /// ```markdown
3060 /// > | a ![b][c] d
3061 /// ^ ^
3062 /// ```
3063 ReferenceMarker,
3064 /// Reference string.
3065 ///
3066 /// ## Info
3067 ///
3068 /// * **Context**:
3069 /// [`Reference`][Name::Reference]
3070 /// * **Content model**:
3071 /// [string content][crate::construct::string]
3072 /// * **Construct**:
3073 /// [`label`][crate::construct::partial_label]
3074 ///
3075 /// ## Example
3076 ///
3077 /// ```markdown
3078 /// > | a ![b][c] d
3079 /// ^
3080 /// ```
3081 ReferenceString,
3082 /// Resource.
3083 ///
3084 /// ## Info
3085 ///
3086 /// * **Context**:
3087 /// [`Image`][Name::Image],
3088 /// [`Link`][Name::Link]
3089 /// * **Content model**:
3090 /// [`ResourceMarker`][Name::ResourceMarker],
3091 /// [`ResourceDestination`][Name::ResourceDestination],
3092 /// [`ResourceTitle`][Name::ResourceTitle],
3093 /// [`SpaceOrTab`][Name::SpaceOrTab],
3094 /// [`LineEnding`][Name::LineEnding]
3095 /// * **Construct**:
3096 /// [`label_end`][crate::construct::label_end]
3097 ///
3098 /// ## Example
3099 ///
3100 /// ```markdown
3101 /// > | a  e
3102 /// ^^^^^^^
3103 /// > | a [b](c) d
3104 /// ^^^
3105 /// ```
3106 Resource,
3107 /// Resource destination.
3108 ///
3109 /// ## Info
3110 ///
3111 /// * **Context**:
3112 /// [`Resource`][Name::Resource]
3113 /// * **Content model**:
3114 /// [`ResourceDestinationLiteral`][Name::ResourceDestinationLiteral],
3115 /// [`ResourceDestinationRaw`][Name::ResourceDestinationRaw]
3116 /// * **Construct**:
3117 /// [`destination`][crate::construct::partial_destination]
3118 ///
3119 /// ## Example
3120 ///
3121 /// ```markdown
3122 /// > | a  e
3123 /// ^
3124 /// ```
3125 ResourceDestination,
3126 /// Resource destination literal.
3127 ///
3128 /// ## Info
3129 ///
3130 /// * **Context**:
3131 /// [`ResourceDestination`][Name::ResourceDestination]
3132 /// * **Content model**:
3133 /// [`ResourceDestinationLiteralMarker`][Name::ResourceDestinationLiteralMarker],
3134 /// [`ResourceDestinationString`][Name::ResourceDestinationString]
3135 /// * **Construct**:
3136 /// [`destination`][crate::construct::partial_destination]
3137 ///
3138 /// ## Example
3139 ///
3140 /// ```markdown
3141 /// > | a  e
3142 /// ^^^
3143 /// ```
3144 ResourceDestinationLiteral,
3145 /// Resource destination literal marker.
3146 ///
3147 /// ## Info
3148 ///
3149 /// * **Context**:
3150 /// [`ResourceDestinationLiteral`][Name::ResourceDestinationLiteral]
3151 /// * **Content model**:
3152 /// void
3153 /// * **Construct**:
3154 /// [`destination`][crate::construct::partial_destination]
3155 ///
3156 /// ## Example
3157 ///
3158 /// ```markdown
3159 /// > | a  e
3160 /// ^ ^
3161 /// ```
3162 ResourceDestinationLiteralMarker,
3163 /// Resource destination raw.
3164 ///
3165 /// ## Info
3166 ///
3167 /// * **Context**:
3168 /// [`ResourceDestination`][Name::ResourceDestination]
3169 /// * **Content model**:
3170 /// [`ResourceDestinationString`][Name::ResourceDestinationString]
3171 /// * **Construct**:
3172 /// [`destination`][crate::construct::partial_destination]
3173 ///
3174 /// ## Example
3175 ///
3176 /// ```markdown
3177 /// > | a  e
3178 /// ^
3179 /// ```
3180 ResourceDestinationRaw,
3181 /// Resource destination raw.
3182 ///
3183 /// ## Info
3184 ///
3185 /// * **Context**:
3186 /// [`ResourceDestinationLiteral`][Name::ResourceDestinationLiteral],
3187 /// [`ResourceDestinationRaw`][Name::ResourceDestinationRaw]
3188 /// * **Content model**:
3189 /// [string content][crate::construct::string]
3190 /// * **Construct**:
3191 /// [`destination`][crate::construct::partial_destination]
3192 ///
3193 /// ## Example
3194 ///
3195 /// ```markdown
3196 /// > | a  e
3197 /// ^
3198 /// > | a  e
3199 /// ^
3200 /// ```
3201 ResourceDestinationString,
3202 /// Resource marker.
3203 ///
3204 /// ## Info
3205 ///
3206 /// * **Context**:
3207 /// [`Resource`][Name::Resource]
3208 /// * **Content model**:
3209 /// void
3210 /// * **Construct**:
3211 /// [`label_end`][crate::construct::label_end]
3212 ///
3213 /// ## Example
3214 ///
3215 /// ```markdown
3216 /// > | a  e
3217 /// ^ ^
3218 /// ```
3219 ResourceMarker,
3220 /// Resource title.
3221 ///
3222 /// ## Info
3223 ///
3224 /// * **Context**:
3225 /// [`Resource`][Name::Resource]
3226 /// * **Content model**:
3227 /// [`ResourceTitleMarker`][Name::ResourceTitleMarker],
3228 /// [`ResourceTitleString`][Name::ResourceTitleString]
3229 /// * **Construct**:
3230 /// [`title`][crate::construct::partial_title]
3231 ///
3232 /// ## Example
3233 ///
3234 /// ```markdown
3235 /// > | a  e
3236 /// ^^^
3237 /// ```
3238 ResourceTitle,
3239 /// Resource title marker.
3240 ///
3241 /// ## Info
3242 ///
3243 /// * **Context**:
3244 /// [`ResourceTitle`][Name::ResourceTitle]
3245 /// * **Content model**:
3246 /// void
3247 /// * **Construct**:
3248 /// [`title`][crate::construct::partial_title]
3249 ///
3250 /// ## Example
3251 ///
3252 /// ```markdown
3253 /// > | a  e
3254 /// ^ ^
3255 /// ```
3256 ResourceTitleMarker,
3257 /// Resource title string.
3258 ///
3259 /// ## Info
3260 ///
3261 /// * **Context**:
3262 /// [`ResourceTitle`][Name::ResourceTitle]
3263 /// * **Content model**:
3264 /// [string content][crate::construct::string]
3265 /// * **Construct**:
3266 /// [`title`][crate::construct::partial_title]
3267 ///
3268 /// ## Example
3269 ///
3270 /// ```markdown
3271 /// > | a  e
3272 /// ^
3273 /// ```
3274 ResourceTitleString,
3275 /// Space or tab.
3276 ///
3277 /// ## Info
3278 ///
3279 /// * **Context**:
3280 /// basically everywhere
3281 /// * **Content model**:
3282 /// void
3283 /// * **Construct**:
3284 /// n/a
3285 ///
3286 /// ## Example
3287 ///
3288 /// ```markdown
3289 /// > | ␠* * *␠
3290 /// ^ ^ ^ ^
3291 /// ```
3292 SpaceOrTab,
3293 /// Strong.
3294 ///
3295 /// ## Info
3296 ///
3297 /// * **Context**:
3298 /// [text content][crate::construct::text]
3299 /// * **Content model**:
3300 /// [`StrongSequence`][Name::StrongSequence],
3301 /// [`StrongText`][Name::StrongText]
3302 /// * **Construct**:
3303 /// [`attention`][crate::construct::attention]
3304 ///
3305 /// ## Example
3306 ///
3307 /// ```markdown
3308 /// > | **a**
3309 /// ^^^^^
3310 /// ```
3311 Strong,
3312 /// Strong sequence.
3313 ///
3314 /// ## Info
3315 ///
3316 /// * **Context**:
3317 /// [`Strong`][Name::Strong]
3318 /// * **Content model**:
3319 /// void
3320 /// * **Construct**:
3321 /// [`attention`][crate::construct::attention]
3322 ///
3323 /// ## Example
3324 ///
3325 /// ```markdown
3326 /// > | **a**
3327 /// ^^ ^^
3328 /// ```
3329 StrongSequence,
3330 /// Strong text.
3331 ///
3332 /// ## Info
3333 ///
3334 /// * **Context**:
3335 /// [`Strong`][Name::Strong]
3336 /// * **Content model**:
3337 /// [text content][crate::construct::text]
3338 /// * **Construct**:
3339 /// [`attention`][crate::construct::attention]
3340 ///
3341 /// ## Example
3342 ///
3343 /// ```markdown
3344 /// > | **a**
3345 /// ^
3346 /// ```
3347 StrongText,
3348 /// Whole thematic break.
3349 ///
3350 /// ## Info
3351 ///
3352 /// * **Context**:
3353 /// [flow content][crate::construct::flow]
3354 /// * **Content model**:
3355 /// [`ThematicBreakSequence`][Name::ThematicBreakSequence],
3356 /// [`SpaceOrTab`][Name::SpaceOrTab]
3357 /// * **Construct**:
3358 /// [`thematic_break`][crate::construct::thematic_break]
3359 ///
3360 /// ## Example
3361 ///
3362 /// ```markdown
3363 /// > | * * *
3364 /// ^^^^^
3365 /// ```
3366 ThematicBreak,
3367 /// Thematic break sequence.
3368 ///
3369 /// ## Info
3370 ///
3371 /// * **Context**:
3372 /// [`ThematicBreak`][Name::ThematicBreak]
3373 /// * **Content model**:
3374 /// void
3375 /// * **Construct**:
3376 /// [`thematic_break`][crate::construct::thematic_break]
3377 ///
3378 /// ## Example
3379 ///
3380 /// ```markdown
3381 /// > | * * *
3382 /// ^ ^ ^
3383 /// ```
3384 ThematicBreakSequence,
3385
3386 LinePrefix,
3387}
3388
3389/// List of void events, used to make sure everything is working well.
3390pub const VOID_EVENTS: [Name; 76] = [
3391 Name::AttentionSequence,
3392 Name::AutolinkEmail,
3393 Name::AutolinkMarker,
3394 Name::AutolinkProtocol,
3395 Name::BlankLineEnding,
3396 Name::BlockQuoteMarker,
3397 Name::ByteOrderMark,
3398 Name::CharacterEscapeMarker,
3399 Name::CharacterEscapeValue,
3400 Name::CharacterReferenceMarker,
3401 Name::CharacterReferenceMarkerHexadecimal,
3402 Name::CharacterReferenceMarkerNumeric,
3403 Name::CharacterReferenceMarkerSemi,
3404 Name::CharacterReferenceValue,
3405 Name::CodeFencedFenceSequence,
3406 Name::CodeFlowChunk,
3407 Name::CodeTextData,
3408 Name::CodeTextSequence,
3409 Name::Data,
3410 Name::DefinitionDestinationLiteralMarker,
3411 Name::DefinitionLabelMarker,
3412 Name::DefinitionMarker,
3413 Name::DefinitionTitleMarker,
3414 Name::EmphasisSequence,
3415 Name::FrontmatterChunk,
3416 Name::GfmAutolinkLiteralEmail,
3417 Name::GfmAutolinkLiteralProtocol,
3418 Name::GfmAutolinkLiteralWww,
3419 Name::GfmFootnoteCallMarker,
3420 Name::GfmFootnoteDefinitionLabelMarker,
3421 Name::GfmFootnoteDefinitionMarker,
3422 Name::GfmStrikethroughSequence,
3423 Name::GfmTableCellDivider,
3424 Name::GfmTableDelimiterMarker,
3425 Name::GfmTableDelimiterFiller,
3426 Name::GfmTaskListItemMarker,
3427 Name::GfmTaskListItemValueChecked,
3428 Name::GfmTaskListItemValueUnchecked,
3429 Name::FrontmatterSequence,
3430 Name::HardBreakEscape,
3431 Name::HardBreakTrailing,
3432 Name::HeadingAtxSequence,
3433 Name::HeadingSetextUnderlineSequence,
3434 Name::HtmlFlowData,
3435 Name::HtmlTextData,
3436 // Name::WikilinkStart,
3437 // Name::WikilinkStart,
3438 // Name::WikilinkEnd,
3439 Name::LabelImageMarker,
3440 Name::LabelMarker,
3441 Name::LineEnding,
3442 Name::ListItemMarker,
3443 Name::ListItemValue,
3444 Name::MathFlowFenceSequence,
3445 Name::MathFlowChunk,
3446 Name::MathTextData,
3447 Name::MathTextSequence,
3448 Name::MdxEsmData,
3449 Name::MdxExpressionMarker,
3450 Name::MdxExpressionData,
3451 Name::MdxJsxTagMarker,
3452 Name::MdxJsxTagClosingMarker,
3453 Name::MdxJsxTagNamePrimary,
3454 Name::MdxJsxTagNameMemberMarker,
3455 Name::MdxJsxTagNamePrefixMarker,
3456 Name::MdxJsxTagNameMember,
3457 Name::MdxJsxTagNameLocal,
3458 Name::MdxJsxTagSelfClosingMarker,
3459 Name::MdxJsxTagAttributeNamePrefixMarker,
3460 Name::MdxJsxTagAttributeInitializerMarker,
3461 Name::MdxJsxTagAttributeNameLocal,
3462 Name::MdxJsxTagAttributeValueLiteralMarker,
3463 Name::MdxJsxEsWhitespace,
3464 Name::ReferenceMarker,
3465 Name::ResourceMarker,
3466 Name::ResourceTitleMarker,
3467 Name::SpaceOrTab,
3468 Name::StrongSequence,
3469 Name::ThematicBreakSequence,
3470];
3471
3472/// Embedded content type.
3473#[derive(Clone, Debug, Eq, PartialEq)]
3474pub enum Content {
3475 /// Represents [flow content][crate::construct::flow].
3476 Flow,
3477 /// Represents [content][crate::construct::content].
3478 #[allow(clippy::enum_variant_names)]
3479 Content,
3480 /// Represents [string content][crate::construct::string].
3481 String,
3482 /// Represents [text content][crate::construct::text].
3483 Text,
3484}
3485
3486/// Link to another event.
3487#[derive(Clone, Debug)]
3488pub struct Link {
3489 /// Previous event.
3490 pub previous: Option<usize>,
3491 /// Next event.
3492 pub next: Option<usize>,
3493 /// Content type.
3494 pub content: Content,
3495}
3496
3497/// Place in the document.
3498///
3499/// The interface for the location in the document comes from unist
3500/// [`Point`](https://github.com/syntax-tree/unist#point).
3501#[derive(Clone, Debug)]
3502pub struct Point {
3503 /// 1-indexed line number.
3504 pub line: usize,
3505 /// 1-indexed column number.
3506 ///
3507 /// This is increased up to a tab stop for tabs.
3508 /// Some editors count tabs as 1 character, so this position is not the
3509 /// same as editors.
3510 pub column: usize,
3511 /// 0-indexed position in the document.
3512 ///
3513 /// Also an `index` into `bytes`.
3514 pub index: usize,
3515 /// Virtual step on the same `index`.
3516 pub vs: usize,
3517}
3518
3519impl Point {
3520 /// Create a unist point.
3521 pub fn to_unist(&self) -> unist::Point {
3522 unist::Point {
3523 line: self.line,
3524 column: self.column,
3525 offset: self.index,
3526 }
3527 }
3528
3529 /// Create a new point, that is shifted from the close earlier current
3530 /// point, to `index`.
3531 pub fn shift_to(&self, bytes: &[u8], index: usize) -> Point {
3532 let mut next = self.clone();
3533 debug_assert!(index > next.index, "expected to shift forward");
3534
3535 while next.index < index {
3536 match bytes[next.index] {
3537 b'\n' | b'\r' => unreachable!("cannot move past line endings"),
3538 b'\t' => {
3539 let remainder = next.column % TAB_SIZE;
3540 let vs = if remainder == 0 {
3541 0
3542 } else {
3543 TAB_SIZE - remainder
3544 };
3545 next.index += 1;
3546 next.column += 1 + vs;
3547 }
3548 _ => {
3549 next.index += 1;
3550 next.column += 1;
3551 }
3552 }
3553 }
3554
3555 next
3556 }
3557}
3558
3559/// Event kinds.
3560#[derive(Clone, Debug, Eq, PartialEq)]
3561pub enum Kind {
3562 /// The start of something.
3563 Enter,
3564 /// The end of something.
3565 Exit,
3566}
3567
3568/// Something semantic happening somewhere.
3569#[derive(Clone, Debug)]
3570pub struct Event {
3571 /// Kind of event.
3572 pub kind: Kind,
3573 /// Name of event.
3574 pub name: Name,
3575 /// Place where this happens.
3576 pub point: Point,
3577 /// Link to another event.
3578 pub link: Option<Link>,
3579}