markdown-it.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. var md = {compilers: {}}
  2. var mdit = {
  3. mdit: window.markdownit,
  4. abbr: window.markdownitAbbr,
  5. anchor: window.markdownItAnchor,
  6. attrs: window.markdownItAttrs,
  7. cjk: window.markdownitCjkBreaks,
  8. deflist: window.markdownitDeflist,
  9. footnote: window.markdownitFootnote,
  10. ins: window.markdownitIns,
  11. mark: window.markdownitMark,
  12. sub: window.markdownitSub,
  13. sup: window.markdownitSup,
  14. tasklists: window.markdownitTaskLists,
  15. }
  16. md.compilers['markdown-it'] = (() => {
  17. var defaults = {
  18. breaks: false,
  19. html: true,
  20. linkify: true,
  21. typographer: false,
  22. xhtmlOut: false,
  23. langPrefix: 'language-',
  24. quotes: '“”‘’',
  25. // plugins
  26. abbr: false,
  27. attrs: false,
  28. cjk: false,
  29. deflist: false,
  30. footnote: false,
  31. ins: false,
  32. mark: false,
  33. sub: false,
  34. sup: false,
  35. tasklists: false,
  36. }
  37. var description = {
  38. breaks: 'Convert \\n in paragraphs into <br>',
  39. html: 'Enable HTML tags in source',
  40. linkify: 'Autoconvert URL-like text to links',
  41. typographer: 'Enable some language-neutral replacement + quotes beautification',
  42. xhtmlOut: 'Use / to close single tags (<br />)',
  43. // plugins
  44. abbr: 'Abbreviation <abbr>\n*[word]: Text',
  45. attrs: 'Custom attributes\n# header {#id}',
  46. cjk: 'Suppress linebreaks between east asian characters',
  47. deflist: 'Definition list <dl>\ntitle\n: definition',
  48. footnote: 'Footnotes\nword[^1]\n[^1]: text',
  49. ins: 'Inserted text <ins>\n++text++',
  50. mark: 'Marked text <mark>\n==text==',
  51. sub: 'Subscript <sub>\n~text~',
  52. sup: 'Superscript <sup>\n^text^',
  53. tasklists: 'Task lists\n- [x]\n- [ ]',
  54. }
  55. var ctor = ({storage: {state}}) => ({
  56. defaults,
  57. description,
  58. compile: (markdown) =>
  59. mdit.mdit(state['markdown-it'])
  60. .use(mdit.anchor, {
  61. slugify: (s) => slugger(s)
  62. })
  63. .use(state['markdown-it'].abbr ? mdit.abbr : () => {})
  64. .use(state['markdown-it'].attrs ? mdit.attrs : () => {})
  65. .use(state['markdown-it'].cjk ? mdit.cjk : () => {})
  66. .use(state['markdown-it'].deflist ? mdit.deflist : () => {})
  67. .use(state['markdown-it'].footnote ? mdit.footnote : () => {})
  68. .use(state['markdown-it'].ins ? mdit.ins : () => {})
  69. .use(state['markdown-it'].mark ? mdit.mark : () => {})
  70. .use(state['markdown-it'].sub ? mdit.sub : () => {})
  71. .use(state['markdown-it'].sup ? mdit.sup : () => {})
  72. .use(state['markdown-it'].tasklists ? mdit.tasklists : () => {})
  73. .render(markdown)
  74. })
  75. return Object.assign(ctor, {defaults, description})
  76. })()