Bugfix/code mirror tickscript (#5225)

* Match only uppercase TRUE and FALSE as atoms

* Add AND and OR as operators

* Allow variables to begin with capital letters

* Add optional @ to recognize user defined function calls as variables

* Remove multiline comment state add multiline string states

* Add dbrp keyword

* Update changelog
pull/5227/head
Deniz Kusefoglu 2019-07-03 15:02:50 -07:00 committed by GitHub
parent 87081a9c7f
commit c173f3f586
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 20 deletions

View File

@ -1,6 +1,8 @@
## v1.7.13 ## v1.7.13
### Bug Fixes ### Bug Fixes
1. [#5217](https://github.com/influxdata/chronograf/pull/5217): Fix scroll to row bug on table graphs 1. [#5217](https://github.com/influxdata/chronograf/pull/5217): Fix scroll to row bug on table graphs
1. [#5170](https://github.com/influxdata/chronograf/pull/5170): Wrap inline commas in quotes to distinguish from csv delimiters
1. [#5225](https://github.com/influxdata/chronograf/pull/5225): Fix tickscript editor syntax coloring
### Features ### Features

View File

@ -104,26 +104,29 @@ export const modeTickscript = {
// The start state contains the rules that are intially used // The start state contains the rules that are intially used
start: [ start: [
// The regex matches the token, the token property contains the type // The regex matches the token, the token property contains the type
// A next property will cause the mode to move to a different state
{ {
regex: /"(?:[^\\]|\\.)*?(?:"|$)/, regex: /"/,
token: 'string.double', token: 'string.double',
next: 'stringdouble',
}, },
{ {
regex: /'(?:[^\\]|\\.)*?(?:'|$)/, regex: /'/,
token: 'string.single', token: 'string.single',
next: 'stringsingle',
}, },
{ {
regex: /(function)(\s+)([a-z$][\w$]*)/, regex: /(function)(\s+)([A-Za-z][\w]*)/,
token: ['keyword', null, 'variable-2'], token: ['keyword', null, 'variable-2'],
}, },
// Rules are matched in the order in which they appear, so there is // Rules are matched in the order in which they appear, so there is
// no ambiguity between this one and the one above // no ambiguity between this one and the one above
{ {
regex: /(?:var|return|if|for|while|else|do|this|stream|batch|influxql|lambda)/, regex: /(?:var|return|dbrp|if|for|while|else|do|this|stream|batch|influxql|lambda)/,
token: 'keyword', token: 'keyword',
}, },
{ {
regex: /true|false|null|undefined|TRUE|FALSE/, regex: /TRUE|FALSE/,
token: 'atom', token: 'atom',
}, },
{ {
@ -138,31 +141,35 @@ export const modeTickscript = {
regex: /\/(?:[^\\]|\\.)*?\//, regex: /\/(?:[^\\]|\\.)*?\//,
token: 'variable-3', token: 'variable-3',
}, },
// A next property will cause the mode to move to a different state
{ {
regex: /\/\*/, regex: /AND|OR|[-~+\/*=<>!]+/,
token: 'comment',
next: 'comment',
},
{
regex: /[-+\/*=<>!]+/,
token: 'operator', token: 'operator',
}, },
{ {
regex: /[a-z$][\w$]*/, regex: /[@]?[A-Za-z][\w$]*/,
token: 'variable', token: 'variable',
}, },
], ],
// The multi-line comment state. stringdouble: [
comment: [
{ {
regex: /.*?\*\//, regex: /"/,
token: 'comment', token: 'string.double',
next: 'start', next: 'start',
}, },
{ {
regex: /.*/, regex: /[^"]/,
token: 'comment', token: 'string.double',
},
],
stringsingle: [
{
regex: /'/,
token: 'string.single',
next: 'start',
},
{
regex: /[^']/,
token: 'string.single',
}, },
], ],
// The meta property contains global information about the mode. It // The meta property contains global information about the mode. It
@ -170,7 +177,6 @@ export const modeTickscript = {
// all modes, and also directives like dontIndentStates, which are // all modes, and also directives like dontIndentStates, which are
// specific to simple modes. // specific to simple modes.
meta: { meta: {
dontIndentStates: ['comment'],
lineComment: '//', lineComment: '//',
}, },
} }