123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- Prism.languages.rest = {
- 'table': [
- {
- pattern: /(\s*)(?:\+[=-]+)+\+(?:\r?\n|\r)(?:\1(?:[+|].+)+[+|](?:\r?\n|\r))+\1(?:\+[=-]+)+\+/,
- lookbehind: true,
- inside: {
- 'punctuation': /\||(?:\+[=-]+)+\+/
- }
- },
- {
- pattern: /(\s*)(?:=+ +)+=+((?:\r?\n|\r)\1.+)+(?:\r?\n|\r)\1(?:=+ +)+=+(?=(?:\r?\n|\r){2}|\s*$)/,
- lookbehind: true,
- inside: {
- 'punctuation': /[=-]+/
- }
- }
- ],
- // Directive-like patterns
- 'substitution-def': {
- pattern: /(^\s*\.\. )\|(?:[^|\s]|[^|\s][^|]*[^|\s])\| [^:]+::/m,
- lookbehind: true,
- inside: {
- 'substitution': {
- pattern: /^\|(?:[^|\s]|[^|\s][^|]*[^|\s])\|/,
- alias: 'attr-value',
- inside: {
- 'punctuation': /^\||\|$/
- }
- },
- 'directive': {
- pattern: /( )[^:]+::/,
- lookbehind: true,
- alias: 'function',
- inside: {
- 'punctuation': /::$/
- }
- }
- }
- },
- 'link-target': [
- {
- pattern: /(^\s*\.\. )\[[^\]]+\]/m,
- lookbehind: true,
- alias: 'string',
- inside: {
- 'punctuation': /^\[|\]$/
- }
- },
- {
- pattern: /(^\s*\.\. )_(?:`[^`]+`|(?:\\:|[^:])+):/m,
- lookbehind: true,
- alias: 'string',
- inside: {
- 'punctuation': /^_|:$/
- }
- }
- ],
- 'directive': {
- pattern: /(^\s*\.\. )[^:]+::/m,
- lookbehind: true,
- alias: 'function',
- inside: {
- 'punctuation': /::$/
- }
- },
- 'comment': {
- pattern: /(^\s*\.\.\s).*(?:(?:\r?\n|\r).*)*?(?=(?:\r?\n|\r){2}|$)/m,
- lookbehind: true
- },
- 'title': [
- // Overlined and underlined
- {
- pattern: /^([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]{2,})(?:\r?\n|\r).+(?:\r?\n|\r)\1$/m,
- inside: {
- 'punctuation': /^[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+|[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+$/,
- 'important': /.+/
- }
- },
- // Underlined only
- {
- pattern: /(^|(?:\r?\n|\r){2}).+(?:\r?\n|\r)[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]{2,}(?=\r?\n|\r|$)/,
- lookbehind: true,
- inside: {
- 'punctuation': /[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+$/,
- 'important': /.+/
- }
- }
- ],
- 'hr': {
- pattern: /((?:\r?\n|\r){2})[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]{4,}(?=(?:\r?\n|\r){2})/,
- lookbehind: true,
- alias: 'punctuation'
- },
- 'list-bullet': {
- pattern: /(^\s*)(?:[*+\-•‣⁃]|\(?(?:\d+|[a-z]|[ivxdclm]+)\)|(?:\d+|[a-z]|[ivxdclm]+)\.)(?= )/im,
- lookbehind: true,
- alias: 'punctuation'
- },
- 'field': {
- pattern: /(^\s*):[^:]+:(?= )/m,
- lookbehind: true,
- alias: 'attr-name'
- },
- 'command-line-option': {
- pattern: /(^\s*)(?:[+-][a-z\d]|(?:\-\-|\/)[a-z\d-]+)(?:[ =](?:[a-z][a-z\d_-]*|<[^<>]+>))?(?:, (?:[+-][a-z\d]|(?:\-\-|\/)[a-z\d-]+)(?:[ =](?:[a-z][a-z\d_-]*|<[^<>]+>))?)*(?=(?:\r?\n|\r)? {2,}[\S])/im,
- lookbehind: true,
- alias: 'symbol'
- },
- 'literal-block': {
- pattern: /::(?:\r?\n|\r){2}([ \t]+).+(?:(?:\r?\n|\r)\1.+)*/,
- inside: {
- 'literal-block-punctuation': {
- pattern: /^::/,
- alias: 'punctuation'
- }
- }
- },
- 'quoted-literal-block': {
- pattern: /::(?:\r?\n|\r){2}([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]).*(?:(?:\r?\n|\r)\1.*)*/,
- inside: {
- 'literal-block-punctuation': {
- pattern: /^(?:::|[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])/m,
- alias: 'punctuation'
- }
- }
- },
- 'doctest-block': {
- pattern: /(^\s*)>>> .+(?:(?:\r?\n|\r).+)*/m,
- lookbehind: true,
- inside: {
- 'punctuation': /^>>>/
- }
- },
- 'inline': [
- {
- pattern: /(^|[\s\-:\/'"<(\[{])(?::[^:]+:`.*?`|`.*?`:[^:]+:|(\*\*?|``?|\|)(?!\s).*?[^\s]\2(?=[\s\-.,:;!?\\\/'")\]}]|$))/m,
- lookbehind: true,
- inside: {
- 'bold': {
- pattern: /(^\*\*).+(?=\*\*$)/,
- lookbehind: true
- },
- 'italic': {
- pattern: /(^\*).+(?=\*$)/,
- lookbehind: true
- },
- 'inline-literal': {
- pattern: /(^``).+(?=``$)/,
- lookbehind: true,
- alias: 'symbol'
- },
- 'role': {
- pattern: /^:[^:]+:|:[^:]+:$/,
- alias: 'function',
- inside: {
- 'punctuation': /^:|:$/
- }
- },
- 'interpreted-text': {
- pattern: /(^`).+(?=`$)/,
- lookbehind: true,
- alias: 'attr-value'
- },
- 'substitution': {
- pattern: /(^\|).+(?=\|$)/,
- lookbehind: true,
- alias: 'attr-value'
- },
- 'punctuation': /\*\*?|``?|\|/
- }
- }
- ],
- 'link': [
- {
- pattern: /\[[^\]]+\]_(?=[\s\-.,:;!?\\\/'")\]}]|$)/,
- alias: 'string',
- inside: {
- 'punctuation': /^\[|\]_$/
- }
- },
- {
- pattern: /(?:\b[a-z\d](?:[_.:+]?[a-z\d]+)?_?_|`[^`]+`_?_|_`[^`]+`)(?=[\s\-.,:;!?\\\/'")\]}]|$)/i,
- alias: 'string',
- inside: {
- 'punctuation': /^_?`|`?_?_$/
- }
- }
- ],
- // Line block start,
- // quote attribution,
- // explicit markup start,
- // and anonymous hyperlink target shortcut (__)
- 'punctuation': {
- pattern: /(^\s*)(?:\|(?= |$)|(?:---?|—|\.\.|__)(?= )|\.\.$)/m,
- lookbehind: true
- }
- };
|