package Ġcom . ub erge ek 4 2 . W ee chat Android . search Ċ Ċ import Ġcom . ub erge ek 4 2 . W ee chat Android . relay . Line Ċ import Ġcom . ub erge ek 4 2 . W ee chat Android . relay . Header Line Ċ import Ġcom . ub erge ek 4 2 . W ee chat Android . search . Search . Matcher Ċ import Ġcom . ub erge ek 4 2 . W ee chat Android . upload . application Context Ċ import Ġjava . util . regex . Pattern Syntax Exception ĊĊ Ċ type alias ĠMatch List Ġ= ĠList < Long > ĊĊ Ċ class ĠSearch ( ĊĠĠĠ Ġprivate Ġval Ġmatcher : ĠMatcher , ĊĠĠĠ Ġprivate Ġval Ġsearch Listener : ĠListener , Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġlast Matches : ĠMatch List ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġon Lines Changed ( lines : ĠList < Line >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatches Ġ= Ġlines ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit :: class Ġ== ĠLine :: class Ġ|| Ġit Ġis ĠHeader Line Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġmatcher . matches ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . pointer Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Matches Ġ!= Ġmatches ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Matches Ġ= Ġmatches ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Listener . on SearchResults Changed ( matches ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinterface ĠListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon SearchResults Changed ( matches : ĠMatch List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinterface ĠMatcher Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġmatches ( line : ĠLine ): ĠBoolean ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Pattern Syntax Exception :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġfun Ġfrom String ( text : ĠString , Ġconfig : ĠSearch Config ): ĠMatcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMatcher Ġ{ Ġline Ġ-> Ġline . is Highlight ed Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( case Sensitive , Ġregex , Ġsource ) Ġ= Ġconfig ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġget Source Ġ= Ġwhen Ġ( source ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Config . Source . Prefix Ġ-> ĠLine :: prefix String ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Config . Source . Message Ġ-> ĠLine :: message String ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Config . Source . Prefix And Message Ġ-> ĠLine :: irc Like String ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Matches Search : Ġ(( String ) Ġ-> ĠBoolean ) Ġ= Ġif Ġ( regex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflags Ġ= Ġif Ġ( case Sensitive ) Ġempty Set () Ġelse Ġset Of ( Regex Option . IGNORE _ CASE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext . to Regex ( flags ):: contains Match In ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( case Sensitive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġstring Ġ-> Ġstring . contains ( text ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocale Ġ= Ġapplication Context . resources . configuration . locale ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Upper Ġ= Ġtext . toUpperCase ( locale ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Lower Ġ= Ġtext . toLowerCase ( locale ); ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġstring Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring . toUpperCase ( locale ). contains ( text Upper ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring . toLowerCase ( locale ). contains ( text Lower ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMatcher Ġ{ Ġline Ġ-> Ġsource Matches Search ( getSource ( line )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ data Ġclass ĠSearch Config ( ĊĠĠĠ Ġ@ Jvm Field Ġval Ġcase Sensitive : ĠBoolean , ĊĠĠĠ Ġ@ Jvm Field Ġval Ġregex : ĠBoolean , ĊĠĠĠ Ġ@ Jvm Field Ġval Ġsource : ĠSource , Ċ ) Ġ{ ĊĠĠĠ Ġenum Ġclass ĠSource Ġ{ ĊĠĠĠĠĠĠĠ ĠPrefix , ĊĠĠĠĠĠĠĠ ĠMessage , ĊĠĠĠĠĠĠĠ ĠPrefix And Message ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġval Ġdefault Ġ= ĠSearch Config ( case Sensitive Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregex Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSource . Prefix And Message ) ĊĠĠĠ Ġ} Ċ } Ċ