package Ġcom . github . the apache 6 4 . show todo . core Ċ Ċ import Ġcom . github . the apache 6 4 . show todo . Mode Ċ import Ġcom . github . the apache 6 4 . show todo . model . Line Ċ import Ġjava . awt . Desktop Ċ import Ġjava . io . File Ċ import Ġjava . net . URI Ċ import Ġjava . nio . file . Path Ċ import Ġkotlin . io . path . create Directories Ċ import Ġkotlin . io . path . div ĊĊ Ċ internal Ġconst Ġval ĠKEY _ PAGE _ TITLE Ġ= Ġ"{{ PAGE _ TITLE }}" Ċ internal Ġconst Ġval ĠKEY _ PAGE _ CONTENT Ġ= Ġ"{{ PAGE _ CONTENT }}" Ċ Ċ object ĠHtml Generator Ġ{ ĊĠĠĠ Ġfun Ġgenerate Report ( project Dir : ĠFile , Ġlines : ĠList < Line >, Ġmode : ĠMode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" ðŁĵ Ŀ ĠGenerating Ġreport ...") ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġdirectory ĊĠĠĠĠĠĠĠ Ġval Ġshow Todo Dir Ġ= Ġget Report Dir ( project Dir ) ĊĠĠĠĠĠĠĠ Ġshow Todo Dir . to File (). delete Re cursively () ĊĠĠĠĠĠĠĠ Ġshow Todo Dir . create Directories () ĊĊĠĠĠĠĠĠĠ Ġ// Ġauthor Ġmap ĊĠĠĠĠĠĠĠ Ġval Ġauthor Map Ġ= Ġlines . groupBy Ġ{ Ġit . author Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Sorted Map ( comparator Ġ= Ġ{ Ġauthor 1 , Ġauthor 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauthor 1 . toString (). compareTo ( author 2 . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġindex ĊĠĠĠĠĠĠĠ Ġval Ġindex Page Path Ġ= ĠIndex Page Generator . generate Page ( show Todo Dir , Ġproject Dir , Ġauthor Map , Ġmode ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġauthor Ġpages ĊĠĠĠĠĠĠĠ ĠAuthor Page Generator . generate Page ( project Dir , Ġshow Todo Dir , Ġauthor Map ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfile Uri Ġ= Ġ" file ://${ index Page Path . to File (). absolute Path }" ĊĠĠĠĠĠĠĠ Ġprintln (" âľ ħ ĠReport Ġgenerated : Ġ$ file Uri ") ĊĠĠĠĠĠĠĠ ĠDesktop . get Desktop (). browse ( URI ( file Uri )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Index File ( project Dir : ĠFile ) Ġ: ĠPath { ĊĠĠĠĠĠĠĠ Ġreturn Ġget Report Dir ( project Dir ) Ġ/ Ġ" index . html " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Report Dir ( project Dir : ĠFile ) Ġ= Ġproject Dir . to Path () Ġ/ Ġ" build " Ġ/ Ġ" show - todo " Ċ Ċ }