/* Language: AsciiDoc Requires: xml.js Author: Dan Allen Website: http://google.com/profiles/dan.j.allen Description: A semantic, text-based document format that can be exported to HTML, DocBook and other backends. */ function(hljs) { return { contains: [ // block comment { className: 'comment', begin: '^/{4,}\\n', end: '\\n/{4,}$', // can also be done as... //begin: '^/{4,}$', //end: '^/{4,}$', relevance: 10 }, // line comment { className: 'comment', begin: '^//', end: '$', relevance: 0 }, // title { className: 'title', begin: '^\\.\\w.*$' }, // example, admonition & sidebar blocks { begin: '^[=\\*]{4,}\\n', end: '\\n^[=\\*]{4,}$', relevance: 10 }, // headings { className: 'header', begin: '^(={1,5}) .+?( \\1)?$', relevance: 10 }, { className: 'header', begin: '^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$', relevance: 10 }, // document attributes { className: 'attribute', begin: '^:.+?:', end: '\\s', excludeEnd: true, relevance: 10 }, // block attributes { className: 'attribute', begin: '^\\[.+?\\]$', relevance: 0 }, // quoteblocks { className: 'blockquote', begin: '^_{4,}\\n', end: '\\n_{4,}$', relevance: 10 }, // listing and literal blocks { className: 'code', begin: '^[\\-\\.]{4,}\\n', end: '\\n[\\-\\.]{4,}$', relevance: 10 }, // passthrough blocks { begin: '^\\+{4,}\\n', end: '\\n\\+{4,}$', contains: [ { begin: '<', end: '>', subLanguage: 'xml', relevance: 0 } ], relevance: 10 }, // lists (can only capture indicators) { className: 'bullet', begin: '^(\\*+|\\-+|\\.+|[^\\n]+?::)\\s+' }, // admonition { className: 'label', begin: '^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+', relevance: 10 }, // inline strong { className: 'strong', // must not follow a word character or be followed by an asterisk or space begin: '\\B\\*(?![\\*\\s])', end: '(\\n{2}|\\*)', // allow escaped asterisk followed by word char contains: [ { begin: '\\\\*\\w', relevance: 0 } ] }, // inline emphasis { className: 'emphasis', // must not follow a word character or be followed by a single quote or space begin: '\\B\'(?![\'\\s])', end: '(\\n{2}|\')', // allow escaped single quote followed by word char contains: [ { begin: '\\\\\'\\w', relevance: 0 } ], relevance: 0 }, // inline emphasis (alt) { className: 'emphasis', // must not follow a word character or be followed by an underline or space begin: '_(?![_\\s])', end: '(\\n{2}|_)', relevance: 0 }, // inline double smart quotes { className: 'smartquote', begin: "``.+?''", relevance: 10 }, // inline single smart quotes { className: 'smartquote', begin: "`.+?'", relevance: 10 }, // inline code snippets (TODO should get same treatment as strong and emphasis) { className: 'code', begin: '(`.+?`|\\+.+?\\+)', relevance: 0 }, // indented literal block { className: 'code', begin: '^[ \\t]', end: '$', relevance: 0 }, // horizontal rules { className: 'horizontal_rule', begin: '^\'{3,}[ \\t]*$', relevance: 10 }, // images and links { begin: '(link:)?(http|https|ftp|file|irc|image:?):\\S+\\[.*?\\]', returnBegin: true, contains: [ { //className: 'macro', begin: '(link|image:?):', relevance: 0 }, { className: 'link_url', begin: '\\w', end: '[^\\[]+', relevance: 0 }, { className: 'link_label', begin: '\\[', end: '\\]', excludeBegin: true, excludeEnd: true, relevance: 0 } ], relevance: 10 } ] }; }