package Ġlt . new orld . spanner Ċ Ċ import Ġandroid . support . annotation . Requires Api Ċ import Ġandroid . text . Sp ann able StringBuilder Ċ import Ġandroid . text . TextUtils Ċ Ċ class ĠSp anner ( text : ĠCharSequence ?) Ġ: ĠSp ann able StringBuilder ( text ) Ġ{ ĊĠĠĠ Ġconstructor () Ġ: Ġthis ("") ĊĊĠĠĠ Ġoverride Ġfun Ġappend ( text : ĠCharSequence ?): ĠSp anner Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Ġ?: Ġreturn Ġthis ĊĊĠĠĠĠĠĠĠ Ġsuper . append ( text ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend ( text : ĠCharSequence , Ġstart : ĠInt , Ġend : ĠInt ): ĠSp anner Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . append ( text , Ġstart , Ġend ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend ( text : ĠChar ): ĠSp anner Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . append ( text ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinsert ( where : ĠInt , Ġtext : ĠCharSequence ?): ĠSp anner Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Ġ?: Ġreturn Ġthis ĊĊĠĠĠĠĠĠĠ Ġsuper . insert ( where , Ġtext ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( api Ġ= Ġ 2 1 ) ĊĠĠĠ Ġoverride Ġfun Ġappend ( text : ĠCharSequence ?, Ġwhat : ĠAny ?, Ġflags : ĠInt ): ĠSp anner Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Ġ?: Ġreturn Ġthis ĊĊĠĠĠĠĠĠĠ Ġsuper . append ( text , Ġwhat , Ġflags ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreplace ( start : ĠInt , Ġend : ĠInt , Ġreplace : ĠCharSequence ?): ĠSp anner Ġ{ ĊĠĠĠĠĠĠĠ Ġreplace Ġ?: Ġreturn Ġthis ĊĊĠĠĠĠĠĠĠ Ġsuper . replace ( start , Ġend , Ġreplace ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreplace ( start : ĠInt , Ġend : ĠInt , Ġreplace : ĠCharSequence ?, Ġtb start : ĠInt , Ġtb end : ĠInt ): ĠSp anner Ġ{ ĊĠĠĠĠĠĠĠ Ġreplace Ġ?: Ġreturn Ġthis ĊĊĠĠĠĠĠĠĠ Ġsuper . replace ( start , Ġend , Ġreplace , Ġtb start , Ġtb end ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete ( start : ĠInt , Ġend : ĠInt ): ĠSp anner Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . delete ( start , Ġend ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġappend ( text : ĠCharSequence ?, Ġvar arg Ġspans : ĠSpan ): ĠSp anner Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Ġ?: Ġreturn Ġthis ĊĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġlength ĊĊĠĠĠĠĠĠĠ Ġappend ( text ) ĊĊĠĠĠĠĠĠĠ Ġset Spans ( start , Ġlength , Ġ* spans ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġappend ( span : ĠImage Span ): ĠSp anner Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġlength ĊĊĠĠĠĠĠĠĠ Ġappend (" Ġ") ĊĊĠĠĠĠĠĠĠ Ġset Spans ( start , Ġlength , Ġspan ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinsert ( where : ĠInt , Ġtext : ĠCharSequence , Ġvar arg Ġspans : ĠSpan ): ĠSp anner Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . insert ( where , Ġtext ) ĊĊĠĠĠĠĠĠĠ Ġset Spans ( where , Ġwhere Ġ+ Ġtext . length , Ġ* spans ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreplace ( start : ĠInt , Ġend : ĠInt , Ġtext : ĠCharSequence ?, Ġvar arg Ġspans : ĠSpan ): ĠSp anner Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġtext Ġ?: Ġ"" ĊĊĠĠĠĠĠĠĠ Ġsuper . replace ( start , Ġend , Ġtext ) ĊĊĠĠĠĠĠĠĠ Ġset Spans ( start , Ġstart Ġ+ Ġtext . length , Ġ* spans ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreplace ( search : ĠCharSequence , Ġreplace : ĠCharSequence , Ġvar arg Ġspans : ĠSpan ): ĠSp anner Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstart : ĠInt ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= ĠText Utils . indexOf ( this , Ġsearch ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( start Ġ== Ġ- 1 ) Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplace ( start , Ġstart Ġ+ Ġsearch . length , Ġreplace , Ġ* spans ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Spans ( start : ĠInt , Ġend : ĠInt , Ġvar arg Ġspans : ĠSpan ): ĠSp anner Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( span Ġin Ġspans ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Span ( span . build Span (), Ġstart , Ġend , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġspan ( search : ĠCharSequence , Ġvar arg Ġspans : ĠSpan ): ĠSp anner Ġ{ ĊĠĠĠĠĠĠĠ Ġspan ( 0 , Ġsearch , Ġ* spans ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġspan ( startIndex : ĠInt , Ġsearch : ĠCharSequence , Ġvar arg Ġspans : ĠSpan ): ĠSp anner Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( search )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Spans ( 0 , Ġlength , Ġ* spans ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġlast Pos : ĠInt Ġ= ĠstartIndex Ġ- Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Pos Ġ= ĠText Utils . indexOf ( this , Ġsearch , Ġlast Pos Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Pos Ġ== Ġ- 1 ) Ġbreak ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Spans ( last Pos , Ġlast Pos Ġ+ Ġsearch . length , Ġ* spans ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} Ċ } Ċ