constructs.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /**
  2. * @import {Extension} from 'micromark-util-types'
  3. */
  4. import { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';
  5. import { resolver as resolveText } from './initialize/text.js';
  6. /** @satisfies {Extension['document']} */
  7. export const document = {
  8. [42]: list,
  9. [43]: list,
  10. [45]: list,
  11. [48]: list,
  12. [49]: list,
  13. [50]: list,
  14. [51]: list,
  15. [52]: list,
  16. [53]: list,
  17. [54]: list,
  18. [55]: list,
  19. [56]: list,
  20. [57]: list,
  21. [62]: blockQuote
  22. };
  23. /** @satisfies {Extension['contentInitial']} */
  24. export const contentInitial = {
  25. [91]: definition
  26. };
  27. /** @satisfies {Extension['flowInitial']} */
  28. export const flowInitial = {
  29. [-2]: codeIndented,
  30. [-1]: codeIndented,
  31. [32]: codeIndented
  32. };
  33. /** @satisfies {Extension['flow']} */
  34. export const flow = {
  35. [35]: headingAtx,
  36. [42]: thematicBreak,
  37. [45]: [setextUnderline, thematicBreak],
  38. [60]: htmlFlow,
  39. [61]: setextUnderline,
  40. [95]: thematicBreak,
  41. [96]: codeFenced,
  42. [126]: codeFenced
  43. };
  44. /** @satisfies {Extension['string']} */
  45. export const string = {
  46. [38]: characterReference,
  47. [92]: characterEscape
  48. };
  49. /** @satisfies {Extension['text']} */
  50. export const text = {
  51. [-5]: lineEnding,
  52. [-4]: lineEnding,
  53. [-3]: lineEnding,
  54. [33]: labelStartImage,
  55. [38]: characterReference,
  56. [42]: attention,
  57. [60]: [autolink, htmlText],
  58. [91]: labelStartLink,
  59. [92]: [hardBreakEscape, characterEscape],
  60. [93]: labelEnd,
  61. [95]: attention,
  62. [96]: codeText
  63. };
  64. /** @satisfies {Extension['insideSpan']} */
  65. export const insideSpan = {
  66. null: [attention, resolveText]
  67. };
  68. /** @satisfies {Extension['attentionMarkers']} */
  69. export const attentionMarkers = {
  70. null: [42, 95]
  71. };
  72. /** @satisfies {Extension['disable']} */
  73. export const disable = {
  74. null: []
  75. };