2021-03-10 11:35:00 -05:00
hljs . registerLanguage ( "kotlin" , ( ( ) => { "use strict"
; var e = "\\.([0-9](_*[0-9])*)" , n = "[0-9a-fA-F](_*[0-9a-fA-F])*" , a = {
className : "number" , variants : [ {
begin : ` ( \\ b([0-9](_*[0-9])*)(( ${ e } )| \\ .)?|( ${ e } ))[eE][+-]?([0-9](_*[0-9])*)[fFdD]? \\ b `
} , { begin : ` \\ b([0-9](_*[0-9])*)(( ${ e } )[fFdD]? \\ b| \\ .([fFdD] \\ b)?) ` } , {
begin : ` ( ${ e } )[fFdD]? \\ b ` } , { begin : "\\b([0-9](_*[0-9])*)[fFdD]\\b" } , {
begin : ` \\ b0[xX](( ${ n } ) \\ .?|( ${ n } )? \\ .( ${ n } ))[pP][+-]?([0-9](_*[0-9])*)[fFdD]? \\ b `
} , { begin : "\\b(0|[1-9](_*[0-9])*)[lL]?\\b" } , { begin : ` \\ b0[xX]( ${ n } )[lL]? \\ b ` } , {
begin : "\\b0(_*[0-7])*[lL]?\\b" } , { begin : "\\b0[bB][01](_*[01])*[lL]?\\b" } ] ,
relevance : 0 } ; return e => { const n = {
keyword : "abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual" ,
built _in : "Byte Short Char Int Long Boolean Float Double Void Unit Nothing" ,
literal : "true false null" } , i = { className : "symbol" , begin : e . UNDERSCORE _IDENT _RE + "@"
} , s = { className : "subst" , begin : /\$\{/ , end : /\}/ , contains : [ e . C _NUMBER _MODE ] } , t = {
className : "variable" , begin : "\\$" + e . UNDERSCORE _IDENT _RE } , r = { className : "string" ,
variants : [ { begin : '"""' , end : '"""(?=[^"])' , contains : [ t , s ] } , { begin : "'" , end : "'" ,
illegal : /\n/ , contains : [ e . BACKSLASH _ESCAPE ] } , { begin : '"' , end : '"' , illegal : /\n/ ,
contains : [ e . BACKSLASH _ESCAPE , t , s ] } ] } ; s . contains . push ( r ) ; const l = {
className : "meta" ,
begin : "@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*" + e . UNDERSCORE _IDENT _RE + ")?"
} , c = { className : "meta" , begin : "@" + e . UNDERSCORE _IDENT _RE , contains : [ { begin : /\(/ ,
end : /\)/ , contains : [ e . inherit ( r , { className : "meta-string" } ) ] } ]
} , o = a , b = e . COMMENT ( "/\\*" , "\\*/" , { contains : [ e . C _BLOCK _COMMENT _MODE ] } ) , E = {
variants : [ { className : "type" , begin : e . UNDERSCORE _IDENT _RE } , { begin : /\(/ , end : /\)/ ,
contains : [ ] } ] } , d = E ; return d . variants [ 1 ] . contains = [ E ] , E . variants [ 1 ] . contains = [ d ] ,
2021-11-12 19:45:02 -05:00
{ name : "Kotlin" , aliases : [ "kt" , "kts" ] , keywords : n ,
contains : [ e . COMMENT ( "/\\*\\*" , "\\*/" , { relevance : 0 , contains : [ { className : "doctag" ,
begin : "@[A-Za-z]+" } ] } ) , e . C _LINE _COMMENT _MODE , b , { className : "keyword" ,
2021-03-10 11:35:00 -05:00
begin : /\b(break|continue|return|this)\b/ , starts : { contains : [ { className : "symbol" ,
begin : /@\w+/ } ] } } , i , l , c , { className : "function" , beginKeywords : "fun" , end : "[(]|$" ,
returnBegin : ! 0 , excludeEnd : ! 0 , keywords : n , relevance : 5 , contains : [ {
begin : e . UNDERSCORE _IDENT _RE + "\\s*\\(" , returnBegin : ! 0 , relevance : 0 ,
contains : [ e . UNDERSCORE _TITLE _MODE ] } , { className : "type" , begin : /</ , end : />/ ,
keywords : "reified" , relevance : 0 } , { className : "params" , begin : /\(/ , end : /\)/ ,
endsParent : ! 0 , keywords : n , relevance : 0 , contains : [ { begin : /:/ , end : /[=,\/]/ ,
endsWithParent : ! 0 , contains : [ E , e . C _LINE _COMMENT _MODE , b ] , relevance : 0
} , e . C _LINE _COMMENT _MODE , b , l , c , r , e . C _NUMBER _MODE ] } , b ] } , { className : "class" ,
beginKeywords : "class interface trait" , end : /[:\{(]|$/ , excludeEnd : ! 0 ,
illegal : "extends implements" , contains : [ {
beginKeywords : "public protected internal private constructor"
} , e . UNDERSCORE _TITLE _MODE , { className : "type" , begin : /</ , end : />/ , excludeBegin : ! 0 ,
excludeEnd : ! 0 , relevance : 0 } , { className : "type" , begin : /[,:]\s*/ , end : /[<\(,]|$/ ,
excludeBegin : ! 0 , returnEnd : ! 0 } , l , c ] } , r , { className : "meta" , begin : "^#!/usr/bin/env" ,
end : "$" , illegal : "\n" } , o ] } } } ) ( ) ) ;