Update hlJS custom modules

This commit is contained in:
Kai Kimera 2024-04-16 18:12:43 +03:00
parent e70631477c
commit b113af17c3
4 changed files with 821 additions and 30 deletions

View File

@ -0,0 +1,717 @@
(() => {
const $lang = (() => {
'use strict';
return () => {
const $COMMAND = /(?=^\s*[a-z0-9A-Z_]+(?:\(([a-zA-Z\-]*)\)#|#)|[a-zA-Z]+[0-9]\/[0-9]\z)/;
/* regex for IPv4 address */
const $IP4 = /(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|9[0-9]|[1-8][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|9[0-9]|[1-8][0-9]|[0-9])(?:\/\d{1,2})?/;
/* regex for IPv6 address, from: https://www.regextester.com/104187*/
const $IP6 = /(?![^\w:])(([0-9a-f]{1,4}:){1,7}:|:(:[0-9a-f]{1,4}){1,7}|([0-9a-f]{1,4}:){1,7}[0-9a-f]{0,4}(:[0-9a-f]{1,4}){1,7})(?![\w:])/;
/* regex for MAC address in Cicso IOS notation */
const $MAC = /(?:[aA0-fF9]{4}\.){2}[aA0-fF9]{4}/;
return {
name: 'cisco-cli',
aliases: ['cisco-cli'],
disableAutodetect: true,
case_insensitive: true,
contains: [
{
className: '',
variants: [
{
begin: /^VLAN\s*Name/,
end: $COMMAND,
returnBegin: true,
contains: [{className: 'string', begin: /(?:Fa|Gig)\d\/\d+/}, {
className: 'number',
begin: /\b\d+\b/
}, {className: 'keyword', begin: /(?<=^[0-9][0-9]?[0-9]?[0-9]?).+(?=\sactive|\d{6})/}] //este STATUS
},
{
begin: /Cisco\sInternetwork/,
end: /is\s[a-fA-F0-9]x[a-fA-F0-9]+/,
contains: [{
className: 'string',
variants: [{begin: /"/, end: /"/}, {begin: /http/, end: /$/}]
}, {
className: 'string',
begin: /Processor\sboard/,
end: /\(Read\/Write\)/,
contains: [{className: 'number', begin: /^\d/, end: /(\s|K)/}]
}]
},
{
begin: /Interface\s+IP-Address/,
end: $COMMAND,
contains: [{
className: 'keyword',
variants: [{begin: /^\w+((\d\/)+\d?|\d+)/}, {begin: /(manual|DHCP|up)/}]
}, {className: 'number', begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}/}, {
className: 'number',
begin: /(?![^\w:])(([0-9a-f]{1,4}:){1,7}:|:(:[0-9a-f]{1,4}){1,7}|([0-9a-f]{1,4}:){1,7}[0-9a-f]{0,4}(:[0-9a-f]{1,4}){1,7})(?![\w:])/
}, {className: 'string', begin: /(unset|unassigned|administratively\sdown|down)/},]
},
{
begin: /Capability\sCodes/,
end: $COMMAND,
contains: [{className: 'keyword', begin: /\s(\w|\*)(\d|\w?)\s(?=-)/}, {
className: 'comment',
begin: /Port\sID/,
end: /(?=^[a-zA-Z]+(\(([a-zA-Z\-]*)\)#|#)|[a-zA-Z]+[0-9]\/[0-9]\z)/,
contains: [{
className: 'keyword',
variants: [{begin: /^[\w.]+(?=\s)/}, {begin: /\b\w\b/}]
}, {className: 'string', begin: /\s\w{1,3}\s[\d\/]+\d?/}, {className: 'number', begin: /\b\d+\b/}]
}]
},
{
begin: /(?<=show\sip\snat\stranslations)/,
end: $COMMAND,
contains: [{className: 'number', begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}/}, {
className: 'keyword',
begin: /(?<=:)\d+(?=\s)/
}, {className: 'string', begin: /(?<=^)\w+(?=\s)/}]
},
{
begin: /(?<=show\sip\snat\sstatistics)/,
end: $COMMAND,
contains: [{
className: 'string',
variants: [{begin: /(?<=pool\s)\w+(?=\srefCount)/}, {begin: /(?<=Interfaces:\s).+(?=$)/}]
}, {className: 'number', variants: [{begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}/}, {begin: /\b\d+\b/}]}]
},
{
begin: /(?<=show\sinterface\s[aA-zZ]+\s*\d+(\/\d+(\/\d+)?)?)/,
end: $COMMAND,
contains: [{
className: 'string',
variants: [{begin: /\bup\b/}, {begin: /Full-duplex|Half-duplex/i}, {begin: /(?<=type\sis).+(?=$)/}]
}, {
className: 'number',
variants: [{begin: /\d+.b\/s/}, {begin: /(?:.{4}\.){2}.{4}/}, {begin: /\b\d+\b/}]
}]
},
{
begin: /(?<=show\s(?:ip\s)?ssh)/,
end: $COMMAND,
contains: [{className: 'string', begin: /(?<=Session\sStarted).+(?=$)/}, {
className: 'number',
variants: [{begin: /\b\d+\.\d+\b/}, {begin: /\b\d+\b/}]
}]
},
{
begin: /(?<=show\sip\sdhcp\sbinding)/,
end: $COMMAND,
contains: [{className: 'number', begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}/}, {
className: 'string',
begin: /(?:.{4}\.){2}.{4}/
}]
},
{
begin: /(?<=show\sip\sdhcp\spool)/,
end: $COMMAND,
contains: [{className: 'number', begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}/}, {
className: 'string',
variants: [{begin: /\b\d+\b/}, {begin: /(?<=Pool).+(?=:)/}]
}]
},
{
begin: /(?<=show\smac\saddress-table)/,
end: $COMMAND,
contains: [{className: 'string', begin: /(?<=\s)[\w\/]+\d(?=\s*$)/}, {
className: 'number',
variants: [{begin: /(?:.{4}\.){2}.{4}/}, {begin: /\b\d+\b/}]
}]
},
{
begin: /(?<=show\sinterfaces\strunk)/,
end: $COMMAND,
contains: [{className: 'string', begin: /(?<=\s*)[aA-zZ]+\d+(\/\d+(?:\/\d+)?)?/}, {
className: 'keyword',
begin: /802\.1q/
}, {className: 'number', begin: /\b\d+\b/}]
},
{
begin: /(?<=show\sinterfaces\s[aA-zZ]+\s*\d+(\/\d+(\/\d+)?)?\sswitchport)/,
end: $COMMAND,
contains: [{
className: 'string',
begin: /(?<=(?:Name|Administrative\sMode|Operational\sMode|Access\sMode\sVLAN|Trunking\sNative\sMode\sVLAN):).+(?=$)/
}, {className: 'number', begin: /\b\d+\b/}]
},
{
begin: /(?<=show\sport-security)/,
end: $COMMAND,
contains: [{
className: 'string',
variants: [{begin: /(?<=^)\s+[\w\/]+(?=\s)/}, {begin: /(?<=\d)\s+\w+(?=$)/}]
}, {className: 'number', begin: /\b\d+\b/}]
},
{
begin: /(?<=show\sport-security\sinterface\s[aA-zZ]+\s*\d+(\/\d+(\/\d+)?)?)/,
end: $COMMAND,
contains: [{
className: 'string',
begin: /(?<=(?:Port\s(?:Security|Status)|Violation\sMode)\s+:).+(?=$)/
}, {className: 'number', variants: [{begin: /(?:.{4}\.){2}.{4}/}, {begin: /\b\d+\b/}]}]
},
{
begin: /(?<=show\sport-security\saddress)/,
end: $COMMAND,
contains: [{className: 'string', begin: /\b[aA-zZ]+\d\/\d(\/\d)?\b/}, {
className: 'number',
variants: [{begin: /(?:.{4}\.){2}.{4}/}, {begin: /\b\d+\b/}]
}]
},
{
begin: /(?<=show\sipv6\sinterface\sbrief)/,
end: $COMMAND,
contains: [{
className: 'keyword',
variants: [{begin: /(?<=).+(?=\[)/}, {begin: /up/}]
}, {className: 'string', begin: /unassigned|administratively\sdown|down/}, {
className: 'number',
begin: /(?![^\w:])(([0-9a-fA-F]{1,4}:){1,7}:|:(:[0-9a-fA-F]{1,4}){1,7}|([0-9a-fA-F]{1,4}:){1,7}[0-9a-fA-F]{0,4}(:[0-9a-fA-F]{1,4}){1,7})(?![\w:])/
}]
},
{
begin: /(?<=show\sip(v6)?\sroute(\s\w+)?)/,
end: $COMMAND,
contains: [{
className: 'keyword',
variants: [{begin: /^[aA-zZ]\s(?:[aA-zZ]+)?/}, {begin: /\s(\w|\*)(\d|(\w\w?|\w?))\s(?=-)/}]
}, {
className: 'number',
variants: [{begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/\d+)?/}, {begin: /(?![^\w:])(([0-9a-fA-F]{1,4}:){1,7}:|:(:[0-9a-fA-F]{1,4}){1,7}|([0-9a-fA-F]{1,4}:){1,7}[0-9a-fA-F]{0,4}(:[0-9a-fA-F]{1,4}){1,7})(?![\w:])(\/\d+)?/}]
}, {
className: 'string',
variants: [{begin: /\b([aA-zZ]+\d\/\d(\/\d)?)|(Null|\w{5,})\d+\b/}, {begin: /(?<=\[).+(?=])/}]
}]
},
{
begin: /(?<=show\sipv6\sprotocols)/,
end: $COMMAND,
contains: [{
className: 'string',
variants: [{begin: '"', end: '"'}, {begin: /\b(\w+\d\/\d(\/\d)?)|\w{4,}\d+\b/}]
}]
},
{
begin: /(?<=show\svtp\sstatus)/,
end: $COMMAND,
contains: [{className: 'keyword', begin: /Server|Client|Transparent/}, {
className: 'number',
variants: [{begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/\d+)?/}, {begin: /(?:[\daA-fF]{4}\.){2}[\daA-fF]{4}/}, {begin: /\s\d+\s/}]
}, {className: 'string', begin: /(?<=VTP\sDomain\sName\s+:).+(?=$)/}]
},
{
begin: /(?<=show\svtp\scounter)/,
end: $COMMAND,
contains: [{className: 'number', begin: /\s\d+\s/}]
},
{
begin: /(?<=show\svtp\spassword)/,
end: $COMMAND,
contains: [{className: 'string', begin: /(?<=Password:\s)\w+(?=\s)/}]
},
{
begin: /(?<=show\ssdm\sprefer)/,
end: $COMMAND,
contains: [{className: 'string', begin: /(?<=")\w+(?=")/}, {
className: 'number',
variants: [{begin: /\b[\d.]+K/}, {begin: /\b\d+\b/}]
}]
},
{
begin: /(?<=show\setherchannel\ssummary)/,
end: $COMMAND,
contains: [{className: 'comment', begin: /\(LACP\sonly\)/}, {
className: 'keyword',
variants: [{begin: /PAgP|LACP/}, {begin: /(?<=\s).\s(?=-)/}, {begin: /(?<=\().*?(?=\))/}]
}, {className: 'string', begin: /(?<=\s)[\w\/]*?(?=\()/}, {className: 'number', begin: /\s\d+\s/}]
},
{
begin: /(?<=show\sstandby)/,
end: $COMMAND,
contains: [{
className: 'number',
variants: [{begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/\d+)?/}, {begin: /(?:[\daA-fF]{4}\.){2}[\daA-fF]{4}/}]
}, {
className: 'string',
variants: [{begin: /(?<=State\sis\s).+(?=$)/}, {begin: /(?<=Group\sname\sis\s).+(?=\()/}]
}]
},
{
begin: /(?<=show\sstandby\sbrief)/,
end: $COMMAND,
contains: [{
className: 'number',
variants: [{begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/\d+)?/}, {begin: /\s\d+\s/}]
}, {className: 'string', begin: /[aA-zZ]{1,3}[\d\/]+/}]
},
{
begin: /(?<=show\sspanning-tree\svlan\s\d+)/,
end: $COMMAND,
contains: [{
className: 'keyword',
variants: [{begin: /^\s*[aA-zZ]{1,4}[\d\/]+\s/}]
}, {className: 'keyword', begin: /(?<=\.)\d+(?=\s)/}, {
className: 'number',
variants: [{begin: /(?:[\daA-fF]{4}\.){2}[\daA-fF]{4}/}, {begin: /(?<=\s)\d+(?=\.)/}, {begin: /\s\d+\s/}]
}]
},
{
begin: /(?<=show\sspanning-tree\sinterface\s.+\n)/,
end: $COMMAND,
contains: [{className: 'string', begin: /VLAN\d{4}/}, {
className: 'number',
variants: [{begin: /(?<=\s)\d+(?=\.)/}, {begin: /\s\d+\s/}]
}, {className: 'keyword', begin: /(?<=\.)\d+(?=\s)/}]
},
{
begin: /(?<=show\sip\sprotocols)/,
end: $COMMAND,
contains: [{
className: "string",
variants: [{begin: '"', end: '"'}, {begin: /K\d=1/}, {begin: /(?<=Redistributing:).+(?=,)/}]
}, {
className: 'number',
variants: [{begin: /\s\d+\s/}, {begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/\d+)?/}]
}]
},
{
begin: /(?<=show\sip\seigrp\stopology)/,
end: $COMMAND,
contains: [{className: 'string', begin: /(?<=via).+?(?=[(,])/}, {
className: 'keyword',
variants: [{begin: /(?<=\s).\s(?=-)/}, {begin: /^\w\s/}, {begin: /FD is \d+\s/}]
}, {className: 'number', variants: [{begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/\d+)?/}]}]
},
{
begin: /(?<=show\sip\sospf\sneighbors)/,
end: $COMMAND,
contains: [{className: 'string', begin: /\s[aA-zZ]+[\d\/]+\s/}, {
className: 'number',
begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/\d+)?/
}, {className: 'keyword', begin: /\s\w+\/\w+\s/}]
},
{
begin: /(?<=show\sip\sospf\sinterface)/,
end: $COMMAND,
contains: [{className: 'string', begin: /\s[aA-zZ]+[\d\/]+\s/}, {
className: 'keyword',
variants: [{begin: /\bup\b/}, {begin: /(?<=Network\sType|State).+(?<=,)/}]
}, {className: 'number', variants: [{begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/\d+)?/}]}] //{begin:/\s\d+\s/}
},
{
begin: /(?<=show\sip\sospf\sborder-routers)/,
end: $COMMAND,
contains: [{
className: 'keyword',
variants: [{begin: /(?<=\s).\s(?=-)/}, {begin: /^\w\s/}, {begin: /Area\s\d+/}]
}, {className: 'number', begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/\d+)?/}, {
className: 'string',
begin: /\b[aA-zZ]+[\d\/]+\b/
}]
},
{
begin: /(?<=show\sip\sospf\sdatabase)/,
end: $COMMAND,
contains: [{
className: 'keyword',
variants: [{begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/\d+)?/}, {begin: /Area\s\d+/}]
}, {className: 'string', begin: /0[xX][\daA-fF]+/}, {className: 'number', begin: /\s\d+\s/}]
},
{
begin: /(?<=show\sip\scache\sflow)/,
end: $COMMAND,
contains: [{
className: 'number',
variants: [{begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/\d+)?/}, {begin: /\b\d+(\.\d+)?\b/}]
}, {
className: 'keyword',
variants: [{begin: /\b[aA-zZ]+\d\/\d(\/\d)?(\.\d+)?\b/}, {begin: /NULL|Local/}]
}]
},
{
begin: /(?<=show\sip\sflow\sexport)/,
end: $COMMAND,
contains: [{className: 'number', begin: /\b\d+\b/}]
},
{
begin: /(?<=show\sip\sinterface\s[aA-zZ]+\s*[\d\/]+)/,
end: $COMMAND,
contains: [{
className: 'number',
variants: [{begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/\d+)?/}, {begin: /\s\d+\s/}]
}, {
className: 'string',
variants: [{begin: /(?<=is\s)(?:up|down)/}, {begin: '"', end: '"'}]
}, {className: 'keyword', begin: /MTU/}]
},
{
begin: /(?<=show\ssnmp\scommunity)/,
end: $COMMAND,
contains: [{className: 'string', begin: /(?<=:).+?(?=\s)/}]
},
{
begin: /(?<=show\ssnmp)/,
end: $COMMAND,
contains: [{className: 'number', begin: /\s\d+\s/}]
},
{
begin: /(?<=show\sip\sbgp\ssummary)/,
end: $COMMAND,
contains: [{className: 'keyword', begin: /(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/\d+)?/}, {
className: 'number',
begin: /\b\d+\b/
}]
},
{
begin: /(?<=show\saccess-lists)/,
end: $COMMAND,
contains: [{
className: 'string',
variants: [{begin: /any/}, {begin: /(?<=access\slist|eq).+(?=$)/}]
}, {className: 'number', variants: [{begin: $IP4}, {begin: /\b\d+\b/}]}, {
className: 'keyword',
begin: /(?<=(permit|deny)\s).+?(?=\s)/
}]
},
{
begin: /(Current configuration|Building configuration)/,
end: /^end\s/,
contains: [
{className: 'string', begin: /^ntp/, end: /$/, contains: [{className: 'number', begin: $IP4}]},
{
className: 'string',
begin: /^ip\sflow/,
end: /$/,
contains: [{className: 'number', variants: [{begin: $IP4}, {begin: /\b\d+\b/}]}]
},
{
className: 'string',
begin: /^logging/,
end: /$/,
contains: [{className: 'keyword', begin: /(?<=trap).+(?=$)/}, {className: 'number', begin: $IP4}]
},
{
className: 'string',
begin: /^spanning-tree/,
end: /$/,
contains: [{
className: 'keyword',
variants: [{begin: /(?<=mode|priority).+(?=$)/}, {begin: /(?<=vlan).+(?=priority)/}]
}]
},
{
className: 'string',
begin: /^ip\sdhcp\spool/,
end: /!/,
excludeEnd: true,
contains: [{className: 'keyword', begin: /(?<=pool).+(?=$)/}, {className: 'number', begin: $IP4}]
},
{
className: 'string',
begin: /^ip\sdhcp\sex/,
end: /$/,
contains: [{className: 'number', begin: $IP4}]
},
{
className: 'string',
begin: /^ip\snat/,
end: /$/,
contains: [{
className: 'keyword',
variants: [{begin: /(?<=list).+(?=pool|interface)/}, {begin: /(?<=interface).+(?=overload)/}, {begin: /(?<=pool\s).+?(?=\s)/}]
}, {className: 'number', begin: $IP4}]
},
{
className: 'string',
begin: /^access-list/,
end: /$/,
contains: [{className: 'number', variants: [{begin: $IP4}, {begin: /\b\d+\b/}]}]
},
{
className: 'string',
begin: /^enable/,
end: /$/,
contains: [{className: 'keyword', begin: /(?<=secret|password).+(?=$)/}]
},
{
className: 'string',
begin: /^banner\smotd/,
end: /$/,
contains: [{className: 'keyword', begin: /(?<=motd).+(?=$)/}]
},
{className: 'string', begin: /^ip\sroute/, end: /$/, contains: [{className: 'number', begin: $IP4}]},
{
className: 'string',
begin: /^ip\slocal\spool/,
end: /$/,
contains: [{className: 'number', begin: $IP4}, {
className: 'keyword',
begin: /(?<=pool\s).+?(?=\s)/
}]
},
{
className: 'string',
begin: /^line/,
end: /!/,
excludeEnd: true,
contains: [{
className: 'keyword',
variants: [{begin: /(?<=line|input|password).+(?<=$)/}]
}, {className: 'number', begin: /\b\d+\b/}]
},
{
className: 'string',
begin: /^ipv6\srouter/,
end: /$/,
contains: [{className: 'keyword', begin: /(?<=router).+(?<=$)/}]
},
{
className: 'string',
begin: /^ipv6\sdhcp/,
end: /!/,
excludeEnd: true,
contains: [{
className: 'number',
variants: [{begin: $IP6}, {begin: /\b\d+\b/}]
}, {className: 'keyword', begin: /(?<=(name|pool)).+(?<=$)/}]
},
{
className: 'string',
begin: /^ip\sdomain\sname/,
end: /$/,
contains: [{className: 'keyword', begin: /(?<=name).+(?=$)/}]
},
{
className: 'string',
begin: /^hostname/,
end: /$/,
contains: [{className: 'keyword', begin: /(?<=hostname).+(?=$)/}]
},
{
className: 'string',
begin: /^username/,
end: /$/,
contains: [{
className: 'keyword',
variants: [{begin: /(?<=username).+?(?=\s)/}, {begin: /(?<=secret|password).+(?=$)/}]
}, {className: 'number', begin: /\b\d+\b/}]
},
{
className: 'string',
begin: /^(?:interface|bba-group)/,
end: /!/,
excludeEnd: true,
contains: [{
className: 'keyword',
variants: [{begin: /(?<=interface|server|duplex|speed|group|pool|chap\s(?:hostname|password)|encapsulation|description|ip\snat|switchport\smode).+(?<=$)/}, {begin: /(?<=ipv6).+(?=enable)/}]
}, {
className: 'number',
variants: [{begin: /dhcp|negotiated/}, {begin: $MAC}, {begin: $IP4}, {begin: $IP6}, {begin: /\b\d+\b/}]
}]
},
{
className: 'string',
begin: /^router/,
end: /!/,
excludeEnd: true,
contains: [{
className: 'keyword',
begin: /(?<=router|passive-interface|default-information).+(?=$)/
}, {className: 'number', variants: [{begin: $IP4}, {begin: $IP6}, {begin: /\b\d+\b/}]}]
}
]
},
{
begin: /(?<=show\sppp\smultilink)/,
end: $COMMAND,
contains: [{className: 'keyword', begin: /^\s*\w+(?=,)/}, {
className: 'string',
variants: [{begin: /(?<=(?:name|discriminator)\sis).+(?=$)/}, {begin: /\b[aA-zZ]+\d+(\/\d+(\/\d+)?)?\b/}]
}, {className: 'number', variants: [{begin: /\b\d+x[\daA-fF]+/}, {begin: /\b\d+/}]}]
},
{
begin: /(?<=show\sip\slocal\spool)/,
end: $COMMAND,
contains: [{className: 'keyword', begin: /(?<=^)\s*(?!Pool)\w+?(?=\s)/}, {
className: 'number',
variants: [{begin: $IP4}, {begin: /\b\d+/}]
}]
},
{
begin: /(?<=show\spppoe\ssession)/,
end: $COMMAND,
contains: [{className: 'number', variants: [{begin: $MAC}, {begin: /\b\d+/}]}, {
className: 'string',
begin: /\b[aA-zZ\-]+\d+(\/\d+(\/\d+)?)?\b/
}]
},
{
begin: /(?<=show\sntp\sstatus)/,
end: $COMMAND,
contains: [{className: 'keyword', begin: $IP4}, {
className: 'number',
variants: [{begin: /\b\d+(\.\d+)?/}]
}]
},
{
begin: /(?<=show\sclock)/,
end: $COMMAND,
contains: [{className: 'string', begin: /\b[aA-zZ]+\b/}, {className: 'number', begin: /\b\d+/}]
},
{
begin: /(?<=show\sntp\sassociations)/,
end: $COMMAND,
contains: [{className: 'keyword', begin: $IP4}, {className: 'number', begin: /\b\d+(\.\d+)?/}]
},
{
begin: /(?<=show\scontrollers(?:\s*[aA-zZ\-]+\d+(?:\/\d+(?:\/\d+)?)?)?)/,
end: $COMMAND,
contains: [{
className: 'number',
variants: [{begin: /0([xX])[0-9a-fA-F]+/}, {begin: /\b[\da-fA-F]{4}\b/}, {begin: /\b\d+(\.\d+)?/}]
}]
},
{
begin: /(?<=show\sip\sdhcp\sserver\sstatistics)/,
end: $COMMAND,
contains: [{className: 'keyword', begin: /(?<=^\s*)(?!Message).+?(?=\d)/}, {
className: 'number',
begin: /\b\d+/
}]
},
{
begin: /(?<=show\slogging)/,
end: $COMMAND,
contains: [{className: 'number', begin: /\b\d+/}, {className: 'keyword', begin: /\b[aA-zZ]+\slogging:/}]
},
{
begin: /(?<=show\smonitor)/,
end: $COMMAND,
contains: [{className: 'keyword', begin: /session\s+\d+/}, {
className: 'string',
variants: [{begin: /\b[aA-zZ\-]+\d+(\/\d+(\/\d+)?)?\b/}, {begin: /(?<=Type\s+:).+(?=$)/}]
}]
},
/* Section of cisco command keywords, argument, etc. */
{
className: 'title',
begin: /^(([\w()\-]+[>#])|([>#]))/,
returnBegin: true,
end: /$/,
contains:
[
{
className: 'keyword',
begin: /[>#]/,
end: /$/,
excludeBegin: true,
contains:
[
{
className: 'number',
variants:
[
{
begin: $IP4
},
{
begin: $IP6
},
{
begin: $MAC
},
{
className: 'string',
begin: /\b[aA-zZ\-]+\s*\d\/\d(\/\d)?\b/,
},
{
begin: /\b\d+/
},
{
className: 'string',
begin: /(?<=ipv6\srip).+?(?=\s)/
},
{
begin: /(?<=version\s)\d+(?=$)/
},
{
className: 'string',
begin: /(?<=username\s+).+?(?=privilege|secret|password)/
},
{
className: 'string',
begin: /(?<=(access-group|traffic-filter)).+(?=in|out)/
},
{
className: 'string',
begin: /(?<=(secret|password|router|remark|passive-interface|eq|range|key-string|key\schain|#\s*name|description|hostname|standard|domain-name|dhcp\s(pool|server))\s+).*(?=$|\W)/
},
{
className: 'string',
begin: /(?<=access-class\s+).+(?=in)/
},
{
className: 'string',
begin: /(?<=ip(v6)?\saccess-list\s).+(?=$)/
},
{
className: 'string',
begin: /(?<=banner\smotd\s.).+(?=\s.\s)/
},
{
className: 'string',
begin: /(?<=source\slist\s).+(?=interface|pool)/
},
{
className: 'string',
begin: /(?<=digest-key).+(?=md5)/
},
{
className: 'string',
begin: /(?<=pool\s)[a-zA-Z\s]+(?=overload|\d)/
},
{
className: 'string',
begin: /(?<=peer\sdefault\sip\saddress\spool).+(?=$)/
},
{
className: 'string',
begin: /(?<=snmp-server\s(location|contact)).+(?=$)/
},
{
className: 'string',
begin: /(?<=snmp-server\scommunity).+(?=ro)/
},
{
className: 'string',
begin: /(?<=md5).+(?=$)/
},
{
className: 'string',
begin: /(?<=(permit|deny)\s).+?(?=\s)/
},
{
begin: /(prefix|clockrate|vty|privilege\slevel|maximum|vlan(\s(add|remove))?)\s/,
end: /$/,
excludeBegin: true
},
]
}
]
}
]
}
]
}
]
}
}
})();
hljs.registerLanguage('cisco-cli', $lang);
})();

View File

@ -0,0 +1,81 @@
(() => {
const $lang = (() => {
'use strict';
return ($lang) => {
const $COMMENT = $lang.COMMENT('%dnl');
const $HCM = $lang.HASH_COMMENT_MODE;
const $QSM = $lang.QUOTE_STRING_MODE;
const $TYPES = {
className: 'type',
begin: /^(Name|BuildRequires|BuildConflicts|Version|Release|Epoch|Summary|Group|License|Packager|Vendor|Icon|URL|Distribution|Prefix|Patch[0-9]*|Source[0-9]*|Requires\(?[a-z]*\)?|[a-zA-Z]+Req|Obsoletes|Recommends|Suggests|Supplements|Enhances|Provides|Conflicts|RemovePathPostfixes|Build[a-zA-Z]+|[a-zA-Z]+Arch|Auto[a-zA-Z]+)(:)/,
};
const $SECTIONS = {
className: 'keyword',
begin: /(%)(ifarch|ifnarch|ifos|ifnos|if|elifarch|elifos|elif|else|endif)/,
};
const $KEYWORDS = {
className: 'keyword',
begin: /(%)(ifarch|ifnarch|ifos|ifnos|if|elifarch|elifos|elif|else|endif)/,
};
return {
name: 'rpm-spec',
aliases: ['rpm', 'spec', 'rpm-spec', 'specfile'],
disableAutodetect: true,
contains: [
$COMMENT,
$HCM,
$QSM,
$TYPES,
$SECTIONS,
$KEYWORDS,
{
className: 'operator',
begin: /[>=<]/,
},
{
className: 'variable',
begin: /%\{_/,
end: /}/,
},
{
className: 'symbol',
begin: /%\{\?/,
end: /}/,
},
{
className: 'variable',
begin: /%\{/,
end: /}/,
},
{
className: 'variable',
begin: /%\${/,
end: /}/,
},
{
className: 'variable',
begin: /\${/,
end: /}/,
},
{
className: 'variable',
begin: /(\$[\w#@][\w_]+)/,
},
{
className: 'symbol',
begin: /%/,
end: /[ \t\n]/,
},
{
className: 'doctag',
begin: /^\* (Mon|Tue|Wed|Thu|Fri|Sat|Sun)/,
end: /$/,
},
]
}
}
})();
hljs.registerLanguage('rpm-spec', $lang);
})();

View File

@ -65,24 +65,24 @@ scripts:
- 'js/system.js'
code:
internal:
core:
- 'js/code/highlight.min.js'
modules:
- 'js/code/apache.min.js'
- 'js/code/autohotkey.min.js'
- 'js/code/autoit.min.js'
- 'js/code/awk.min.js'
- 'js/code/cmake.min.js'
- 'js/code/dns.min.js'
- 'js/code/dockerfile.min.js'
- 'js/code/dos.min.js'
- 'js/code/excel.min.js'
- 'js/code/http.min.js'
- 'js/code/nginx.min.js'
- 'js/code/pf.min.js'
- 'js/code/pgsql.min.js'
- 'js/code/powershell.min.js'
- 'js/code/properties.min.js'
- 'js/code/routeros.min.js'
- 'js/code/twig.min.js'
- 'js/code/vbscript.min.js'
- 'js/code/highlight.min.js'
- 'js/code/apache.min.js'
- 'js/code/autohotkey.min.js'
- 'js/code/autoit.min.js'
- 'js/code/awk.min.js'
- 'js/code/cmake.min.js'
- 'js/code/dns.min.js'
- 'js/code/dockerfile.min.js'
- 'js/code/dos.min.js'
- 'js/code/excel.min.js'
- 'js/code/http.min.js'
- 'js/code/nginx.min.js'
- 'js/code/pf.min.js'
- 'js/code/pgsql.min.js'
- 'js/code/powershell.min.js'
- 'js/code/properties.min.js'
- 'js/code/routeros.min.js'
- 'js/code/twig.min.js'
- 'js/code/vbscript.min.js'
- 'js/code/custom/cisco-cli.js'
- 'js/code/custom/rpm-spec.js'

View File

@ -20,17 +20,10 @@
<!--[ / vendor-internal ]-->
<!--[ code-internal ]-->
{{ with ($scripts.code.internal.core) }}
{{ with ($scripts.code.internal) }}
{{ $bundle := slice }}
{{ range . }}{{ $bundle = (($bundle) | append (resources.Get .)) }}{{ end }}
{{ $bundle = (($bundle) | resources.Concat "js/code.core.bundle.js") }}
{{ $bundle = (($bundle) | minify) }}
<script src="{{ ($bundle.RelPermalink) }}" crossorigin="anonymous" defer></script>
{{ end }}
{{ with ($scripts.code.internal.modules) }}
{{ $bundle := slice }}
{{ range . }}{{ $bundle = (($bundle) | append (resources.Get .)) }}{{ end }}
{{ $bundle = (($bundle) | resources.Concat "js/code.modules.bundle.js") }}
{{ $bundle = (($bundle) | resources.Concat "js/code.bundle.js") }}
{{ $bundle = (($bundle) | minify) }}
<script src="{{ ($bundle.RelPermalink) }}" crossorigin="anonymous" defer></script>
{{ end }}