123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- module.exports = function(hljs) {
- var LITERALS = 'true false yes no null';
- // Define keys as starting with a word character
- // ...containing word chars, spaces, colons, forward-slashes, hyphens and periods
- // ...and ending with a colon followed immediately by a space, tab or newline.
- // The YAML spec allows for much more than this, but this covers most use-cases.
- var KEY = {
- className: 'attr',
- variants: [
- { begin: '\\w[\\w :\\/.-]*:(?=[ \t]|$)' },
- { begin: '"\\w[\\w :\\/.-]*":(?=[ \t]|$)' }, //double quoted keys
- { begin: '\'\\w[\\w :\\/.-]*\':(?=[ \t]|$)' } //single quoted keys
- ]
- };
- var TEMPLATE_VARIABLES = {
- className: 'template-variable',
- variants: [
- { begin: '\{\{', end: '\}\}' }, // jinja templates Ansible
- { begin: '%\{', end: '\}' } // Ruby i18n
- ]
- };
- var STRING = {
- className: 'string',
- relevance: 0,
- variants: [
- {begin: /'/, end: /'/},
- {begin: /"/, end: /"/},
- {begin: /\S+/}
- ],
- contains: [
- hljs.BACKSLASH_ESCAPE,
- TEMPLATE_VARIABLES
- ]
- };
- return {
- case_insensitive: true,
- aliases: ['yml', 'YAML', 'yaml'],
- contains: [
- KEY,
- {
- className: 'meta',
- begin: '^---\s*$',
- relevance: 10
- },
- { // multi line string
- // Blocks start with a | or > followed by a newline
- //
- // Indentation of subsequent lines must be the same to
- // be considered part of the block
- className: 'string',
- begin: '[\\|>]([0-9]?[+-])?[ ]*\\n( *)[\\S ]+\\n(\\2[\\S ]+\\n?)*',
- },
- { // Ruby/Rails erb
- begin: '<%[%=-]?', end: '[%-]?%>',
- subLanguage: 'ruby',
- excludeBegin: true,
- excludeEnd: true,
- relevance: 0
- },
- { // local tags
- className: 'type',
- begin: '!' + hljs.UNDERSCORE_IDENT_RE,
- },
- { // data type
- className: 'type',
- begin: '!!' + hljs.UNDERSCORE_IDENT_RE,
- },
- { // fragment id &ref
- className: 'meta',
- begin: '&' + hljs.UNDERSCORE_IDENT_RE + '$',
- },
- { // fragment reference *ref
- className: 'meta',
- begin: '\\*' + hljs.UNDERSCORE_IDENT_RE + '$'
- },
- { // array listing
- className: 'bullet',
- // TODO: remove |$ hack when we have proper look-ahead support
- begin: '\\-(?=[ ]|$)',
- relevance: 0
- },
- hljs.HASH_COMMENT_MODE,
- {
- beginKeywords: LITERALS,
- keywords: {literal: LITERALS}
- },
- // numbers are any valid C-style number that
- // sit isolated from other words
- {
- className: 'number',
- begin: hljs.C_NUMBER_RE + '\\b'
- },
- STRING
- ]
- };
- };
|