package Ġorg . read ium . r 2 . test app . search Ċ Ċ import Ġandroid . os . Handler Ċ import Ġorg . json . JSONArray Ċ import Ġorg . read ium . r 2 . navigator . IR 2 Activity Ċ import Ġorg . read ium . r 2 . navigator . pager . R 2 E pub Page Fragment Ċ import Ġorg . read ium . r 2 . navigator . pager . R 2 Pager Adapter Ċ import Ġorg . read ium . r 2 . shared . publication . Locator Ċ import Ġorg . read ium . r 2 . test app . Build Config . DEBUG Ċ import Ġtim ber . log . Tim ber ĊĊ Ċ /** Ċ Ġ* Ċ Ġ*/ Ċ interface ĠSearch Interface Ġ{ ĊĠĠĠ Ġfun Ġsearch ( keyword : ĠString , Ġcallback : Ġ( Pair < Boolean , ĠMutable List < Locator >>) Ġ-> ĠUnit ) Ċ } Ċ Ċ /** Ċ Ġ* ĠThis Ġis Ġour Ġcustom ĠSearch ĠModule , Ġthis Ġclass Ġuses ĠMark JS Ġlibrary Ġand Ġimplements ĠSearch Interface Ċ Ġ*/ Ċ class ĠMark JS Search Engine ( private Ġvar Ġlistener : ĠIR 2 Activity ) Ġ: ĠSearch Interface Ġ{ ĊĊĊĠĠĠ Ġoverride Ġfun Ġsearch ( keyword : ĠString , Ġcallback : Ġ( Pair < Boolean , ĠMutable List < Locator >>) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsearch Result Ġ= Ġmutable ListOf < Locator >() ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( resource Index Ġin Ġ 0 Ġuntil Ġlistener . publication . reading Order . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġ(( listener . resource Pager ?. adapter Ġas ĠR 2 Pager Adapter ). mF rag ments . get (( listener . resource Pager ?. adapter Ġas ĠR 2 Pager Adapter ). getItem Id ( resource Index ))) Ġas ĠR 2 E pub Page Fragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresource Ġ= Ġlistener . publication . reading Order [ resource Index ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresource Href Ġ= Ġresource . href ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresource Type Ġ= Ġresource . type Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresource Title Ġ= Ġresource . title Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . web View ?. run JavaScript (" mark Search (' ${ keyword }', Ġnull , Ġ'$ resource Href ', Ġ'$ resourceType ', Ġ'$ resource Title ') ") Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( DEBUG ) ĠTim ber . tag (" SEARCH "). d (" result Ġ$ result ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġ" null ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġloc ators List Ġ= Ġmutable ListOf < Locator >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġloc ators Ġ= ĠJSONArray ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 Ġuntil Ġloc ators . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Building ĠLoc ators ĠObjects ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocator Ġ= Ġloc ators . getJSONObject ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhref Ġ= Ġlocator . getString (" href ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġlocator . getString (" type ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġlocator . getString (" title ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= ĠLoc ator . Text . from JSON ( locator . getJSONObject (" text ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= ĠLoc ator . Locations . from JSON ( locator . getJSONObject (" locations ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp Locator Ġ= ĠLoc ator ( href , Ġtype , Ġtitle , Ġlocation , Ġtext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloc ators List . add ( tmp Locator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Result . addAll ( loc ators List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( DEBUG ) ĠTim ber . tag (" SEARCH "). d (" resource Index Ġ$ resource Index Ġpublication . reading Order . size Ġ${ listener . publication . reading Order . size }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resource Index Ġ== Ġ( listener . publication . reading Order . size Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( Pair ( true , Ġsearch Result )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( Pair ( false , Ġsearch Result )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 5 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ