package Ġorg . jetbrains . dok ka Ċ Ċ import Ġcom . google . inject . Inject Ċ import Ġcom . google . inject . name . Named Ċ import Ġorg . jetbrains . dok ka . Utilities . imp lied Platforms Name Ċ import Ġorg . jetbrains . kotlin . utils . addTo Std lib . if NotEmpty ĊĊ Ċ open Ġclass ĠKotlin Website Output Builder ( to : ĠStringBuilder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation : ĠLocation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Service : ĠLocation Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Service : ĠLanguage Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextension : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplied Platforms : ĠList < String >) ĊĠĠĠ Ġ: ĠJekyll Output Builder ( to , Ġlocation , Ġlocation Service , Ġlanguage Service , Ġextension , Ġimplied Platforms ) Ċ { ĊĠĠĠ Ġprivate Ġvar Ġneed Hard Line Break s Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġinside Div Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġappend Front Mat ter ( nodes : ĠIterable < Documentation Node >, Ġto : ĠStringBuilder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . append Front Mat ter ( nodes , Ġto ) ĊĠĠĠĠĠĠĠ Ġto . append ln (" layout : Ġapi ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend Breadcrumb s ( path : ĠIterable < Format Link >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( path . count () Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto . append ("< div Ġclass =' api - docs - breadcrumbs '> ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . append Breadcrumb s ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto . append ("</ div >") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend Code ( body : Ġ() Ġ-> ĠUnit ) Ġ= Ġwrap If NotEmpty ("< code >", Ġ"</ code >", Ġbody ) ĊĊĠĠĠ Ġoverride Ġfun Ġappend Stri ke through ( body : Ġ() Ġ-> ĠUnit ) Ġ= Ġwrap In Tag (" s ", Ġbody ) ĊĊĠĠĠ Ġprotected Ġfun Ġdiv ( to : ĠStringBuilder , Ġcss Class : ĠString , Ġother Attributes : ĠString Ġ= Ġ"", Ġmarkdown : ĠBoolean Ġ= Ġfalse , Ġblock : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġto . append ("< div Ġclass =\" $ css Class \" $ other Attributes ") ĊĠĠĠĠĠĠĠ Ġif Ġ( markdown ) Ġto . append (" Ġmarkdown =\" 1 \" ") ĊĠĠĠĠĠĠĠ Ġto . append ("> ") ĊĠĠĠĠĠĠĠ Ġif Ġ(! markdown ) Ġinside Div ++ ĊĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠ Ġif Ġ(! markdown ) Ġinside Div -- ĊĠĠĠĠĠĠĠ Ġto . append ("</ div >\ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend As Signature ( node : ĠContent Node , Ġblock : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Length Ġ= Ġnode . text Length ĊĠĠĠĠĠĠĠ Ġif Ġ( content Length Ġ== Ġ 0 ) Ġreturn ĊĠĠĠĠĠĠĠ Ġdiv ( to , Ġ" signature ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġneed Hard Line Break s Ġ= Ġcontent Length Ġ>= Ġ 6 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneed Hard Line Break s Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend As Over load Group ( to : ĠStringBuilder , Ġplatforms : ĠSet < String >, Ġblock : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdiv ( to , Ġ" overload - group ", Ġcalculate Data Attributes ( platforms ), Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġensure Paragraph () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġensure Paragraph () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend Link ( href : ĠString , Ġbody : Ġ() Ġ-> ĠUnit ) Ġ= Ġwrap ("< a Ġhref =\" $ href \"> ", Ġ"</ a >", Ġbody ) ĊĊĠĠĠ Ġoverride Ġfun Ġappend Header ( level : ĠInt , Ġbody : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( inside Div Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrap In Tag (" p ", Ġbody , Ġnewline After Close Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . append Header ( level , Ġbody ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend Line () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( inside Div Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto . append ln ("< br /> ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . append Line () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend Table ( var arg Ġcolumns : ĠString , Ġbody : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġto . append ln ("< table Ġclass =\" api - docs - table \"> ") ĊĠĠĠĠĠĠĠ Ġbody () ĊĠĠĠĠĠĠĠ Ġto . append ln ("</ table >") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend Table Body ( body : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġto . append ln ("< tbody >") ĊĠĠĠĠĠĠĠ Ġbody () ĊĠĠĠĠĠĠĠ Ġto . append ln ("</ tbody >") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend TableRow ( body : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġto . append ln ("< tr >") ĊĠĠĠĠĠĠĠ Ġbody () ĊĠĠĠĠĠĠĠ Ġto . append ln ("</ tr >") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend TableCell ( body : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġto . append ln ("< td Ġmarkdown =\" 1 \"> ") ĊĠĠĠĠĠĠĠ Ġbody () ĊĠĠĠĠĠĠĠ Ġto . append ln ("\ n </ td >") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend Block Code ( language : ĠString , Ġbody : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( language . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . append Block Code ( language , Ġbody ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrap ("< pre Ġmarkdown =\" 1 \"> ", Ġ"</ pre >", Ġbody ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend Symbol ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġto . append ("< span Ġclass =\" symbol \"> ${ text . html Escape () }</ span >") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend Keyword ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġto . append ("< span Ġclass =\" keyword \"> ${ text . html Escape () }</ span >") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend Identifier ( text : ĠString , Ġkind : ĠIdentifier Kind , Ġsignature : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġsignature ?. let Ġ{ Ġ" Ġid =\" $ it \"" Ġ}. or Empty () ĊĠĠĠĠĠĠĠ Ġto . append ("< span Ġclass =\" ${ identifier ClassName ( kind )} \" $ id >${ text . html Escape () }</ span >") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend Soft Line Break () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( need Hard Line Break s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto . append ("< br /> ") ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġappend Indent ed Soft Line Break () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( need Hard Line Break s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto . append ("< br /> & nbsp ;& nbsp ;& nbsp ;& nbsp ; ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġidentifier ClassName ( kind : ĠIdentifier Kind ) Ġ= Ġwhen ( kind ) Ġ{ ĊĠĠĠĠĠĠĠ ĠIdentifier Kind . ParameterName Ġ-> Ġ" parameter Name " ĊĠĠĠĠĠĠĠ ĠIdentifier Kind . Sum mar ized TypeName Ġ-> Ġ" sum mar ized TypeName " ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" identifier " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcalculate Data Attributes ( platforms : ĠSet < String >): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠString . is Kotlin Version () Ġ= Ġthis . startsWith (" Kotlin ") ĊĠĠĠĠĠĠĠ Ġfun ĠString . is J RE Version () Ġ= Ġthis . startsWith (" J RE ") ĊĠĠĠĠĠĠĠ Ġval Ġkotlin Version Ġ= Ġplatforms . single OrNull ( String :: is Kotlin Version ) ĊĠĠĠĠĠĠĠ Ġval Ġj re Version Ġ= Ġplatforms . single OrNull ( String :: is J RE Version ) ĊĠĠĠĠĠĠĠ Ġval Ġtarget Platforms Ġ= Ġplatforms . filter Not Ġ{ Ġit . is Kotlin Version () Ġ|| Ġit . is J RE Version () Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġkotlin Version Attr Ġ= Ġkotlin Version ?. let Ġ{ Ġ" Ġdata - kotlin - version =\" $ it \"" Ġ} Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġj re Version Attr Ġ= Ġj re Version ?. let Ġ{ Ġ" Ġdata - jre - version =\" $ it \"" Ġ} Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġplatforms Attr Ġ= Ġtarget Platforms . if NotEmpty Ġ{ Ġ" Ġdata - platform =\" ${ target Platforms . join ToString () }\ "" Ġ} Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ platforms Attr $ kotlin Version Attr $ jre Version Attr " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend Index Row ( platforms : ĠSet < String >, Ġblock : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( platforms . isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrap ("< tr ${ calculate Data Attributes ( platforms )} >", Ġ"</ tr >", Ġblock ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend TableRow ( block ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend Platforms ( platforms : ĠSet < String >) Ġ{ ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠKotlin Website Format Service Ġ@ Inject Ġconstructor ( location Service : ĠLocation Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignature Generator : ĠLanguage Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Named ( imp lied Platforms Name ) Ġimplied Platforms : ĠList < String >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger : ĠD ok ka Logger ) ĊĠĠĠ Ġ: ĠJekyll Format Service ( location Service , Ġsignature Generator , Ġ" html ", Ġimplied Platforms ) Ċ { ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . warn (" Format Ġkotlin - website Ġdeprecated Ġand Ġwill Ġbe Ġremoved Ġin Ġnext Ġrelease ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Output Builder ( to : ĠStringBuilder , Ġlocation : ĠLocation ) Ġ= ĊĠĠĠĠĠĠĠ ĠKotlin Website Output Builder ( to , Ġlocation , Ġlocation Service , Ġlanguage Service , Ġextension , Ġimplied Platforms ) Ċ } ĊĊ Ċ class ĠKotlin Website Runnable Samples Output Builder ( to : ĠStringBuilder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation : ĠLocation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Service : ĠLocation Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Service : ĠLanguage Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextension : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplied Platforms : ĠList < String >) ĊĠĠĠ Ġ: ĠKotlin Website Output Builder ( to , Ġlocation , Ġlocation Service , Ġlanguage Service , Ġextension , Ġimplied Platforms ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġappend Sample Block Code ( language : ĠString , Ġimports : Ġ() Ġ-> ĠUnit , Ġbody : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdiv ( to , Ġ" sample ", Ġmarkdown Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend Block Code ( language ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimports () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrap ("\ n \ n fun Ġmain ( args : ĠArray < String >) Ġ{ ", Ġ" }") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrap ("\ n // sample Start \ n ", Ġ"\ n // sample End \ n ", Ġbody ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠKotlin Website Runnable Samples Format Service Ġ@ Inject Ġconstructor ( location Service : ĠLocation Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignature Generator : ĠLanguage Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Named ( imp lied Platforms Name ) Ġimplied Platforms : ĠList < String >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger : ĠD ok ka Logger ) ĊĠĠĠ Ġ: ĠJekyll Format Service ( location Service , Ġsignature Generator , Ġ" html ", Ġimplied Platforms ) Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . warn (" Format Ġkotlin - website - samples Ġdeprecated Ġand Ġwill Ġbe Ġremoved Ġin Ġnext Ġrelease ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Output Builder ( to : ĠStringBuilder , Ġlocation : ĠLocation ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKotlin Website Runnable Samples Output Builder ( to , Ġlocation , Ġlocation Service , Ġlanguage Service , Ġextension , Ġimplied Platforms ) Ċ } ĊĊ