Added support for Splunk SPL (#1962)

This adds support for Splunk SPL and corrects the position of the SQL in `components.json`.
This commit is contained in:
Michael Schmidt 2019-07-20 12:35:15 +02:00 committed by GitHub
parent e8811d2227
commit c93c066bce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 446 additions and 7 deletions

File diff suppressed because one or more lines are too long

View File

@ -832,15 +832,19 @@
"require": "markup-templating",
"owner": "Golmote"
},
"sql": {
"title": "SQL",
"owner": "multipetros"
},
"soy": {
"title": "Soy (Closure Template)",
"require": "markup-templating",
"owner": "Golmote"
},
"splunk-spl": {
"title": "Splunk SPL",
"owner": "RunDevelopment"
},
"sql": {
"title": "SQL",
"owner": "multipetros"
},
"stylus": {
"title": "Stylus",
"owner": "vkbansal"

View File

@ -0,0 +1,24 @@
Prism.languages['splunk-spl'] = {
'comment': /`comment\("(?:\\.|[^\\"])*"\)`/,
'string': {
pattern: /"(?:\\.|[^\\"])*"/,
greedy: true
},
// https://docs.splunk.com/Documentation/Splunk/7.3.0/SearchReference/ListOfSearchCommands
'keyword': /\b(?:abstract|accum|addcoltotals|addinfo|addtotals|analyzefields|anomalies|anomalousvalue|anomalydetection|append|appendcols|appendcsv|appendlookup|appendpipe|arules|associate|audit|autoregress|bin|bucket|bucketdir|chart|cluster|cofilter|collect|concurrency|contingency|convert|correlate|datamodel|dbinspect|dedup|delete|delta|diff|erex|eval|eventcount|eventstats|extract|fieldformat|fields|fieldsummary|filldown|fillnull|findtypes|folderize|foreach|format|from|gauge|gentimes|geom|geomfilter|geostats|head|highlight|history|iconify|input|inputcsv|inputlookup|iplocation|join|kmeans|kv|kvform|loadjob|localize|localop|lookup|makecontinuous|makemv|makeresults|map|mcollect|metadata|metasearch|meventcollect|mstats|multikv|multisearch|mvcombine|mvexpand|nomv|outlier|outputcsv|outputlookup|outputtext|overlap|pivot|predict|rangemap|rare|regex|relevancy|reltime|rename|replace|rest|return|reverse|rex|rtorder|run|savedsearch|script|scrub|search|searchtxn|selfjoin|sendemail|set|setfields|sichart|sirare|sistats|sitimechart|sitop|sort|spath|stats|strcat|streamstats|table|tags|tail|timechart|timewrap|top|transaction|transpose|trendline|tscollect|tstats|typeahead|typelearner|typer|union|uniq|untable|where|x11|xmlkv|xmlunescape|xpath|xyseries)\b/i,
'operator-word': {
pattern: /\b(?:and|as|by|not|or|xor)\b/i,
alias: 'operator'
},
'function': /\w+(?=\s*\()/,
'property': /\w+(?=\s*=(?!=))/,
'date': {
// MM/DD/YYYY(:HH:MM:SS)?
pattern: /\b\d{1,2}\/\d{1,2}\/\d{1,4}(?:(?::\d{1,2}){3})?\b/,
alias: 'number'
},
'number': /\b\d+(?:\.\d+)?\b/,
'boolean': /\b(?:f|false|t|true)\b/i,
'operator': /[<>=]=?|[-+*/%|]/,
'punctuation': /[()[\],]/
}

1
components/prism-splunk-spl.min.js vendored Normal file
View File

@ -0,0 +1 @@
Prism.languages["splunk-spl"]={comment:/`comment\("(?:\\.|[^\\"])*"\)`/,string:{pattern:/"(?:\\.|[^\\"])*"/,greedy:!0},keyword:/\b(?:abstract|accum|addcoltotals|addinfo|addtotals|analyzefields|anomalies|anomalousvalue|anomalydetection|append|appendcols|appendcsv|appendlookup|appendpipe|arules|associate|audit|autoregress|bin|bucket|bucketdir|chart|cluster|cofilter|collect|concurrency|contingency|convert|correlate|datamodel|dbinspect|dedup|delete|delta|diff|erex|eval|eventcount|eventstats|extract|fieldformat|fields|fieldsummary|filldown|fillnull|findtypes|folderize|foreach|format|from|gauge|gentimes|geom|geomfilter|geostats|head|highlight|history|iconify|input|inputcsv|inputlookup|iplocation|join|kmeans|kv|kvform|loadjob|localize|localop|lookup|makecontinuous|makemv|makeresults|map|mcollect|metadata|metasearch|meventcollect|mstats|multikv|multisearch|mvcombine|mvexpand|nomv|outlier|outputcsv|outputlookup|outputtext|overlap|pivot|predict|rangemap|rare|regex|relevancy|reltime|rename|replace|rest|return|reverse|rex|rtorder|run|savedsearch|script|scrub|search|searchtxn|selfjoin|sendemail|set|setfields|sichart|sirare|sistats|sitimechart|sitop|sort|spath|stats|strcat|streamstats|table|tags|tail|timechart|timewrap|top|transaction|transpose|trendline|tscollect|tstats|typeahead|typelearner|typer|union|uniq|untable|where|x11|xmlkv|xmlunescape|xpath|xyseries)\b/i,"operator-word":{pattern:/\b(?:and|as|by|not|or|xor)\b/i,alias:"operator"},function:/\w+(?=\s*\()/,property:/\w+(?=\s*=(?!=))/,date:{pattern:/\b\d{1,2}\/\d{1,2}\/\d{1,4}(?:(?::\d{1,2}){3})?\b/,alias:"number"},number:/\b\d+(?:\.\d+)?\b/,boolean:/\b(?:f|false|t|true)\b/i,operator:/[<>=]=?|[-+*/%|]/,punctuation:/[()[\],]/};

View File

@ -0,0 +1,7 @@
<h2>Full example</h2>
<pre><code>source=monthly_data.csv
| rename remote_ip AS ip
| eval isLocal=if(cidrmatch("123.132.32.0/25",ip), "local", "not local")
| eval error=case(status == 200, "OK", status == 404, "Not found", true(), "Other")
`comment("TODO: Add support for more status codes")`
| sort amount</code></pre>

View File

@ -117,8 +117,9 @@
"sass": "Sass (Sass)",
"scss": "Sass (Scss)",
"shell-session": "Shell session",
"sql": "SQL",
"soy": "Soy (Closure Template)",
"splunk-spl": "Splunk SPL",
"sql": "SQL",
"tap": "TAP",
"toml": "TOML",
"tt2": "Template Toolkit 2",

View File

@ -1 +1 @@
!function(){if("undefined"!=typeof self&&self.Prism&&self.document)if(Prism.plugins.toolbar){var i={html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",css:"CSS",clike:"C-like",js:"JavaScript",abap:"ABAP",abnf:"Augmented BackusNaur form",apacheconf:"Apache Configuration",apl:"APL",arff:"ARFF",asciidoc:"AsciiDoc",adoc:"AsciiDoc",asm6502:"6502 Assembly",aspnet:"ASP.NET (C#)",autohotkey:"AutoHotkey",autoit:"AutoIt",shell:"Bash",basic:"BASIC",bnf:"BackusNaur form",rbnf:"Routing BackusNaur form",csharp:"C#",cs:"C#",dotnet:"C#",cpp:"C++",cil:"CIL",coffee:"CoffeeScript",cmake:"CMake",csp:"Content-Security-Policy","css-extras":"CSS Extras",django:"Django/Jinja2",jinja2:"Django/Jinja2","dns-zone-file":"DNS zone file","dns-zone":"DNS zone file",dockerfile:"Docker",ebnf:"Extended BackusNaur form",ejs:"EJS",erb:"ERB",fsharp:"F#",gcode:"G-code",gedcom:"GEDCOM",glsl:"GLSL",gml:"GameMaker Language",gamemakerlanguage:"GameMaker Language",graphql:"GraphQL",hs:"Haskell",hcl:"HCL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam",inform7:"Inform 7",javadoc:"JavaDoc",javadoclike:"JavaDoc-like",javastacktrace:"Java stack trace",jq:"JQ",jsdoc:"JSDoc","js-extras":"JS Extras",json:"JSON",jsonp:"JSONP",json5:"JSON5",latex:"LaTeX",tex:"TeX",context:"ConTeXt",emacs:"Lisp",elisp:"Lisp","emacs-lisp":"Lisp",lolcode:"LOLCODE",md:"Markdown","markup-templating":"Markup templating",matlab:"MATLAB",mel:"MEL",n1ql:"N1QL",n4js:"N4JS",n4jsd:"N4JS","nand2tetris-hdl":"Nand To Tetris HDL",nasm:"NASM",nginx:"nginx",nsis:"NSIS",objectivec:"Objective-C",ocaml:"OCaml",opencl:"OpenCL",parigp:"PARI/GP",objectpascal:"Object Pascal",pcaxis:"PC-Axis",px:"PC-Axis",php:"PHP",phpdoc:"PHPDoc","php-extras":"PHP Extras",plsql:"PL/SQL",powershell:"PowerShell",properties:".properties",protobuf:"Protocol Buffers",py:"Python",q:"Q (kdb+ database)",jsx:"React JSX",tsx:"React TSX",renpy:"Ren'py",rest:"reST (reStructuredText)",rb:"Ruby",sas:"SAS",sass:"Sass (Sass)",scss:"Sass (Scss)","shell-session":"Shell session",sql:"SQL",soy:"Soy (Closure Template)",tap:"TAP",toml:"TOML",tt2:"Template Toolkit 2",ts:"TypeScript","t4-cs":"T4 Text Templates (C#)",t4:"T4 Text Templates (C#)","t4-vb":"T4 Text Templates (VB)","t4-templating":"T4 templating",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",vb:"Visual Basic",wasm:"WebAssembly",wiki:"Wiki markup",xeoracube:"XeoraCube",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML",yml:"YAML"};Prism.plugins.toolbar.registerButton("show-language",function(e){var a=e.element.parentNode;if(a&&/pre/i.test(a.nodeName)){var s,t=a.getAttribute("data-language")||i[e.language]||((s=e.language)?(s.substring(0,1).toUpperCase()+s.substring(1)).replace(/s(?=cript)/,"S"):s);if(t){var o=document.createElement("span");return o.textContent=t,o}}})}else console.warn("Show Languages plugin loaded before Toolbar plugin.")}();
!function(){if("undefined"!=typeof self&&self.Prism&&self.document)if(Prism.plugins.toolbar){var n={html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",css:"CSS",clike:"C-like",js:"JavaScript",abap:"ABAP",abnf:"Augmented BackusNaur form",apacheconf:"Apache Configuration",apl:"APL",arff:"ARFF",asciidoc:"AsciiDoc",adoc:"AsciiDoc",asm6502:"6502 Assembly",aspnet:"ASP.NET (C#)",autohotkey:"AutoHotkey",autoit:"AutoIt",shell:"Bash",basic:"BASIC",bnf:"BackusNaur form",rbnf:"Routing BackusNaur form",csharp:"C#",cs:"C#",dotnet:"C#",cpp:"C++",cil:"CIL",coffee:"CoffeeScript",cmake:"CMake",csp:"Content-Security-Policy","css-extras":"CSS Extras",django:"Django/Jinja2",jinja2:"Django/Jinja2","dns-zone-file":"DNS zone file","dns-zone":"DNS zone file",dockerfile:"Docker",ebnf:"Extended BackusNaur form",ejs:"EJS",erb:"ERB",fsharp:"F#",gcode:"G-code",gedcom:"GEDCOM",glsl:"GLSL",gml:"GameMaker Language",gamemakerlanguage:"GameMaker Language",graphql:"GraphQL",hs:"Haskell",hcl:"HCL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam",inform7:"Inform 7",javadoc:"JavaDoc",javadoclike:"JavaDoc-like",javastacktrace:"Java stack trace",jq:"JQ",jsdoc:"JSDoc","js-extras":"JS Extras",json:"JSON",jsonp:"JSONP",json5:"JSON5",latex:"LaTeX",tex:"TeX",context:"ConTeXt",emacs:"Lisp",elisp:"Lisp","emacs-lisp":"Lisp",lolcode:"LOLCODE",md:"Markdown","markup-templating":"Markup templating",matlab:"MATLAB",mel:"MEL",n1ql:"N1QL",n4js:"N4JS",n4jsd:"N4JS","nand2tetris-hdl":"Nand To Tetris HDL",nasm:"NASM",nginx:"nginx",nsis:"NSIS",objectivec:"Objective-C",ocaml:"OCaml",opencl:"OpenCL",parigp:"PARI/GP",objectpascal:"Object Pascal",pcaxis:"PC-Axis",px:"PC-Axis",php:"PHP",phpdoc:"PHPDoc","php-extras":"PHP Extras",plsql:"PL/SQL",powershell:"PowerShell",properties:".properties",protobuf:"Protocol Buffers",py:"Python",q:"Q (kdb+ database)",jsx:"React JSX",tsx:"React TSX",renpy:"Ren'py",rest:"reST (reStructuredText)",rb:"Ruby",sas:"SAS",sass:"Sass (Sass)",scss:"Sass (Scss)","shell-session":"Shell session",soy:"Soy (Closure Template)","splunk-spl":"Splunk SPL",sql:"SQL",tap:"TAP",toml:"TOML",tt2:"Template Toolkit 2",ts:"TypeScript","t4-cs":"T4 Text Templates (C#)",t4:"T4 Text Templates (C#)","t4-vb":"T4 Text Templates (VB)","t4-templating":"T4 templating",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",vb:"Visual Basic",wasm:"WebAssembly",wiki:"Wiki markup",xeoracube:"XeoraCube",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML",yml:"YAML"};Prism.plugins.toolbar.registerButton("show-language",function(e){var a=e.element.parentNode;if(a&&/pre/i.test(a.nodeName)){var s,t=a.getAttribute("data-language")||n[e.language]||((s=e.language)?(s.substring(0,1).toUpperCase()+s.substring(1)).replace(/s(?=cript)/,"S"):s);if(t){var o=document.createElement("span");return o.textContent=t,o}}})}else console.warn("Show Languages plugin loaded before Toolbar plugin.")}();

View File

@ -0,0 +1,16 @@
`comment("This is a comment")`
`comment("This is too
but on more than one line")`
`comment("| stats sum(b) BY index")`
----------------------------------------------------
[
["comment", "`comment(\"This is a comment\")`"],
["comment", "`comment(\"This is too\r\nbut on more than one line\")`"],
["comment", "`comment(\"| stats sum(b) BY index\")`"]
]
----------------------------------------------------
Checks for comments.

View File

@ -0,0 +1,13 @@
1/1/1970
12/31/1999:23:59:59
----------------------------------------------------
[
["date", "1/1/1970"],
["date", "12/31/1999:23:59:59"]
]
----------------------------------------------------
Checks for dates.

View File

@ -0,0 +1,303 @@
abstract
accum
addcoltotals
addinfo
addtotals
analyzefields
anomalies
anomalousvalue
anomalydetection
append
appendcols
appendcsv
appendlookup
appendpipe
arules
associate
audit
autoregress
bin
bucket
bucketdir
chart
cluster
cofilter
collect
concurrency
contingency
convert
correlate
datamodel
dbinspect
dedup
delete
delta
diff
erex
eval
eventcount
eventstats
extract
fieldformat
fields
fieldsummary
filldown
fillnull
findtypes
folderize
foreach
format
from
gauge
gentimes
geom
geomfilter
geostats
head
highlight
history
iconify
input
inputcsv
inputlookup
iplocation
join
kmeans
kv
kvform
loadjob
localize
localop
lookup
makecontinuous
makemv
makeresults
map
mcollect
metadata
metasearch
meventcollect
mstats
multikv
multisearch
mvcombine
mvexpand
nomv
outlier
outputcsv
outputlookup
outputtext
overlap
pivot
predict
rangemap
rare
regex
relevancy
reltime
rename
replace
rest
return
reverse
rex
rtorder
run
savedsearch
script
scrub
search
searchtxn
selfjoin
sendemail
set
setfields
sichart
sirare
sistats
sitimechart
sitop
sort
spath
stats
strcat
streamstats
table
tags
tail
timechart
timewrap
top
transaction
transpose
trendline
tscollect
tstats
typeahead
typelearner
typer
union
uniq
untable
where
x11
xmlkv
xmlunescape
xpath
xyseries
----------------------------------------------------
[
["keyword", "abstract"],
["keyword", "accum"],
["keyword", "addcoltotals"],
["keyword", "addinfo"],
["keyword", "addtotals"],
["keyword", "analyzefields"],
["keyword", "anomalies"],
["keyword", "anomalousvalue"],
["keyword", "anomalydetection"],
["keyword", "append"],
["keyword", "appendcols"],
["keyword", "appendcsv"],
["keyword", "appendlookup"],
["keyword", "appendpipe"],
["keyword", "arules"],
["keyword", "associate"],
["keyword", "audit"],
["keyword", "autoregress"],
["keyword", "bin"],
["keyword", "bucket"],
["keyword", "bucketdir"],
["keyword", "chart"],
["keyword", "cluster"],
["keyword", "cofilter"],
["keyword", "collect"],
["keyword", "concurrency"],
["keyword", "contingency"],
["keyword", "convert"],
["keyword", "correlate"],
["keyword", "datamodel"],
["keyword", "dbinspect"],
["keyword", "dedup"],
["keyword", "delete"],
["keyword", "delta"],
["keyword", "diff"],
["keyword", "erex"],
["keyword", "eval"],
["keyword", "eventcount"],
["keyword", "eventstats"],
["keyword", "extract"],
["keyword", "fieldformat"],
["keyword", "fields"],
["keyword", "fieldsummary"],
["keyword", "filldown"],
["keyword", "fillnull"],
["keyword", "findtypes"],
["keyword", "folderize"],
["keyword", "foreach"],
["keyword", "format"],
["keyword", "from"],
["keyword", "gauge"],
["keyword", "gentimes"],
["keyword", "geom"],
["keyword", "geomfilter"],
["keyword", "geostats"],
["keyword", "head"],
["keyword", "highlight"],
["keyword", "history"],
["keyword", "iconify"],
["keyword", "input"],
["keyword", "inputcsv"],
["keyword", "inputlookup"],
["keyword", "iplocation"],
["keyword", "join"],
["keyword", "kmeans"],
["keyword", "kv"],
["keyword", "kvform"],
["keyword", "loadjob"],
["keyword", "localize"],
["keyword", "localop"],
["keyword", "lookup"],
["keyword", "makecontinuous"],
["keyword", "makemv"],
["keyword", "makeresults"],
["keyword", "map"],
["keyword", "mcollect"],
["keyword", "metadata"],
["keyword", "metasearch"],
["keyword", "meventcollect"],
["keyword", "mstats"],
["keyword", "multikv"],
["keyword", "multisearch"],
["keyword", "mvcombine"],
["keyword", "mvexpand"],
["keyword", "nomv"],
["keyword", "outlier"],
["keyword", "outputcsv"],
["keyword", "outputlookup"],
["keyword", "outputtext"],
["keyword", "overlap"],
["keyword", "pivot"],
["keyword", "predict"],
["keyword", "rangemap"],
["keyword", "rare"],
["keyword", "regex"],
["keyword", "relevancy"],
["keyword", "reltime"],
["keyword", "rename"],
["keyword", "replace"],
["keyword", "rest"],
["keyword", "return"],
["keyword", "reverse"],
["keyword", "rex"],
["keyword", "rtorder"],
["keyword", "run"],
["keyword", "savedsearch"],
["keyword", "script"],
["keyword", "scrub"],
["keyword", "search"],
["keyword", "searchtxn"],
["keyword", "selfjoin"],
["keyword", "sendemail"],
["keyword", "set"],
["keyword", "setfields"],
["keyword", "sichart"],
["keyword", "sirare"],
["keyword", "sistats"],
["keyword", "sitimechart"],
["keyword", "sitop"],
["keyword", "sort"],
["keyword", "spath"],
["keyword", "stats"],
["keyword", "strcat"],
["keyword", "streamstats"],
["keyword", "table"],
["keyword", "tags"],
["keyword", "tail"],
["keyword", "timechart"],
["keyword", "timewrap"],
["keyword", "top"],
["keyword", "transaction"],
["keyword", "transpose"],
["keyword", "trendline"],
["keyword", "tscollect"],
["keyword", "tstats"],
["keyword", "typeahead"],
["keyword", "typelearner"],
["keyword", "typer"],
["keyword", "union"],
["keyword", "uniq"],
["keyword", "untable"],
["keyword", "where"],
["keyword", "x11"],
["keyword", "xmlkv"],
["keyword", "xmlunescape"],
["keyword", "xpath"],
["keyword", "xyseries"]
]
----------------------------------------------------
Checks for keywords.

View File

@ -0,0 +1,13 @@
123
123.456
----------------------------------------------------
[
["number", "123"],
["number", "123.456"]
]
----------------------------------------------------
Checks for numbers.

View File

@ -0,0 +1,44 @@
=
== >= <= > <
+ - * / %
|
and not or xor AND NOT OR XOR
as by AS BY
----------------------------------------------------
[
["operator", "="],
["operator", "=="],
["operator", ">="],
["operator", "<="],
["operator", ">"],
["operator", "<"],
["operator", "+"],
["operator", "-"],
["operator", "*"],
["operator", "/"],
["operator", "%"],
["operator", "|"],
["operator-word", "and"],
["operator-word", "not"],
["operator-word", "or"],
["operator-word", "xor"],
["operator-word", "AND"],
["operator-word", "NOT"],
["operator-word", "OR"],
["operator-word", "XOR"],
["operator-word", "as"],
["operator-word", "by"],
["operator-word", "AS"],
["operator-word", "BY"]
]
----------------------------------------------------
Checks for operators.

View File

@ -0,0 +1,13 @@
"foo"
"\"foo\""
----------------------------------------------------
[
["string", "\"foo\""],
["string", "\"\\\"foo\\\"\""]
]
----------------------------------------------------
Checks for strings.