| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- export var conf = {
- comments: {
- lineComment: '#'
- },
- brackets: [
- ['{', '}'],
- ['[', ']'],
- ['(', ')']
- ],
- autoClosingPairs: [
- { open: '{', close: '}' },
- { open: '[', close: ']' },
- { open: '(', close: ')' },
- { open: '"""', close: '"""', notIn: ['string', 'comment'] },
- { open: '"', close: '"', notIn: ['string', 'comment'] }
- ],
- surroundingPairs: [
- { open: '{', close: '}' },
- { open: '[', close: ']' },
- { open: '(', close: ')' },
- { open: '"""', close: '"""' },
- { open: '"', close: '"' }
- ],
- folding: {
- offSide: true
- }
- };
- export var language = {
- // Set defaultToken to invalid to see what you do not tokenize yet
- defaultToken: 'invalid',
- tokenPostfix: '.gql',
- keywords: [
- 'null',
- 'true',
- 'false',
- 'query',
- 'mutation',
- 'subscription',
- 'extend',
- 'schema',
- 'directive',
- 'scalar',
- 'type',
- 'interface',
- 'union',
- 'enum',
- 'input',
- 'implements',
- 'fragment',
- 'on'
- ],
- typeKeywords: ['Int', 'Float', 'String', 'Boolean', 'ID'],
- directiveLocations: [
- 'SCHEMA',
- 'SCALAR',
- 'OBJECT',
- 'FIELD_DEFINITION',
- 'ARGUMENT_DEFINITION',
- 'INTERFACE',
- 'UNION',
- 'ENUM',
- 'ENUM_VALUE',
- 'INPUT_OBJECT',
- 'INPUT_FIELD_DEFINITION',
- 'QUERY',
- 'MUTATION',
- 'SUBSCRIPTION',
- 'FIELD',
- 'FRAGMENT_DEFINITION',
- 'FRAGMENT_SPREAD',
- 'INLINE_FRAGMENT',
- 'VARIABLE_DEFINITION'
- ],
- operators: ['=', '!', '?', ':', '&', '|'],
- // we include these common regular expressions
- symbols: /[=!?:&|]+/,
- // https://facebook.github.io/graphql/draft/#sec-String-Value
- escapes: /\\(?:["\\\/bfnrt]|u[0-9A-Fa-f]{4})/,
- // The main tokenizer for our languages
- tokenizer: {
- root: [
- // fields and argument names
- [
- /[a-z_][\w$]*/,
- {
- cases: {
- '@keywords': 'keyword',
- '@default': 'key.identifier'
- }
- }
- ],
- // identify typed input variables
- [
- /[$][\w$]*/,
- {
- cases: {
- '@keywords': 'keyword',
- '@default': 'argument.identifier'
- }
- }
- ],
- // to show class names nicely
- [
- /[A-Z][\w\$]*/,
- {
- cases: {
- '@typeKeywords': 'keyword',
- '@default': 'type.identifier'
- }
- }
- ],
- // whitespace
- { include: '@whitespace' },
- // delimiters and operators
- [/[{}()\[\]]/, '@brackets'],
- [/@symbols/, { cases: { '@operators': 'operator', '@default': '' } }],
- // @ annotations.
- // As an example, we emit a debugging log message on these tokens.
- // Note: message are supressed during the first load -- change some lines to see them.
- [/@\s*[a-zA-Z_\$][\w\$]*/, { token: 'annotation', log: 'annotation token: $0' }],
- // numbers
- [/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
- [/0[xX][0-9a-fA-F]+/, 'number.hex'],
- [/\d+/, 'number'],
- // delimiter: after number because of .\d floats
- [/[;,.]/, 'delimiter'],
- [/"""/, { token: 'string', next: '@mlstring', nextEmbedded: 'markdown' }],
- // strings
- [/"([^"\\]|\\.)*$/, 'string.invalid'],
- [/"/, { token: 'string.quote', bracket: '@open', next: '@string' }]
- ],
- mlstring: [
- [/[^"]+/, 'string'],
- ['"""', { token: 'string', next: '@pop', nextEmbedded: '@pop' }]
- ],
- string: [
- [/[^\\"]+/, 'string'],
- [/@escapes/, 'string.escape'],
- [/\\./, 'string.escape.invalid'],
- [/"/, { token: 'string.quote', bracket: '@close', next: '@pop' }]
- ],
- whitespace: [
- [/[ \t\r\n]+/, ''],
- [/#.*$/, 'comment']
- ]
- }
- };
|