123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- 'use strict';
- import { testTokenization } from '../test/testRunner';
- testTokenization('shell', [
- // Keywords
- [{
- line: 'if while',
- tokens: [
- { startIndex: 0, type: 'keyword.shell' },
- { startIndex: 2, type: 'white.shell' },
- { startIndex: 3, type: 'keyword.shell' }
- ]
- }],
- // Predefined & attribute
- [{
- line: 'ps -aux | grep code',
- tokens: [
- { startIndex: 0, type: 'type.identifier.shell' },
- { startIndex: 2, type: 'white.shell' },
- { startIndex: 3, type: 'attribute.name.shell' },
- { startIndex: 7, type: 'white.shell' },
- { startIndex: 8, type: 'delimiter.shell' },
- { startIndex: 9, type: 'white.shell' },
- { startIndex: 10, type: 'type.identifier.shell' },
- { startIndex: 14, type: 'white.shell' },
- { startIndex: 15, type: '' },
- ]
- }],
- [{
- line: '# comment',
- tokens: [
- { startIndex: 0, type: 'comment.shell' }
- ]
- }, {
- line: 'cd tree',
- tokens: [
- { startIndex: 0, type: 'type.identifier.shell' },
- { startIndex: 2, type: 'white.shell' },
- { startIndex: 3, type: '' }
- ]
- }],
- // Shebang
- [{
- line: '#!/bin/env bash',
- tokens: [
- { startIndex: 0, type: 'metatag.shell' }
- ]
- }],
- // Comments
- [{
- line: '#',
- tokens: [
- { startIndex: 0, type: 'comment.shell' }
- ]
- }],
- [{
- line: '# a comment',
- tokens: [
- { startIndex: 0, type: 'comment.shell' }
- ]
- }],
- [{
- line: ' # a comment',
- tokens: [
- { startIndex: 0, type: 'white.shell' },
- { startIndex: 4, type: 'comment.shell' }
- ]
- }],
- // numbers
- [{
- line: '0',
- tokens: [
- { startIndex: 0, type: 'number.shell' }
- ]
- }],
- [{
- line: '0.0',
- tokens: [
- { startIndex: 0, type: 'number.float.shell' }
- ]
- }],
- [{
- line: '0x123',
- tokens: [
- { startIndex: 0, type: 'number.hex.shell' }
- ]
- }],
- [{
- line: '23.5',
- tokens: [
- { startIndex: 0, type: 'number.float.shell' }
- ]
- }],
- [{
- line: '23.5e3',
- tokens: [
- { startIndex: 0, type: 'number.float.shell' }
- ]
- }],
- [{
- line: '23.5E3',
- tokens: [
- { startIndex: 0, type: 'number.float.shell' }
- ]
- }],
- [{
- line: '1.72e-3',
- tokens: [
- { startIndex: 0, type: 'number.float.shell' }
- ]
- }],
- [{
- line: '0+0',
- tokens: [
- { startIndex: 0, type: 'number.shell' },
- { startIndex: 1, type: 'delimiter.shell' },
- { startIndex: 2, type: 'number.shell' }
- ]
- }],
- [{
- line: '100+10',
- tokens: [
- { startIndex: 0, type: 'number.shell' },
- { startIndex: 3, type: 'delimiter.shell' },
- { startIndex: 4, type: 'number.shell' }
- ]
- }],
- [{
- line: '0 + 0',
- tokens: [
- { startIndex: 0, type: 'number.shell' },
- { startIndex: 1, type: 'white.shell' },
- { startIndex: 2, type: 'delimiter.shell' },
- { startIndex: 3, type: 'white.shell' },
- { startIndex: 4, type: 'number.shell' }
- ]
- }],
- // Strings
- [{
- line: "'test string'",
- tokens: [
- { startIndex: 0, type: 'string.shell' }
- ]
- }],
- [{
- line: '"test string"',
- tokens: [
- { startIndex: 0, type: 'string.shell' }
- ]
- }],
- [{
- line: "'test",
- tokens: [
- { startIndex: 0, type: 'string.shell' }
- ],
- }, {
- line: '',
- tokens: [
- ]
- }, {
- line: "string'",
- tokens: [
- { startIndex: 0, type: 'string.shell' }
- ]
- }],
- [{
- line: '"test',
- tokens: [
- { startIndex: 0, type: 'string.shell' }
- ],
- }, {
- line: '',
- tokens: [
- ]
- }, {
- line: 'string"',
- tokens: [
- { startIndex: 0, type: 'string.shell' }
- ]
- }],
- // Parameters
- [{
- line: '$1',
- tokens: [
- { startIndex: 0, type: 'variable.predefined.shell' }
- ]
- }],
- [{
- line: '$a',
- tokens: [
- { startIndex: 0, type: 'variable.shell' }
- ]
- }],
- [{
- line: '${string:position}',
- tokens: [
- { startIndex: 0, type: 'variable.shell' },
- { startIndex: 8, type: 'delimiter.shell' },
- { startIndex: 9, type: 'variable.shell' }
- ]
- }],
- [{
- line: '$(pwd)',
- tokens: [
- { startIndex: 0, type: 'variable.shell' },
- ]
- }],
- [{
- line: 'echo $hello | less',
- tokens: [
- { startIndex: 0, type: 'type.identifier.shell' },
- { startIndex: 4, type: 'white.shell' },
- { startIndex: 5, type: 'variable.shell' },
- { startIndex: 11, type: 'white.shell' },
- { startIndex: 12, type: 'delimiter.shell' },
- { startIndex: 13, type: 'white.shell' },
- { startIndex: 14, type: '' }
- ]
- }],
- // HereDoc
- [{
- line: '<< word',
- tokens: [
- { startIndex: 0, type: 'constants.shell' },
- { startIndex: 2, type: 'white.shell' },
- { startIndex: 3, type: 'string.heredoc.shell' }
- ]
- }],
- [{
- line: '<<- "word"',
- tokens: [
- { startIndex: 0, type: 'constants.shell' },
- { startIndex: 3, type: 'white.shell' },
- { startIndex: 4, type: 'string.heredoc.delimiter.shell' },
- { startIndex: 5, type: 'string.heredoc.shell' },
- { startIndex: 9, type: 'string.heredoc.delimiter.shell' },
- ]
- }],
- [{
- line: '<<< word',
- tokens: [
- { startIndex: 0, type: 'constants.shell' },
- { startIndex: 3, type: 'white.shell' },
- { startIndex: 4, type: 'string.heredoc.shell' }
- ]
- }],
- ])
|