/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠJ ason ĠMon k Ċ Ġ* ĠĊ Ġ* Ġ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 Ċ Ġ* ĠĊ Ġ* ĠĠĠĠ Ġhttps :// 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 Ġlan tern a Ċ Ċ import ĠStd out Logger Ċ import Ġcom . google code . lan tern a . TextColor Ċ import Ġcom . google code . lan tern a . graphics . Default Mutable Theme Style Ċ import Ġcom . google code . lan tern a . gui 2 . Container Ċ import Ġcom . google code . lan tern a . gui 2 . Panel Ċ import Ġcom . mon kop edia . Log Ċ import Ġcom . mon kop edia . info Ċ import Ġcom . mon kop edia . lan tern a . span nable . Link Span Ċ import Ġcom . mon kop edia . lan tern a . span nable . Span Ċ import Ġcom . mon kop edia . lan tern a . span nable . Sp ann able Label Ċ import Ġcom . mon kop edia . lan tern a . span nable . Sp anned Ċ import Ġcom . mon kop edia . lan tern a . span nable . Theme Span Ċ import Ġcom . mon kop edia . im dex . parse Markdown Ċ import Ġcom . mon kop edia . lan tern a . Lan tern a Ċ import Ġcom . mon kop edia . lan tern a . Theme Data Ċ import Ġcom . mon kop edia . lan tern a . Theme Definition Data Ċ import Ġcom . mon kop edia . lan tern a . Theme Style Data Ċ import Ġcom . mon kop edia . lan tern a . build Views Ċ import Ġcom . mon kop edia . lan tern a . vertical Ċ import Ġcom . mon kop edia . md view . markdown Ċ import Ġjava . io . File Ċ import Ġjava . util . Properties Ċ import Ġjunit . framework . Assert Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . Test Ċ Ċ class ĠSp anned Test Ġ{ ĊĠĠĠ Ġclass ĠTest Span Ġ: ĠSpan < Test Span > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcopy () Ġ= ĠTest Span () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` static Ġspan Ġsplitting `() Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . init ( Stdout Logger ) ĊĠĠĠĠĠĠĠ Ġval Ġspan Ġ= ĠSp anned () ĊĠĠĠĠĠĠĠ Ġspan . append (" Test Ġ") ĊĠĠĠĠĠĠĠ Ġspan . append (" other Ġtext ", ĠTest Span ()) ĊĠĠĠĠĠĠĠ Ġspan . apply Spans ( 5 , Ġ 1 0 , ĠTest Span ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġstatic Spans Ġ= Ġspan . to Static Spans () ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( listOf (" Test Ġ", Ġ" other ", Ġ" Ġtext "), Ġstatic Spans . map Ġ{ Ġ"$ it " Ġ}) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 , Ġstatic Spans [ 1 ]. spans . size ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġstatic Spans [ 2 ]. spans . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` link Ġsurrounding Ġcode `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstyle Ġ= ĠDefault Mutable Theme Style ( TextColor . ANSI . BLACK , ĠText Color . ANSI . BLACK ) ĊĠĠĠĠĠĠĠ Ġval Ġspan Ġ= ĠSp anned () ĊĠĠĠĠĠĠĠ Ġval Ġlink Span Ġ= ĠSp anned () ĊĠĠĠĠĠĠĠ Ġlink Span . append (" This Ġis Ġsome Ġ") Ġ// Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= ĠSp anned () ĊĠĠĠĠĠĠĠ Ġcode . append (" code ") Ġ// Ġ 2 ĊĠĠĠĠĠĠĠ Ġcode . apply Spans ( 0 , Ġcode . length , ĠTheme Span ( style )) ĊĠĠĠĠĠĠĠ Ġlink Span . append ( code ) ĊĠĠĠĠĠĠĠ Ġlink Span . append (" Ġ") Ġ// Ġ 3 ĊĊĠĠĠĠĠĠĠ Ġspan . append (" base Ġtext . Ġ") Ġ// Ġ 0 ĊĠĠĠĠĠĠĠ Ġspan . append ( link Span , ĠLink Span ({ Ġ}, Ġstyle , Ġstyle )) ĊĠĠĠĠĠĠĠ Ġlink Span . append ("") ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" base Ġtext . Ġ", Ġ" This Ġis Ġsome Ġ", Ġ" code ", Ġ" Ġ"), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan . to Static Spans (). map Ġ{ Ġ"$ it " Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtest String Ġ= Ġ""" ĊĠĠĠĠĠĠĠ Ġ| Ġ ĠName | Ġ ĠSummary | ĠĊĠĠĠĠĠĠĠ Ġ| ---|---| ĊĠĠĠĠĠĠĠ Ġ| Ġ[ offer ]( offer . md )| ĠB rief Ġdescription Ġ Ġ< br > Immediate ly Ġadds Ġthe Ġspecified Ġ[ element ]() Ġto Ġthis Ġchannel , Ġif Ġthis Ġdoesn 't Ġvi olate Ġits Ġcapacity Ġrestrictions , Ġand Ġreturns Ġ< code > true </ code >. ĠOtherwise , Ġjust Ġreturns Ġ< code > false </ code >. ĠThis Ġis Ġa Ġsynchronous Ġvariant Ġof Ġ[ send ]( send . md ) Ġwhich Ġback s Ġoff Ġin Ġsituations Ġwhen Ġ< code > send </ code > Ġsus p ends . Throws Ġan Ġexception Ġif Ġthe Ġchannel Ġ[ is Ġclosed Ġfor Ġ< code > send </ code > Ġ]( index . md # kotlin x . coroutines . channels / Send Channel / is Closed For Send /#/ Point ing To Declaration /) Ġ( see Ġ[ close ]( close . md ) Ġfor Ġdetails ). Ġ Ġ< br > Content Ġ Ġ< br > abstract Ġfun Ġ[ offer ]( offer . md )( element : Ġ[ E ]( index . md )): Ġ[ Boolean ](../../ kotlin /- boolean / index . md ) Ġ Ġ< br >< br >< br > ĊĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġtheme Style Ġ= ĠTheme Style Data ("# ffffff ", Ġ"# 0 0 0 0 0 0 ", Ġempty List (), Ġempty Map ()) ĊĠĠĠ Ġval Ġtheme Ġ= ĊĠĠĠĠĠĠĠ ĠTheme Data ( Theme Definition Data ( theme Style , Ġtheme Style , Ġtheme Style , Ġtheme Style , Ġtheme Style )) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` parsed Ġsp ann ables `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnodes Ġ= Ġparse Markdown ( test String ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . init ( Stdout Logger ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL an tern a . init ( File ("/ tmp "), Ġtheme , ĠProperties ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpanel Ġ= Ġbuild Views Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown ( nodes ) Ġ{ Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNothing ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. first () Ġas ĠPanel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Child Ġ= Ġ( panel . children List [ 0 ] Ġas ĠContainer ). children List [ 3 ] Ġas ĠSp ann able Label ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġtext Child . get CharSequence () Ġas ĠSp anned ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . info (" Panel : Ġ${ text :: class } Ġ$ text ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext . spans . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . info (" Span : Ġ$ it Ġ${ text . toString (). substring ( it . start , Ġit . end )} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext . children . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Child : Ġ${ it :: class } Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext . to Static Spans (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Span : Ġ${ it . length } Ġ${ it . spans } Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ