package Ġde . mark us res sel . kode highlighter . core Ċ Ċ import Ġandroid . text . Sp ann able Ċ import Ġandroid . text . style . Character Style Ċ import Ġde . mark us res sel . kode highlighter . core . color scheme . Color Scheme Ċ import Ġde . mark us res sel . kode highlighter . core . rule . Language Rule Ċ import Ġkotlinx . coroutines . async Ċ import Ġkotlinx . coroutines . await All Ċ import Ġkotlinx . coroutines . coroutine Scope Ċ Ċ /** Ċ Ġ* ĠA Ġfunction Ġthat Ġcreates Ġa Ġ[ Character Style ] Ġthat Ġcan Ġbe Ġapplied Ġto Ġa Ġ[ Sp ann able ] Ċ Ġ*/ Ċ type alias ĠStyle Factory Ġ= Ġ() Ġ-> ĠCharacter Style Ċ Ċ /** Ċ Ġ* ĠInterface Ġfor Ġa Ġlanguage Ġrule Ġbook , Ġproviding Ġdefinitions Ġof Ġwhat Ġto Ġhighlight Ċ Ġ*/ Ċ interface ĠLanguage Rule Book Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġdefault Ġcolor Ġscheme ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġdefault Color Scheme : ĠColor Scheme ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġa Ġset Ġof Ġrules Ġfor Ġthis Ġhighlighter ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Rules (): ĠSet < Language Rule > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAnaly zes Ġthe Ġgiven Ġtext Ġand Ġcreates Ġa Ġlist Ġof Ġstyles Ġthat Ġwould Ġneed Ġto Ġbe Ġapplied ĊĠĠĠĠ Ġ* Ġto Ġit . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġchar Sequence Ġthe Ġtext Ġto Ġanalyze ĊĠĠĠĠ Ġ* Ġ@ return Ġlist Ġof Ġhighlighting Ġentities ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġcreate Highlighting ( char Sequence : ĠCharSequence ): ĠList < Rule Matches > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcoroutine Scope Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Rules (). map Ġ{ Ġrule Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatches Ġ= Ġrule . find Matches ( char Sequence ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( matches . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRule Matches ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrule Ġ= Ġrule , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatches Ġ= Ġmatches ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. await All (). filter NotNull () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }