Skip to content

Instantly share code, notes, and snippets.

@capezotte
Created February 14, 2022 16:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save capezotte/a4860d03ba8aec917fc0d0c41c5f588d to your computer and use it in GitHub Desktop.
Save capezotte/a4860d03ba8aec917fc0d0c41c5f588d to your computer and use it in GitHub Desktop.
Kate Syntax for JQ
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="jq" section="Scripts" extensions="*.jq" mimetype="" version="2" kateversion="5.0" author="oc1024" license="LGPL" indenter="python">
<highlighting>
<list name="builtins">
<item>not</item>
<item>length</item>
<item>utf8bytelength</item>
<item>keys</item>
<item>has</item>
<item>in</item>
<item>map</item>
<item>path</item>
<item>del</item>
<item>getpath</item>
<item>setpath</item>
<item>delpaths</item>
<item>to_entries</item>
<item>from_entries</item>
<item>with_entries</item>
<item>select</item>
<item>arrays</item>
<item>empty</item>
<item>error</item>
<item>halt</item>
<item>halt</item>
<item>paths</item>
<item>add</item>
<item>any</item>
<item>all</item>
<item>flatten</item>
<item>range</item>
<item>floor</item>
<item>sqrt</item>
<item>tonumber</item>
<item>tostring</item>
<item>type</item>
<item>infinite</item>
<item>sort</item>
<item>group</item>
<item>min</item>
<item>unique</item>
<item>reverse</item>
<item>contains</item>
<item>indices</item>
<item>index</item>
<item>inside</item>
<item>startswith</item>
<item>endswith</item>
<item>combinations</item>
<item>ltrimstr</item>
<item>rtrimstr</item>
<item>explode</item>
<item>implode</item>
<item>split</item>
<item>join</item>
<item>ascii_downcase</item>
<item>ascii_upcase</item>
<item>while</item>
<item>until</item>
<item>recurse</item>
<item>recurse_down</item>
<item>walk</item>
<item>transpose</item>
<item>bsearch</item>
<item>builtins</item>
<!-- Dates -->
<item>fromdateiso8601</item>
<item>todateiso8601</item>
<item>fromdate</item>
<item>todate</item>
<item>strptime</item>
<item>strftime</item>
<item>strflocaltime</item>
<item>mktime</item>
<item>gmtime</item>
<item>localtime</item>
<!-- SQL -->
<item>INDEX</item>
<item>JOIN</item>
<item>IN</item>
<!-- Regex -->
<item>test</item>
<item>match</item>
<item>capture</item>
<item>scan</item>
<item>split</item>
<item>splits</item>
<item>sub</item>
<item>gsub</item>
<!-- I/O -->
<item>input</item>
<item>inputs</item>
<item>debug</item>
<item>stderr</item>
<item>input_filename</item>
<item>input_line_number</item>
<!-- Stream -->
<item>truncate_stream</item>
<item>fromstream</item>
<item>tostream</item>
<!-- Extra -->
<item>isempty</item>
<item>first</item>
<item>last</item>
<item>nth</item>
<item>limit</item>
<!-- Math -->
<item>acos</item>
<item>acosh</item>
<item>asin</item>
<item>asinh</item>
<item>atan</item>
<item>atanh</item>
<item>cbrt</item>
<item>ceil</item>
<item>cos</item>
<item>cosh</item>
<item>erf</item>
<item>erfc</item>
<item>exp</item>
<item>exp10</item>
<item>exp2</item>
<item>expm1</item>
<item>fabs</item>
<item>floor</item>
<item>gamma</item>
<item>j0</item>
<item>j1</item>
<item>lgamma</item>
<item>log</item>
<item>log10</item>
<item>log1p</item>
<item>log2</item>
<item>logb</item>
<item>nearbyint</item>
<item>pow10</item>
<item>rint</item>
<item>round</item>
<item>significand</item>
<item>sin</item>
<item>sinh</item>
<item>sqrt</item>
<item>tan</item>
<item>tanh</item>
<item>tgamma</item>
<item>trunc</item>
<item>y0</item>
<item>y1</item>
<item>atan2</item>
<item>copysign</item>
<item>drem</item>
<item>fdim</item>
<item>fmax</item>
<item>fmin</item>
<item>fmod</item>
<item>frexp</item>
<item>hypot</item>
<item>jn</item>
<item>ldexp</item>
<item>modf</item>
<item>nextafter</item>
<item>nexttoward</item>
<item>pow</item>
<item>remainder</item>
<item>scalb</item>
<item>scalbln</item>
<item>yn</item>
<item>fma</item>
</list>
<list name="keywords">
<item>and</item>
<item>or</item>
<item>as</item>
<!-- def: inside context main to trigger context funcdef -->
</list>
<list name="builtvars">
<item>null</item>
<item>true</item>
<item>false</item>
</list>
<list name="cf">
<item>if</item>
<item>elif</item>
<item>then</item>
<item>else</item>
<item>end</item>
<item>reduce</item>
<item>foreach</item>
<item>try</item>
<item>catch</item>
<item>label</item>
</list>
<list name="strattr">
<item>@base64d</item>
<item>@base64</item>
<item>@csv</item>
<item>@html</item>
<item>@json</item>
<item>@netsoc</item>
<item>@sh</item>
<item>@text</item>
<item>@tsv</item>
<item>@uri</item>
</list>
<list name="library">
<item>import</item>
<item>include</item>
<item>module</item>
<item>modulemeta</item>
</list>
<contexts>
<context name="main" attribute="Normal Text" lineEndContext="#stay">
<IncludeRules context="common" />
<WordDetect String="def" attribute="Keyword" context="funcdef" />
<DetectChar char=";" endRegion="func"/>
</context>
<context name="common" attribute="Normal Text" lineEndContext="#stay">
<keyword String="cf" attribute="ControlFlow" />
<keyword String="builtins" attribute="BuiltIn" />
<keyword String="keywords" attribute="Keyword" />
<keyword String="builtvars" attribute="Variable" />
<keyword String="library" attribute="Import" />
<RegExpr String="@[a-z0-9]*" attribute="Attr" />
<WordDetect String="|" attribute="ControlFlow" />
<RegExpr String="\$[a-zA-Z_][a-zA-Z_0-9]*" attribute="Variable" />
<Float attribute="Float" />
<Int attribute="Int" />
<!-- prevent .[] and stuff from getting interpreted as functions/filters -->
<RegExpr String="\.[a-zA-Z_][a-zA-Z_0-9]*" attribute="Normal Text" />
<RegExpr String="(?&lt;!\.)[a-zA-Z_][a-zA-Z_0-9]*" attribute="Function" />
<DetectChar attribute="String" context="str" char='"'/>
<DetectChar attribute="Comment" context="comment" char='#'/>
<DetectChar char="(" beginRegion="loop" context="paren" />
</context>
<!-- Broadly same as main, but do not detect function end -->
<context name="paren" attribute="Normal Text" lineEndContext="#stay">
<IncludeRules context="common" />
<DetectChar char=")" endRegion="loop" context="#pop" />
<Float attribute="Float" />
<Int attribute="Int" />
</context>
<context name="funcdef" attribute="Function" lineEndContext="#stay" >
<AnyChar String="(),;" attribute="Normal Text" />
<!-- as $ shorthand -->
<RegExpr String="\$[a-zA-Z_][a-zA-Z_0-9]*" attribute="Variable" />
<DetectChar char=":" beginRegion="func" context="#pop"/>
</context>
<context name="str" attribute="String" lineEndContext="#stay">
<HlCStringChar attribute="Escape" />
<DetectChar attribute="String" context="#pop" char='"'/>
</context>
<context name="comment" attribute="Comment" lineEndContext="#pop">
<IncludeRules context="##Comments"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="BuiltIn" defStyleNum="dsBuiltIn" />
<itemData name="Keyword" defStyleNum="dsKeyword" />
<itemData name="Function" defStyleNum="dsFunction" />
<itemData name="ControlFlow" defStyleNum="dsControlFlow" />
<itemData name="Attr" defStyleNum="dsAttribute" />
<itemData name="Import" defStyleNum="dsImport" />
<itemData name="Variable" defStyleNum="dsVariable" />
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Escape" defStyleNum="dsSpecialChar"/>
<itemData name="Int" defStyleNum="dsDecVal" />
<itemData name="Float" defStyleNum="dsFloat" />
<itemData name="Comment" defStyleNum="dsComment" />
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="#" />
</comments>
</general>
</language>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment