123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- define(["require", "exports"], function (require, exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.conf = {
- comments: {
- lineComment: '#'
- },
- brackets: [
- ['{', '}'],
- ['[', ']'],
- ['(', ')']
- ],
- autoClosingPairs: [
- { open: '{', close: '}' },
- { open: '[', close: ']' },
- { open: '(', close: ')' },
- { open: '"', close: '"' },
- { open: '\'', close: '\'' },
- ],
- surroundingPairs: [
- { open: '{', close: '}' },
- { open: '[', close: ']' },
- { open: '(', close: ')' },
- { open: '"', close: '"' },
- { open: '\'', close: '\'' },
- ],
- folding: {
- offSide: true
- }
- };
- exports.language = {
- tokenPostfix: '.yaml',
- brackets: [
- { token: 'delimiter.bracket', open: '{', close: '}' },
- { token: 'delimiter.square', open: '[', close: ']' }
- ],
- keywords: ['true', 'True', 'TRUE', 'false', 'False', 'FALSE', 'null', 'Null', 'Null', '~'],
- numberInteger: /(?:0|[+-]?[0-9]+)/,
- numberFloat: /(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,
- numberOctal: /0o[0-7]+/,
- numberHex: /0x[0-9a-fA-F]+/,
- numberInfinity: /[+-]?\.(?:inf|Inf|INF)/,
- numberNaN: /\.(?:nan|Nan|NAN)/,
- numberDate: /\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,
- escapes: /\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,
- tokenizer: {
- root: [
- { include: '@whitespace' },
- { include: '@comment' },
- // Directive
- [/%[^ ]+.*$/, 'meta.directive'],
- // Document Markers
- [/---/, 'operators.directivesEnd'],
- [/\.{3}/, 'operators.documentEnd'],
- // Block Structure Indicators
- [/[-?:](?= )/, 'operators'],
- { include: '@anchor' },
- { include: '@tagHandle' },
- { include: '@flowCollections' },
- { include: '@blockStyle' },
- // Numbers
- [/@numberInteger(?![ \t]*\S+)/, 'number'],
- [/@numberFloat(?![ \t]*\S+)/, 'number.float'],
- [/@numberOctal(?![ \t]*\S+)/, 'number.octal'],
- [/@numberHex(?![ \t]*\S+)/, 'number.hex'],
- [/@numberInfinity(?![ \t]*\S+)/, 'number.infinity'],
- [/@numberNaN(?![ \t]*\S+)/, 'number.nan'],
- [/@numberDate(?![ \t]*\S+)/, 'number.date'],
- // Key:Value pair
- [/(".*?"|'.*?'|.*?)([ \t]*)(:)( |$)/, ['type', 'white', 'operators', 'white']],
- { include: '@flowScalars' },
- // String nodes
- [/.+$/, {
- cases: {
- '@keywords': 'keyword',
- '@default': 'string'
- }
- }]
- ],
- // Flow Collection: Flow Mapping
- object: [
- { include: '@whitespace' },
- { include: '@comment' },
- // Flow Mapping termination
- [/\}/, '@brackets', '@pop'],
- // Flow Mapping delimiter
- [/,/, 'delimiter.comma'],
- // Flow Mapping Key:Value delimiter
- [/:(?= )/, 'operators'],
- // Flow Mapping Key:Value key
- [/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/, 'type'],
- // Start Flow Style
- { include: '@flowCollections' },
- { include: '@flowScalars' },
- // Scalar Data types
- { include: '@tagHandle' },
- { include: '@anchor' },
- { include: '@flowNumber' },
- // Other value (keyword or string)
- [/[^\},]+/, {
- cases: {
- '@keywords': 'keyword',
- '@default': 'string'
- }
- }]
- ],
- // Flow Collection: Flow Sequence
- array: [
- { include: '@whitespace' },
- { include: '@comment' },
- // Flow Sequence termination
- [/\]/, '@brackets', '@pop'],
- // Flow Sequence delimiter
- [/,/, 'delimiter.comma'],
- // Start Flow Style
- { include: '@flowCollections' },
- { include: '@flowScalars' },
- // Scalar Data types
- { include: '@tagHandle' },
- { include: '@anchor' },
- { include: '@flowNumber' },
- // Other value (keyword or string)
- [/[^\],]+/, {
- cases: {
- '@keywords': 'keyword',
- '@default': 'string'
- }
- }]
- ],
- // First line of a Block Style
- multiString: [
- [/^( +).+$/, 'string', '@multiStringContinued.$1']
- ],
- // Further lines of a Block Style
- // Workaround for indentation detection
- multiStringContinued: [
- [/^( *).+$/, {
- cases: {
- '$1==$S2': 'string',
- '@default': { token: '@rematch', next: '@popall' }
- }
- }]
- ],
- whitespace: [
- [/[ \t\r\n]+/, 'white']
- ],
- // Only line comments
- comment: [
- [/#.*$/, 'comment']
- ],
- // Start Flow Collections
- flowCollections: [
- [/\[/, '@brackets', '@array'],
- [/\{/, '@brackets', '@object']
- ],
- // Start Flow Scalars (quoted strings)
- flowScalars: [
- [/"([^"\\]|\\.)*$/, 'string.invalid'],
- [/'([^'\\]|\\.)*$/, 'string.invalid'],
- [/'[^']*'/, 'string'],
- [/"/, 'string', '@doubleQuotedString']
- ],
- doubleQuotedString: [
- [/[^\\"]+/, 'string'],
- [/@escapes/, 'string.escape'],
- [/\\./, 'string.escape.invalid'],
- [/"/, 'string', '@pop']
- ],
- // Start Block Scalar
- blockStyle: [
- [/[>|][0-9]*[+-]?$/, 'operators', '@multiString']
- ],
- // Numbers in Flow Collections (terminate with ,]})
- flowNumber: [
- [/@numberInteger(?=[ \t]*[,\]\}])/, 'number'],
- [/@numberFloat(?=[ \t]*[,\]\}])/, 'number.float'],
- [/@numberOctal(?=[ \t]*[,\]\}])/, 'number.octal'],
- [/@numberHex(?=[ \t]*[,\]\}])/, 'number.hex'],
- [/@numberInfinity(?=[ \t]*[,\]\}])/, 'number.infinity'],
- [/@numberNaN(?=[ \t]*[,\]\}])/, 'number.nan'],
- [/@numberDate(?=[ \t]*[,\]\}])/, 'number.date']
- ],
- tagHandle: [
- [/\![^ ]*/, 'tag']
- ],
- anchor: [
- [/[&*][^ ]+/, 'namespace']
- ]
- }
- };
- });
|