package Ġca . void star zero . is bd . title statement . grammar Ċ Ċ import Ġca . void star zero . is bd . title statement . Title Parse Context Ċ import Ġca . void star zero . is bd . title statement . ast .* Ċ import Ġca . void star zero . mar c . MAR C Field Ċ import Ġca . void star zero . mar c . group Series Entries Ċ import Ġnor swap . aut umn . DSL Ċ import Ġnor swap . aut umn . Parse Ċ import Ġnor swap . aut umn . Parse State Ċ import Ġnor swap . aut umn . Parser Ċ import Ġnor swap . aut umn . parsers . Abstract Forwarding Ċ import Ġnor swap . aut umn . parsers . Abstract Primitive Ċ import Ġnor swap . aut umn . parsers . Char Predicate Ċ Ċ abstract Ġclass ĠTitle Statement Grammar Ġ: ĠDSL () Ġ{ ĊĊĠĠĠ Ġval Ġstore : ĠParse State < Title Parse Context > Ġ= ĠParse State ( Title Statement Grammar :: class , Ġ:: Title Parse Context ) ĊĊĠĠĠ Ġprivate Ġval ĠREPLACE Ġ= Ġ 0 xff fd . to Char () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMat ches Ġthe Ġexact Ġstring Ġ" Ġ: Ġ" Ġand Ġsets Ġthe Ġcurrent Ġparse Ġcontext Ġstate Ġto ĠOTHER _ INFO . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġcan Ġbe Ġused Ġby Ġsubsequent Ġparses Ġto Ġinterpret Ġwhether Ġparallel Ġdata Ġis Ġparallel ĊĠĠĠĠ Ġ* Ġother Ġinformation , Ġor Ġsome Ġother Ġkind Ġof Ġdata . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcolon : Ġrule Ġ= Ġrule ( ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠAbstract Forwarding ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" colon ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr ("$ REPLACE :$ REPLACE ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect (). action _ with _ string Ġ{ Ġparse , Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse . log . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġstore . data ( parse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold State Ġ= Ġcontext . currentState ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . currentState Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTitle Parse Context . State . OTHER _ INFO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ apply ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . currentState Ġ= Ġold State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. get () ĊĠĠĠĠĠĠĠ Ġ) Ġ{} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMat ches Ġthe Ġexact Ġstring Ġ" Ġ/ Ġ" Ġand Ġsets Ġthe Ġcurrent Ġparse Ġcontext Ġstate Ġto ĠS OR . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġcan Ġbe Ġused Ġby Ġsubsequent Ġparses Ġto Ġinterpret Ġwhether Ġparallel Ġdata Ġis Ġa Ġparallel ĊĠĠĠĠ Ġ* Ġstatement Ġof Ġresponsibility , Ġor Ġsome Ġother Ġkind Ġof Ġdata . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġslash : Ġrule Ġ= Ġrule ( ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠAbstract Forwarding ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" slash ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr ("$ REPLACE /$ REPLACE ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect (). action _ with _ string Ġ{ Ġparse , Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse . log . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġstore . data ( parse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold State Ġ= Ġcontext . currentState ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . currentState Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTitle Parse Context . State . SOR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ apply ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . currentState Ġ= Ġold State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. get () ĊĠĠĠĠĠĠĠ Ġ) Ġ{} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMat ches Ġthe Ġstring Ġ" Ġ= Ġ" Ġexactly . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġequal Sign : Ġrule Ġ= Ġrule ( ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠAbstract Forwarding ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" equal _ sign ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr ("$ REPLACE =$ REPLACE ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect (). action _ with _ string Ġ{ Ġparse , Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse . log . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġstore . data ( parse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Parallel Info Ġ= Ġcontext . parallel Info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . parallel Info Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ apply ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . parallel Info Ġ= Ġold Parallel Info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. get () ĊĠĠĠĠĠĠĠ Ġ) Ġ{} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMat ches Ġthe Ġstring Ġ" Ġ; Ġ" Ġexactly . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsem icolon : Ġrule Ġ= Ġstr ("$ REPLACE ;$ REPLACE ") ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMat ches Ġthe Ġstring Ġ". Ġ" Ġexactly . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġperiod : Ġrule Ġ= Ġstr (". Ġ") ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMat ches Ġthe Ġstring Ġ", Ġ" Ġexactly . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcomma : Ġrule Ġ= Ġstr (", Ġ") ĊĊĠĠĠ Ġval ĠSPECIAL _ CHARS Ġ= ĠlistOf ( REPLACE , Ġ'\ u 0 0 0 0 ', Ġ' Ġ', Ġ'.', Ġ'\ t ', Ġ'\ n ', Ġ'\ r ') ĊĊĠĠĠ Ġval Ġchar : Ġrule Ġ= Ġrule ( Char Predicate (" char ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit Ġ! in ĠSPECIAL _ CHARS . map ( Char :: toInt ) ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġval Ġchar Without Comma : Ġrule Ġ= Ġrule ( Char Predicate (" char Without Comma ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit Ġ! in ĠSPECIAL _ CHARS . plus (',' ). map ( Char :: toInt ) ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMat ches Ġa Ġstring Ġmade Ġup Ġof Ġany Ġcharacters Ġexcept Ġthose Ġin Ġ[ SPECIAL _ CHARS ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠP ushes Ġthe Ġmatched Ġstring Ġonto Ġthe Ġparser 's Ġvalue Ġstack . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġdata : Ġrule Ġ= Ġchar . at _ least ( 1 ). sep ( 0 , Ġusual _ whitespace ) ĊĠĠĠĠĠĠĠ Ġ. push ( with _ string Ġ{ Ġ_, Ġ_, Ġmatch Ġ-> Ġmatch . replace (" ___ ", Ġ"... ") Ġ}) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMat ches Ġa Ġstring Ġmade Ġup Ġof Ġany Ġcharacters Ġexcept Ġcommas Ġand Ġthose Ġin Ġ[ SPECIAL _ CHARS ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠP ushes Ġthe Ġmatched Ġstring Ġonto Ġthe Ġparser 's Ġvalue Ġstack . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġdata Without Comma : Ġrule Ġ= Ġchar Without Comma . at _ least ( 1 ). sep ( 0 , Ġusual _ whitespace ) ĊĠĠĠĠĠĠĠ Ġ. push ( with _ string Ġ{ Ġ_, Ġ_, Ġmatch Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatch ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMat ches Ġa Ġsequence Ġof Ġ[ equal Sign ] Ġfollowed Ġby Ġa Ġstring Ġof Ġcharacters . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠUses Ġthe Ġcurrent Ġparse Ġstate Ġto Ġdetermine Ġif Ġthe Ġmatched Ġstrings Ġare Ġother Ġtitle ĊĠĠĠĠ Ġ* Ġinformation Ġor Ġstatements Ġof Ġresponsibility . ĠP ushes Ġa Ġ[ NodeList ] Ġof Ġeither ĊĠĠĠĠ Ġ* Ġ[ Parallel Other Info ] Ġor Ġ[ Parallel SOR ] Ġto Ġthe Ġparser 's Ġvalue Ġstack Ġaccordingly . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġparallel DataList : Ġrule Ġ= Ġrule ( ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠAbstract Forwarding ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" parallel _ data ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseq ( equal Sign , Ġdata ). at _ least ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect (). action _ with _ string Ġ{ Ġparse , Ġitems , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġstore . data ( parse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto Push : ĠNode List ? Ġ= Ġwhen Ġ( context . currentState ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTitle Parse Context . State . OTHER _ INFO Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNode List ( items . filter NotNull (). map Ġ{ ĠParallel Other Info ( it Ġas ĠString ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTitle Parse Context . State . SOR Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNode List ( items . filter NotNull (). map Ġ{ ĠParallel SOR ( it Ġas ĠString ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse . stack . push ( to Push ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. get () ĊĠĠĠĠĠĠĠ Ġ) Ġ{} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġgeneric Ġfunction Ġthat Ġdefines Ġa Ġparser Ġto Ġmatch Ġa Ġ[ colon ] Ġfollowed ĊĠĠĠĠ Ġ* Ġby Ġa Ġstring Ġof Ġcharacters Ġand Ġpush Ġthe Ġresult Ġas Ġthe Ġgiven ĠAST Ġnode ĊĠĠĠĠ Ġ* Ġtype Ġto Ġthe Ġparser 's Ġvalue Ġstack . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠNode > Ġother Info OfType ( node Constructor : Ġ( String ) Ġ-> ĠT ): Ġrule Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġseq ( colon , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. push Ġ{ Ġitems Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode Constructor ( items [ 0 ] Ġas ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġgeneric Ġfunction Ġthat Ġdefines Ġa Ġparser Ġto Ġmatch Ġa Ġ[ slash ] Ġfollowed ĊĠĠĠĠ Ġ* Ġby Ġa Ġstring Ġof Ġcharacters Ġand Ġpush Ġthe Ġresult Ġas Ġthe Ġgiven ĠAST Ġnode Ġtype ĊĠĠĠĠ Ġ* Ġto Ġthe Ġparser 's Ġvalue Ġstack . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠNode > Ġsor OfType ( node Constructor : Ġ( String ) Ġ-> ĠT ): Ġrule Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġseq ( slash , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. push Ġ{ Ġitems Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode Constructor ( items [ 0 ] Ġas ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġgeneric Ġfunction Ġthat Ġdefines Ġa Ġparser Ġto Ġmatch Ġa Ġsequence Ġof Ġstrings ĊĠĠĠĠ Ġ* Ġseper ated Ġby Ġ[ sem icolon ] Ġand Ġpush Ġthe Ġresult Ġas Ġthe Ġgiven ĠAST Ġnode Ġtype ĊĠĠĠĠ Ġ* Ġto Ġthe Ġparser 's Ġvalue Ġstack . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠNode > Ġadditional SOR OfType ( node Constructor : Ġ( String ) Ġ-> ĠT ): Ġrule Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġseq ( sem icolon , Ġdata ). at _ least ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. push Ġ{ Ġitems Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNode List ( items . filter NotNull (). map Ġ{ Ġnode Constructor ( it Ġas ĠString ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġcustom Ġparser Ġwhose Ġpurpose Ġis Ġto Ġsave Ġthe Ġgiven ĠM ARC Ġdata Ġin Ġthe Ġparser 's Ġcontext ĊĠĠĠĠ Ġ* Ġso Ġthat Ġit Ġcan Ġbe Ġreferenced Ġduring Ġthe Ġparse . ĠIt Ġdoesn 't Ġconsume Ġany Ġinput Ġand Ġalways ĊĠĠĠĠ Ġ* Ġ" matches ". ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠSave Mar c Data ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm arc Data : ĠM ARC Field ĊĠĠĠ Ġ) Ġ: ĠAbstract Primitive (" save _ mar c _ data ", Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdop arse ( parse : ĠParse ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġstore . data ( parse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . mar c Data Ġ= Ġm arc Data ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠSeries Entry From Mar c Ġ: ĠParser () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġchildren (): ĠMutable Iterable < Parser > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdop arse ( parse : ĠParse ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġstore . data ( parse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm arc Data Ġ= Ġcontext . mar c Data ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mar c Data Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġcontext . mar c Data Series Entry Group Ġ>= Ġm arc Data . group Series Entries (). size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parse . pos Ġ< Ġparse . string . length Ġ&& Ġparse . string [ parse . pos ] Ġ== Ġ' Ġ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse . pos Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseries Entry Fields Ġ= Ġm arc Data ?. group Series Entries () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . get ( context . mar c Data Series Entry Group ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġempty List () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Str Ġ= Ġseries Entry Fields . first OrNull Ġ{ Ġit . first Ġ== Ġ' p ' Ġ} ?. second ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġremove Extra Input ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdes ig Str Ġ= Ġseries Entry Fields . first OrNull Ġ{ Ġit . first Ġ== Ġ' n ' Ġ} ?. second ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġremove Extra Input ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġtitle Str ?. let Ġ{ ĠSeries Entry Title ( clean ( it )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdesign ation Ġ= Ġdes ig Str ?. let Ġ{ ĠSeries Entry Design ation ( clean ( it )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatch Start Ġ= Ġ( de sig Str Ġ?: Ġtitle Str )?. let Ġ{ Ġclean ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( match Start Ġ!= Ġnull Ġ&& Ġ! parse . string . substring ( parse . pos ). startsWith ( match Start )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse . stack . push ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse . stack . push ( designation ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse . pos Ġ+= Ġ( title Str ?. length Ġ?: Ġ 0 ) Ġ+ Ġ( de sig Str ?. length Ġ?: Ġ 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( title Str Ġ!= Ġnull Ġ&& Ġdes ig Str Ġ!= Ġnull Ġ&& Ġparse . pos Ġ< Ġparse . string . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse . pos Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parse . pos Ġ>= Ġparse . string . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse . pos Ġ= Ġparse . string . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinitial Series Entry Group Ġ= Ġcontext . mar c Data Series Entry Group ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse . log . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . mar c Data Series Entry Group Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ apply ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . mar c Data Series Entry Group Ġ= Ġinitial Series Entry Group ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString Full (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" series _ entries _ from _ mar c " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġremove Extra Input ( str : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. substring Before (" Ġ: ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. substring Before (" Ġ/ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. substring Before (" Ġ= ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġclean ( str : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstr . trim (' Ġ', Ġ', ', Ġ'.') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġws Ġ= Ġusual _ whitespace ĊĠĠĠĠĠĠĠ Ġmake _ rule _ names () ĊĠĠĠ Ġ} Ċ }