package Ġprime . combinator . pas ers . implement ations Ċ import Ġprime . combinator . pas ers . Parsed Ċ import Ġprime . combinator . pas ers . Parsed Result Ċ import Ġprime . combinator . pas ers . implement ations . English Digit . English Digit Parsed Ċ import Ġkotlin . Long Ċ Ċ /** Ċ Ġ* ĠEnglish Digit Ġallows Ġparsing Ġonly Ġdigits Ġ' 1 ' .. ' 9 ' Ċ Ġ* ĠExample : Ċ Ġ* Ġ Ġaim : Ġwe Ġwant Ġparse Ġonly Ġdigits Ċ Ġ* Ġ Ġhow Ġto Ġreach : Ġ ĠEnglish Digit (). parse (" 1 "). get () Ċ Ġ* Ġ Ġresult : Ġsuccessfully Ġparsed Ġdigit Ġ" 1 ". Ċ Ġ* Ċ Ġ* Ġ@ License : ĠApache - 2 . 0 Ċ Ġ* Ġ@ source : Ġhttps :// github . com / f ant ae v roman / prime Combin ator Ċ Ġ* Ġ@ author : ĠRoman ĠF ant ae v Ċ Ġ* Ġ@ contact : ĠF ant ae v R oman @ gmail . com Ċ Ġ* Ġ@ since Ġ 2 0 2 1 Ċ Ġ*/ Ċ class ĠEnglish Digit Ġ: ĠEnd Of Input Parser < English Digit Parsed >() Ġ{ ĊĠĠĠ Ġinner Ġclass ĠEnglish Digit Parsed ( val Ġdigit : ĠShort , Ġprevious : ĠParsed , Ġindex End : ĠLong ) Ġ: ĠParsed ( previous , Ġindex End ) ĊĊĠĠĠ Ġoverride Ġfun Ġparse Next ( previous : ĠParsed ): ĠParsed Result < English Digit Parsed > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnext Ġ= Ġprevious . text . toCharArray ()[ previous . currentIndex (). toInt ()] ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ((( next Ġin Ġ' 1 ' .. ' 9 '))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠParsed Result . as Success ( English Digit Parsed ( next . toString (). to Short (), Ġprevious , Ġprevious . currentIndex ())) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠParsed Result . as Error (" Can 't Ġparse ĠEnglish Ġdigit Ġrequired :[ 1 .. 9 ] Ġbut Ġwas : [$ next ]") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ