package Ġcom . pr 0 gram m . app . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . pr 0 gram m . app . R Ċ import Ġcom . pr 0 gram m . app . feed . Feed Filter Ċ import Ġcom . pr 0 gram m . app . feed . Feed Type Ċ import Ġcom . pr 0 gram m . app . orm . as Feed Filter Ċ import Ġcom . pr 0 gram m . app . services . Bookmark Service Ċ import Ġcom . pr 0 gram m . app . util . di . injector Ċ Ċ object ĠFeed Filter Formatter Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSimple Ġutility Ġfunction Ġto Ġformat Ġa Ġ[ com . pr 0 gram m . app . feed . Feed Filter ] Ġto Ġsome ĊĠĠĠĠ Ġ* Ġstring . ĠThe Ġstring Ġcan Ġnot Ġbe Ġparsed Ġback Ġor Ġanything Ġinteresting . ĊĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠThe Ġcurrent Ġcontext ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfilter Ġ ĠThe Ġfilter Ġthat Ġis Ġto Ġbe Ġconverted Ġinto Ġa Ġstring ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġformat ( context : ĠContext , Ġfilter : ĠFeed Filter ): ĠFeed Title Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcategory Ġ= Ġfeed Type ToString ( context , Ġfilter ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! filter . is Basic ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġimprove Ġformatting Ġlogic ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . tags ?. let Ġ{ Ġtags Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ' K at ze Ġin ĠTop ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtags Clean Ġ= Ġclean Tags ( tags ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFeed Title ( category , Ġtags Clean , Ġ"$ tags Clean Ġin Ġ$ category ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . collection Title ?. let Ġ{ Ġcollection Title Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Collection Of Ġ= Ġcontext . getString ( R . string . filter _ format _ collection _ of , Ġcollection Title , Ġfilter . username ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFeed Title ( title Collection Of , Ġsubtitle Ġ= Ġ"", Ġsingle line Ġ= Ġtitle Collection Of ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter . username ?. let Ġ{ Ġusername Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġwhen Ġ( filter . feed Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFeed Type . NEW Ġ-> Ġcontext . getString ( R . string . uploads ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġcontext . getString ( R . string . uploads _ in , Ġcategory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubtitle Ġ= Ġcontext . getString ( R . string . filter _ format _ tag _ by ) Ġ+ Ġ" Ġ" Ġ+ Ġusername ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFeed Title ( title , Ġsubtitle , Ġ"$ subtitle Ġin Ġ$ category ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠFeed Title ( feed Type ToString ( context , Ġfilter ), Ġ"", Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfeed Type ToString ( context : ĠContext , Ġfilter : ĠFeed Filter ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( filter . collection Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontext . getString ( R . string . collections _ of , Ġfilter . username ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( filter . feed Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFeed Type . NEW Ġ-> Ġcontext . getString ( R . string . filter _ format _ new ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFeed Type . BEST OF Ġ-> Ġcontext . getString ( R . string . filter _ format _ best of ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFeed Type . RANDOM Ġ-> Ġcontext . getString ( R . string . filter _ format _ random ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFeed Type . ST AL K Ġ-> Ġcontext . getString ( R . string . filter _ format _ premium ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFeed Type . PRO MOT ED Ġ-> Ġcontext . getString ( R . string . filter _ format _ top ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFeed Type . CONTRO VER SI AL Ġ-> Ġcontext . getString ( R . string . filter _ format _ cont ro vers ial ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto Title ( context : ĠContext , Ġfilter : ĠFeed Filter ): ĠTitle Fragment . Title Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġformat Ġthe Ġcurrent Ġfilter ĊĠĠĠĠĠĠĠ Ġval Ġformatted Ġ= Ġformat ( context , Ġfilter ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġa Ġmore Ġspecific Ġtitle Ġfrom Ġa Ġbookmark Ġif Ġpossible ĊĠĠĠĠĠĠĠ Ġval Ġbookmark Title Ġ= Ġbookmark Title Of ( context , Ġfilter ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbookmark Title Ġ!= Ġnull Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTitle Fragment . Title ( bookmark Title , Ġcontext . getString ( R . string . bookmark )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTitle Fragment . Title ( formatted . title , Ġformatted . subtitle , Ġuse Subtitle In Title Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbookmark Title Of ( context : ĠContext , Ġfilter : ĠFeed Filter ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbookmark Service : ĠBook mark Service Ġ= Ġcontext . injector . instance () ĊĊĠĠĠĠĠĠĠ Ġval Ġdirect Title Ġ= Ġbookmark Service . by Filter ( filter )?. title ĊĠĠĠĠĠĠĠ Ġif Ġ( direct Title Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdirect Title ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġif Ġthe Ġfilter Ġmight Ġmatch Ġthe Ġinverse Ġof Ġany Ġbookmark ĊĠĠĠĠĠĠĠ Ġval Ġbookmark Inverse Ġ= Ġbookmark Service . all . first OrNull Ġ{ Ġbookmark Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Ġ== Ġbookmark . as Feed Filter (). invert () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( bookmark Inverse Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontext . getString ( R . string . bookmark _ inverse _ title , Ġbookmark Inverse . title ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclean Tags ( tags : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġtags . trim Start (' ?', Ġ'! '). trim () ĊĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġtrim ( result , Ġ' (', Ġ') '). trim () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġtrim ( result , Ġ'" ', Ġ'" '). trim () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġtrim ( result , Ġ'\' ', Ġ'\' '). trim () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult . replace (" Ġ([ | & - ]) Ġ". to Regex (), Ġ"$ 1 "). trim () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtrim ( text : ĠString , Ġleft : ĠChar , Ġright : ĠChar ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! text . startsWith ( left ) Ġ|| Ġ! text . endsWith ( right ) Ġ|| Ġtext . length Ġ<= Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtext ĊĊĠĠĠĠĠĠĠ Ġval Ġmid Ġ= Ġtext . substring ( 1 , Ġtext . last Index ) ĊĠĠĠĠĠĠĠ Ġif Ġ( left Ġin Ġmid Ġ|| Ġright Ġin Ġmid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtext ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmid ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġclass ĠFeed Title ( val Ġtitle : ĠString , Ġval Ġsubtitle : ĠString , Ġval Ġsingle line : ĠString ) Ċ } Ċ