summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'AbuseFilter/modules/mode-abusefilter.js')
-rw-r--r--AbuseFilter/modules/mode-abusefilter.js24
1 files changed, 19 insertions, 5 deletions
diff --git a/AbuseFilter/modules/mode-abusefilter.js b/AbuseFilter/modules/mode-abusefilter.js
index a4d82a8f..d3c05ee0 100644
--- a/AbuseFilter/modules/mode-abusefilter.js
+++ b/AbuseFilter/modules/mode-abusefilter.js
@@ -1,4 +1,4 @@
-/* global ace, mw */
+/* global ace */
ace.define( 'ace/mode/abusefilter_highlight_rules', [ 'require', 'exports', 'module', 'ace/lib/oop', 'ace/mode/text_highlight_rules' ], function ( require, exports ) {
'use strict';
@@ -7,17 +7,31 @@ ace.define( 'ace/mode/abusefilter_highlight_rules', [ 'require', 'exports', 'mod
AFHighlightRules = function () {
var cfg = mw.config.get( 'aceConfig' ),
constants = ( 'true|false|null' ),
- keywordMapper = this.createKeywordMapper(
+ keywords = this.createKeywordMapper(
{
keyword: cfg.keywords,
'support.function': cfg.functions,
- 'constant.language': constants,
+ 'constant.language': constants
+ },
+ // Null as default used in isKeywordOrVariable
+ null
+ ),
+ variables = this.createKeywordMapper(
+ {
'variable.language': cfg.variables,
'invalid.deprecated': cfg.deprecated,
'invalid.illegal': cfg.disabled
},
- 'identifier'
+ 'identifier',
+ true
),
+ isKeywordOrVariable = function ( value ) {
+ if ( keywords( value ) !== null ) {
+ return keywords( value );
+ } else {
+ return variables( value );
+ }
+ },
integer = '(?:(?:[1-9]\\d*)|(?:0))',
fraction = '(?:\\.\\d+)',
intPart = '(?:\\d+)',
@@ -44,7 +58,7 @@ ace.define( 'ace/mode/abusefilter_highlight_rules', [ 'require', 'exports', 'mod
token: 'constant.numeric',
regex: integer + '\\b'
}, {
- token: keywordMapper,
+ token: isKeywordOrVariable,
regex: '[a-zA-Z_][a-zA-Z0-9_]*\\b'
}, {
token: 'keyword.operator',