/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 ĠGe et esh ĠKal ak oti Ġ< kal ak ot ig @ gmail . com > Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġio . ge et esh k . hyper . ui . widget Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Type face Ċ import Ġandroidx . appcompat . widget . AppCompat TextView Ċ import Ġandroid . text . Sp ann able Ċ import Ġandroid . text . Sp ann able String Ċ import Ġandroid . text . style . ForegroundColor Span Ċ import Ġandroid . util . Attribute Set Ċ import Ġio . ge et esh k . hyper . util . editor . Resource Helper Ċ import Ġjava . util . regex . Pattern Ċ Ċ class ĠDiff View Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 ) Ġ: ĠAppCompat TextView ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrect Paint : ĠPaint ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtype face Ġ= ĠType face . createFrom Asset ( context . assets , Ġ" fonts / Con sol as . ttf ") ĊĠĠĠĠĠĠĠ Ġset BackgroundColor (- 0 xcc cc cd ) ĊĠĠĠĠĠĠĠ Ġset TextColor (- 0 x 1 ) ĊĠĠĠĠĠĠĠ Ġtext Size Ġ= ĠResource Helper . dp To Px ( context , Ġ 4 ). toFloat () ĊĊĠĠĠĠĠĠĠ Ġrect Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġrect Paint . color Ġ= Ġ- 0 xb bb bbc ĊĠĠĠĠĠĠĠ Ġrect Paint . style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ Ġrect Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Diff Text ( text : ĠSp ann able String ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Text ( highlight ( text )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhighlight ( input : ĠSp ann able String ): ĠSp ann able String Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Ġ= ĠREMOVE _ CHANG ES . matcher ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( m . find ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . set Span ( ForegroundColor Span (- 0 x 3 ea ff ), Ġm . start (), Ġm . end (), ĠSp ann able . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Ġ= ĠADD _ CHANG ES . matcher ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( m . find ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . set Span ( ForegroundColor Span (- 0 xff 0 0 9 a ), Ġm . start (), Ġm . end (), ĠSp ann able . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Ġ= ĠLINE _ CHANG ES . matcher ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( m . find ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . set Span ( ForegroundColor Span (- 0 x 1 f 9 9 0 1 ), Ġm . start (), Ġm . end (), ĠSp ann able . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Ġ= ĠINFO _ CHANG ES . matcher ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( m . find ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . set Span ( ForegroundColor Span (- 0 x 1 a 0 0 ), Ġm . start (), Ġm . end (), ĠSp ann able . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Ġ= ĠINFO _ CHANG ES _ TWO . matcher ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( m . find ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . set Span ( ForegroundColor Span (- 0 x 1 a 0 0 ), Ġm . start (), Ġm . end (), ĠSp ann able . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Ġ= ĠINFO _ CHANG ES _ TH REE . matcher ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( m . find ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . set Span ( ForegroundColor Span (- 0 x 1 a 0 0 ), Ġm . start (), Ġm . end (), ĠSp ann able . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġm Ġ= ĠINFO _ CHANG ES _ FO UR . matcher ( input ) ĊĠĠĠĠĠĠĠ Ġwhile Ġ( m . find ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput . set Span ( ForegroundColor Span (- 0 x 1 a 0 0 ), Ġm . start (), Ġm . end (), ĠSp ann able . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġinput ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠINFO _ CHANG ES Ġ= ĠPattern . compile ("/ \\ ** ? \\ */ | diff .* ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠINFO _ CHANG ES _ TWO Ġ= ĠPattern . compile ("/ \\ ** ? \\ */ | index .* ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠINFO _ CHANG ES _ TH REE Ġ= ĠPattern . compile ("/ \\ ** ? \\ */ | \\ + \\ + \\ + .* ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠINFO _ CHANG ES _ FO UR Ġ= ĠPattern . compile ("/ \\ ** ? \\ */ | --- .* ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLINE _ CHANG ES Ġ= ĠPattern . compile ("/ \\ ** ? \\ */ | @@ .* ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠADD _ CHANG ES Ġ= ĠPattern . compile ("/ \\ ** ? \\ */ | \\ + .* ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠREMOVE _ CHANG ES Ġ= ĠPattern . compile ("/ \\ ** ? \\ */ |- .* ") ĊĠĠĠ Ġ} Ċ } Ċ