package Ġio . datal br y . plugin . semver . notes . formatter Ċ Ċ import Ġio . datal br y . plugin . semver . notes . Release Note Ċ import Ġio . datal br y . plugin . semver . notes . Release Notes Ċ import Ġio . datal br y . plugin . semver . notes . formatter . Markdown Release Notes Formatter . Companion . HEAD ING _ LEVEL _ 3 Ċ import Ġio . datal br y . plugin . semver . notes . formatter . Markdown Release Notes Formatter . Companion . HEAD ING _ LEVEL _ 4 Ċ import Ġio . datal br y . plugin . semver . notes . formatter . Markdown Release Notes Formatter . Companion . LIST _ PREFIX Ċ import Ġorg . jetbrains . kotlin . util . prefix IfNot Ċ import Ġkotlin . collections . Map . Entry Ċ Ċ /** Ċ Ġ* Ġ[ Markdown Release Notes Formatter ] Ġis Ġa Ġ[ Release Notes ] Ġto Ġmarkdown Ġformatter Ċ Ġ* Ċ Ġ* Ġ@ param Ġconfig Ġto Ġalter Ġthe Ġbehavior Ġof Ġthe Ġ[ Markdown Release Notes Formatter ] Ġwith Ċ Ġ* Ċ Ġ* Ġ@ author Ġt imo Ġgr uen Ġ- Ġ 2 0 2 1 - 1 0 - 1 5 Ċ Ġ*/ Ċ class ĠMarkdown Release Notes Formatter ( ĊĠĠĠ Ġprivate Ġval Ġconfig : ĠMarkdown Release Notes Formatter Config Ċ ) Ġ: ĠRelease Notes Formatter Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġformat ( release Notes : ĠRelease Notes ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrelease Notes . messages ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy Ġ{ Ġit . type Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Sorted Map () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Keys Ġ{ Ġ( key , Ġ_) Ġ-> Ġconfig . type Alias . get OrDefault ( key , Ġkey ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . to Markdown () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ("\ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠHEAD ING _ LEVEL _ 3 Ġ= Ġ" ### " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠHEAD ING _ LEVEL _ 4 Ġ= Ġ" #### " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠLIST _ PREFIX Ġ= Ġ" Ġ- Ġ" ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠEntry < String , ĠList < Release Note >> . to Markdown (): ĠString Ġ{ ĊĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠ Ġbuilder . append Line ( this . key . getTitle ()) ĊĠĠĠ Ġvalue . groupBy Ġ{ Ġit . context Ġ} ĊĠĠĠĠĠĠĠ Ġ. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . key . isNotBlank ()) Ġbuilder . append Line ("$ HEAD ING _ LEVEL _ 4 Ġ${ it . key . capitalize () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġcommit Ġ-> Ġcommit . message Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġmessage Ġ-> Ġmessage . prefix IfNot ( LIST _ PREFIX ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each ( builder :: append Line ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġbuilder . toString () Ċ } Ċ Ċ private Ġfun ĠString . getTitle () Ġ= Ġwhen Ġ{ ĊĠĠĠ Ġthis . isEmpty () Ġ-> Ġ"$ HEAD ING _ LEVEL _ 3 ĠM ention able " ĊĠĠĠ Ġelse Ġ-> Ġ"$ HEAD ING _ LEVEL _ 3 Ġ${ capitalize () }" Ċ } Ċ