%% This is part of the OpTeX project, see http://petr.olsak.net/optex %% Author: Vojtěch Hořánek, \_codedecl \_hisyntaxkt {Syntax highlighting for Kotlin sources <2024-05-18>} \_newtoks \_hisyntaxkt \_newtoks \_hicolorskt \_global\_hicolorskt={ % colors for Kotlin language \_hicolor C \Grey % Comments \_hicolor D \Green % Documentation comments \_hicolor W \Yellow % Warnings \_hicolor S \Green % Strings \_hicolor K \Blue % Keywords \_hicolor F \Blue % Std. functions \_hicolor A \Yellow % Annotations \_hicolor N \Cyan % Numbers \_hicolor T \Brown % Templates \_hicolor I \Grey % Imports \_hicolor O \Magenta % Others } \_global\_hisyntaxkt={% \_the\_hicolorskt \_let\c=\_relax \_let\e=\_relax \_let\o=\_relax % comments \_replthis {FIXME} {\z W{FIXME}}% FIXME in comment \_replthis {TODO} {\z W{TODO}}% TODO in comment \_replfromto {/**}{*/} {\x D{/**#1*/}}% /**...*/ documentation \_replfromto {/*}{*/} {\x C{/*#1*/}}% /*...*/ multi-line \_replfromto {//}{^^J} {\z C{//#1}^^J}% //... single-line % strings \_replfromto {\_csstring\$\_csstring\{}{\_csstring\}}% string template expression ${tmp} {\z T{\_csstring\$\_csstring\{#1\_csstring\}}}% \_replfromto {\_csstring\$}{\n} {\x T{\_csstring\$#1}}% string template $tmp \_replthis {\_string\"} {{\_string\"}}% \" string escape \_replfromto {"}{"} {\x S{"#1"}}% "..." string % characters \_replthis {\_string\'} {{\_string\'}}% \' char escape \_replfromto {'}{'} {\x S{'#1'}}% '.' character % others \_replfromto {\n@}{\n} {\z A{@#1}}% annotations \_replfromto {package}{^^J} {\z K{package}\z I{#1}^^J}% package... \_replfromto {import}{^^J} {\z K{import}\z I{#1}^^J}% import... \_replfromto {return@}{\n} {\z K{return}\z O{@#1}}% return@... \_replfromto {continue@}{\n} {\z K{continue}\z O{@#1}}% continue@... \_replfromto {break@}{\n} {\z K{break}\z O{@#1}}% break@... % Special characters \_replthis{;}{\z C{;}} % semi-collon \_replthis{?:}{\n\o?:\n} % elvis operator \_edef\_tmpa {()\_string{\_string}+-*/=[]<>,:\_pcent\_string&|!}% non-letters \_ea \_foreach \_tmpa \_do {\_replthis{#1}{\n\o#1\n}} % \_foreach % keywords {as}{as?}{break}{class}{continue}{do}{else}{false}{for}{fun}% {if}{in}{!in}{interface}{is}{!is}{null}{object}{package}% {return}{super}{this}{throw}{true}{try}{typealias}{typeof}% {val}{var}{when}{while}{by}{catch}{constructor}{dynamic}% {finally}{get}{import}{init}{set}{value}{class}{where}% {abstract}{actual}{annotation}{companion}{const}{crossinline}% {data}{enum}{expect}{external}{final}{infix}{inline}{inner}% {internal}{lateinit}{noinline}{open}{operator}{out}{override}% {private}{protected}{public}{reified}{sealed}{suspend}{tailrec}% {vararg}{it}{equals}{compareTo}{get()}{get}{set}{set(value)}% \_do {\_replthis{\n#1\n}{\z K{#1}}} % \_foreach % standard library extension functions {all}{also}{any}{apply}{asIterable}{asSequence}{associate}% {associateBy}{associateByTo}{associateTo}{associateWith}% {associateWithTo}{average}{chunked}{contains}{count}{distinct}% {distinctBy}{drop}{dropLast}{dropLastWhile}{dropWhile}{elementAt}% {elementAtOrElse}{elementAtOrNull}{filter}{filterIndexed}% {filterIndexedTo}{filterIsInstance}{filterIsInstanceTo}{filterNot}% {filterNotNull}{filterNotNullTo}{filterNotTo}{filterTo}{find}% {findLast}{first}{firstNotNullOf}{firstNotNullOfOrNull}% {firstOrNull}{flatMap}{flatMapIndexed}{flatMapIndexedTo}% {flatMapTo}{fold}{foldIndexed}{foldRight}{foldRightIndexed}% {forEach}{forEachIndexed}{getOrElse}{getOrNull}{groupBy}% {groupByTo}{groupingBy}{indexOf}{indexOfFirst}{indexOfLast}% {intersect}{iterator}{joinTo}{joinToString}{last}{lastIndexOf}% {lastOrNull}{let}{map}{mapIndexed}{mapIndexedNotNull}% {mapIndexedNotNullTo}{mapIndexedTo}{mapNotNull}{mapNotNullTo}% {mapTo}{max}{maxBy}{maxByOrNull}{maxOf}{maxOfOrNull}{maxOfWith}% {maxOfWithOrNull}{maxOrNull}{maxWith}{maxWithOrNull}{min}{minBy}% {minByOrNull}{minOf}{minOfOrNull}{minOfWith}{minOfWithOrNull}% {minOrNull}{minus}{minusElement}{minWith}{minWithOrNull}{none}% {onEach}{onEachIndexed}{partition}{plus}{plusElement}{random}% {randomOrNull}{reduce}{reduceIndexed}{reduceIndexedOrNull}% {reduceOrNull}{reduceRight}{reduceRightIndexed}% {reduceRightIndexedOrNull}{reduceRightOrNull}{repeat}% {requireNoNulls}{reverse}{reversed}{runningFold}% {runningFoldIndexed}{runningReduce}{runningReduceIndexed}{scan}% {scanIndexed}{shuffle}{single}{singleOrNull}{slice}{sortBy}% {sortByDescending}{sortDescending}{sorted}{sortedBy}% {sortedByDescending}{sortedDescending}{sortedWith}{subtract}{sum}% {sumBy}{sumByDouble}{sumOf}{take}{takeIf}{takeLast}% {takeLastWhile}{takeUnless}{takeWhile}{toBooleanArray}% {toByteArray}{toCharArray}{toCollection}{toDoubleArray}% {toFloatArray}{toHashSet}{toIntArray}{toList}{toLongArray}% {toMutableList}{toMutableSet}{toSet}{toShortArray}{union}% {windowed}{withIndex}{zip}{zipWithNext}{contract}% \_do {\_replthis{.#1\n}{.\z F{#1}}% \_replthis{\n#1\n}{\z F{#1}}}% invoke operators ( and { begin with \n % \_replthis{.}{\n.\n} % numbers \_foreach 0123456789 \_do {\_replfromto{\n#1}{\n}{\c#1##1\e}} \_replthis{\e.\c}{.} \_replthis{\e.\n}{.\e} \_replthis{\n.\c}{\c.} \_replthis{e\e\o+\c}{e+}\_replthis{e\e\o-\c}{e-} \_replthis{E\e\o+\c}{E+}\_replthis{E\e\o-\c}{E-} \_def\c#1\e{\z N{#1}} \_def\o#1{\z O{#1}} % others } \_endcode %------------------------------------------------ \endinput 2024-05-18: First version