package Ġcom . av ito . android . stats Ċ Ċ import Ġjava . io . Serializable Ċ Ċ /** Ċ Ġ* Ġhttps :// graph ite . readthedocs . io / en / latest / termin ology . html # term - series Ċ Ġ* Ċ Ġ* Ġpart Ġwith Ġdot Ġseparator Ġwill Ġbe Ġtreated Ġas Ġsingle Ġseries Ġname Ġpart Ċ Ġ* Ċ Ġ* Ġexample : Ċ Ġ* Ġ Ġ- ĠSeries Name . create (" one . two . three ") Ġ-> Ġ" one _ two _ three " Ċ Ġ* Ġ Ġ- ĠSeries Name . create (" one ", Ġ" two . three ") Ġ-> Ġ" one . two _ three " Ċ Ġ* Ġuse : Ċ Ġ* Ġ Ġ- ĠSeries Name . create (" one ", Ġ" two ", Ġ" three ") Ġ-> Ġ" one . two . three " Ċ Ġ* Ġ Ġ- ĠSeries Name . create (" one . two . three ", Ġmultipart Ġ= Ġtrue ) Ġ-> Ġ" one . two . three " Ċ Ġ* Ċ Ġ* Ġ Ġsame Ġrules Ġapplies Ġfor Ġappend Ċ Ġ*/ Ċ public Ġclass ĠSeries Name Ġprivate Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġparts : ĠList < String > Ċ ) Ġ: ĠSerializable Ġ{ ĊĊĠĠĠ Ġpublic Ġfun Ġprefix ( series Name : ĠSeries Name ): ĠSeries Name Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSeries Name ( series Name . parts Ġ+ Ġparts ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġappend ( part : ĠString , Ġmultipart : ĠBoolean Ġ= Ġfalse ): ĠSeries Name Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( multipart ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmultip arts Ġ= Ġpart . split ('. '). map Ġ{ Ġgraph ite Series Part ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSeries Name ( parts Ġ+ Ġmultip arts ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSeries Name ( parts Ġ+ Ġgraph ite Series Part ( part )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġappend ( var arg Ġpart : ĠString ): ĠSeries Name Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSeries Name ( parts Ġ+ Ġpart . map Ġ{ Ġgraph ite Series Part ( it ) Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġappend ( part : ĠSeries Name ): ĠSeries Name Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpart . prefix ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġas Aspect (): ĠString Ġ= ĠtoString () ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparts . join ToString ( separator Ġ= Ġ". ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( java Class Ġ!= Ġother ?. java Class ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġother Ġas ĠSeries Name ĊĊĠĠĠĠĠĠĠ Ġif Ġ( parts Ġ!= Ġother . parts ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparts . hashCode () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġinvalid Symbols Ġby Ġlazy Ġ{ Ġ"[ ^ a - zA - Z 0 - 9 _- ]+ ". to Regex () Ġ} ĊĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġcreate ( var arg Ġpart : ĠString ): ĠSeries Name Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSeries Name ( mutable ListOf ()). append (* part ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġcreate ( series Name : ĠString , Ġmultipart : ĠBoolean ): ĠSeries Name Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSeries Name ( mutable ListOf ()). append ( series Name , Ġmultipart ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġgraph ite Series Part ( value : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue . replace ( invalid Symbols , Ġ"_ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ