]>
luflow.net public git repositories - flow-web.git/blob - static/highlight/languages/routeros.js
1 /*! `routeros` grammar compiled for Highlight.js 11.11.1 */
3 var hljsGrammar
= ( function () {
7 Language: MikroTik RouterOS script
8 Author: Ivan Dementev <ivan_div@mail.ru>
9 Description: Scripting host provides a way to automate some router maintenance tasks by means of executing user-defined scripts bounded to some event occurrence
10 Website: https://wiki.mikrotik.com/wiki/Manual:Scripting
14 // Colors from RouterOS terminal:
18 // light-brown - #9A9900
20 function routeros ( hljs
) {
21 const STATEMENTS
= 'foreach do while for if from to step else on-error and or not in' ;
23 // Global commands: Every global command should start with ":" token, otherwise it will be treated as variable.
24 const GLOBAL_COMMANDS
= 'global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime' ;
26 // Common commands: Following commands available from most sub-menus:
27 const COMMON_COMMANDS
= 'add remove enable disable set get print export edit find run debug error info warning' ;
29 const LITERALS
= 'true false yes no nothing nil null' ;
31 const OBJECTS
= 'traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw' ;
34 className : 'variable' ,
36 { begin : /\$[\w\d#@][\w\d_]*/ },
37 { begin : /\$\{(.*?)\}/ }
41 const QUOTE_STRING
= {
46 hljs
. BACKSLASH_ESCAPE
,
49 className : 'variable' ,
52 contains : [ hljs
. BACKSLASH_ESCAPE
]
64 name : 'MikroTik RouterOS script' ,
65 aliases : [ 'mikrotik' ],
66 case_insensitive : true ,
70 keyword : STATEMENTS
+ ' :' + STATEMENTS
. split ( ' ' ). join ( ' :' ) + ' :' + GLOBAL_COMMANDS
. split ( ' ' ). join ( ' :' )
90 hljs
. COMMENT ( '^#' , '$' ),
96 // > is to avoid matches with => in other grammars
97 begin : /[\w-]+=([^\s{}[\]()>]+)/ ,
102 className : 'attribute' ,
107 endsWithParent : true ,
114 className : 'literal' ,
115 begin : ' \\ b(' + LITERALS
. split ( ' ' ). join ( '|' ) + ') \\ b'
118 // Do not format unclassified values. Needed to exclude highlighting of values as built_in.
119 begin : /("[^"]*"|[^\s{}[\]]+)/ }
122 // IPv4 addresses and subnets
125 {begin: IPADDR_wBITMASK+'(,'+IPADDR_wBITMASK+')*'}, //192.168.0.0/24,1.2.3.0/24
126 {begin: IPADDR+'-'+IPADDR}, // 192.168.0.1-192.168.0.3
127 {begin: IPADDR+'(,'+IPADDR+')*'}, // 192.168.0.1,192.168.0.34,192.168.24.1,192.168.0.1
131 // MAC addresses and DHCP Client IDs
133 begin: /\b(1:)?([0-9A-Fa-f]{1,2}[:-]){5}([0-9A-Fa-f]){1,2}\b/,
143 begin : /\*[0-9a-fA-F]+/
146 begin : ' \\ b(' + COMMON_COMMANDS
. split ( ' ' ). join ( '|' ) + ')([ \\ s[( \\ ]|])' ,
150 className : 'built_in' , // 'function',
156 className : 'built_in' ,
158 { begin : '( \\ . \\ ./|/| \\ s)((' + OBJECTS
. split ( ' ' ). join ( '|' ) + ');? \\ s)+' },
173 hljs
. registerLanguage ( 'routeros' , hljsGrammar
);