UNPKG

highlight-ts

Version:

Highlight.JS in TypeScript (and ES6).

174 lines 4.17 kB
"use strict"; /* Language: Markdown Requires: xml.js Author: John Crepezzi <john.crepezzi@gmail.com> Website: http://seejohncode.com/ Category: common, markup */ Object.defineProperty(exports, "__esModule", { value: true }); // inline links var INLINE_LINK_MODE = { begin: '<\\w+:[^>]*>', returnBegin: true, contains: [ { className: 'link', begin: '<', end: '>', excludeBegin: true, excludeEnd: true } ], relevance: 5 }; // inline html var INLINE_HTML_MODE = { begin: '<', end: '>', subLanguage: 'xml', relevance: 0 }; // inline code var INLINE_CODE_MODE = { className: 'code', begin: '`.+?`' }; var STRONG_CONTAINS = [ INLINE_LINK_MODE, INLINE_HTML_MODE, INLINE_CODE_MODE, ]; // strong segments var STRONG_MODE = { className: 'strong', variants: [ { begin: '\\*{2}', end: '\\*{2}', contains: STRONG_CONTAINS }, { begin: '_{2}', end: '_{2}', contains: STRONG_CONTAINS }, ] }; var EMPHASIS_CONTAINS = [ INLINE_LINK_MODE, INLINE_HTML_MODE, INLINE_CODE_MODE, ]; // emphasis segments var EMPHASIS_MODE = { className: 'emphasis', variants: [ { begin: '\\*(?!\\*)', end: '\\*(?!\\*)', contains: EMPHASIS_CONTAINS }, { begin: '_(?!_)', end: '_(?!_)', contains: EMPHASIS_CONTAINS, relevance: 0, }, ] }; var INLINE_CONTAINS = [ INLINE_LINK_MODE, INLINE_HTML_MODE, INLINE_CODE_MODE, ]; // using links - title and link var LINK_MODE = { begin: '\\!?\\[.+?\\][\\(\\[].*?[\\)\\]]', returnBegin: true, contains: [ { className: 'string', begin: '\\!?\\[', end: '\\]', excludeBegin: true, returnEnd: true, contains: INLINE_CONTAINS, relevance: 0 }, { className: 'link', begin: '\\]\\(', end: '\\)', excludeBegin: true, excludeEnd: true }, { className: 'symbol', begin: '\\]\\[', end: '\\]', excludeBegin: true, excludeEnd: true } ], relevance: 10 }; STRONG_CONTAINS.push(EMPHASIS_MODE); STRONG_CONTAINS.push(LINK_MODE); EMPHASIS_CONTAINS.push(STRONG_MODE); EMPHASIS_CONTAINS.push(LINK_MODE); INLINE_CONTAINS.push(STRONG_MODE); INLINE_CONTAINS.push(EMPHASIS_MODE); INLINE_CONTAINS.push(LINK_MODE); exports.Markdown = { name: 'markdown', aliases: ['md', 'mkdown', 'mkd'], contains: [ // highlight headers { className: 'section', variants: [ { begin: '^#{1,6}', end: '$' }, { begin: '^.+?\\n[=-]{2,}$' } ], contains: INLINE_CONTAINS }, // lists (indicators only) { className: 'bullet', begin: '^\\s*([*+-]|(\\d+\\.))\\s+' }, // blockquotes { className: 'quote', begin: '^>\\s+', end: '$', contains: INLINE_CONTAINS }, // code snippets { className: 'code', variants: [ { begin: '^```\w*\s*$', end: '^```\s*$' }, { begin: '^( {4}|\t)', end: '$', relevance: 0 } ] }, // horizontal rules { begin: '^[-\\*]{3,}', end: '$' }, { begin: /^\s*\[[^\n]+\]:/, returnBegin: true, contains: [ { className: 'symbol', begin: /\s*\[/, end: /\]/, excludeBegin: true, excludeEnd: true }, { className: 'link', begin: /:\s*/, end: /$/, excludeBegin: true } ] } ].concat(INLINE_CONTAINS) }; //# sourceMappingURL=markdown.js.map