import Ġch . u zh . ifi . pop ularity . names . Filename Strategy Ċ import Ġch . u zh . ifi . pop ularity . names . Names Strategy Ċ import Ġch . u zh . ifi . pop ularity . names . Parsing File Strategy Ċ import Ġch . u zh . ifi . pop ularity . names . Pop ular Names Ċ import Ġmu . Kotlin Logging Ċ import Ġjava . io . File Ċ Ċ private Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{} Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĊĠĠĠ Ġval Ġstrategy Ġ= Ġargs . getOrElse ( 0 ) Ġ{ Ġ" filename " Ġ} ĊĠĠĠ Ġval Ġpage Repo Ġ= Ġargs . getOrElse ( 1 ) Ġ{ Ġ" 1 " Ġ}. toInt () ĊĠĠĠ Ġval Ġpage Source Ġ= Ġargs . getOrElse ( 2 ) Ġ{ Ġ" 1 0 " Ġ}. toInt () ĊĊĠĠĠ Ġval Ġconcrete Strategy : ĠNames Strategy Ġ= Ġif Ġ( strategy Ġ== Ġ" parsing ") ĠParsing File Strategy () Ġelse ĠFilename Strategy () ĊĠĠĠ Ġlogger . info Ġ{ Ġ" Using Ġ\"$ strategy \" Ġstrategy Ġwith Ġ$ page Repo Ġand Ġ$ page Source Ġpages Ġfor Ġrepository Ġand Ġsources " Ġ Ġ} ĊĠĠĠ Ġval Ġcontext Ġ= ĠPop ular Names ( strategy Ġ= Ġconcrete Strategy , Ġpage Repo Ġ= Ġpage Repo , Ġpage Source Ġ= Ġpage Source ) ĊĠĠĠ Ġval Ġpopular Names : ĠMap < String , ĠInt > Ġ= Ġcontext . get Pop ular Names () ĊĠĠĠ ĠFile ("./ results . csv "). print Writer (). use Ġ{ Ġout Ġ-> ĊĠĠĠĠĠĠĠ Ġpopular Names . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . value Ġ> Ġ 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . println ("${ it . key }, Ġ${ it . value }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ