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