/* Ċ Ġ* ĠThis ĠSource ĠCode ĠForm Ġis Ġsubject Ġto Ġthe Ġterms Ġof Ġthe ĠMozilla ĠPublic Ċ Ġ* ĠLicense , Ġv . Ġ 2 . 0 . ĠIf Ġa Ġcopy Ġof Ġthe ĠM PL Ġwas Ġnot Ġdistributed Ġwith Ġthis Ċ Ġ* Ġfile , ĠYou Ġcan Ġobtain Ġone Ġat Ġhttps :// mozilla . org / MPL / 2 . 0 /. Ċ Ġ*/ Ċ Ċ package Ġcom . kot l ind is cord . k ord . extensions . parsers Ċ Ċ import Ġcom . kot l ind is cord . k ord . extensions . builders . Ext ensible Bot Builder Ċ import Ġcom . kot l ind is cord . k ord . extensions . i 1 8 n . Translations Provider Ċ import Ġorg . k oin . core . component . K oin Component Ċ import Ġorg . k oin . core . component . inject Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠObject Ġin Ġcharge Ġof Ġparsing Ġstrings Ġinto Ġ[ Boolean ] s Ġusing Ġterms Ġdefined Ġin Ġthe Ġgiven Ġlocale 's Ġtranslations , Ġfalling Ċ Ġ* Ġback Ġto Ġthe Ġbot 's Ġdefault Ġlocale Ġif Ġthe Ġinput Ġdoesn 't Ġmatch . Ċ Ġ* Ċ Ġ* ĠThe Ġrelevant Ġtranslations Ġkeys Ġare : Ċ Ġ* Ċ Ġ* Ġ* Ġ` utils . string . false ` Ġfor Ġ` false ` Ġvalues Ċ Ġ* Ġ* Ġ` utils . string . true ` Ġfor Ġ` true ` Ġvalues Ċ Ġ* Ċ Ġ* ĠTrans lations Ġmay Ġbe Ġsplit Ġusing Ġcommas , Ġin Ġwhich Ġcase Ġany Ġof Ġthe Ġgiven Ġvalues Ġwill Ġbe Ġsuitable . Ċ Ġ*/ Ċ public Ġobject ĠBoolean Parser Ġ: ĠK oin Component Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtranslations : ĠTrans lations Provider Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġsettings : ĠExt ensible Bot Builder Ġby Ġinject () ĊĊĠĠĠ Ġprivate Ġval Ġvalue Cache : ĠMutable Map < Locale , ĠPair < List < String >, ĠList < String >>> Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠParse Ġthe Ġgiven Ġstring Ġinto Ġa Ġ[ Boolean ] Ġbased Ġon Ġthe Ġtranslations Ġfor Ġthe Ġgiven Ġlocale . ĠF alls Ġback Ġto Ġthe Ġbot 's ĊĠĠĠĠ Ġ* Ġdefault Ġlocale Ġas Ġrequired . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġparse ( input : ĠString , Ġlocale : ĠLocale ): ĠBoolean ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Cache [ locale ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrue Values Ġ= Ġtranslations . translate (" utils . string . true ", Ġlocale ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. split (',') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . trim () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfalse Values Ġ= Ġtranslations . translate (" utils . string . false ", Ġlocale ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. split (',') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . trim () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Cache [ locale ] Ġ= Ġtrue Values Ġto Ġfalse Values ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġ( true Values , Ġfalse Values ) Ġ= Ġvalue Cache [ locale ] !! ĊĠĠĠĠĠĠĠ Ġval Ġlower Input Ġ= Ġinput . lowercase () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Values . contains ( lower Input ) Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Values . contains ( lower Input ) Ġ-> Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġ== Ġnull Ġ&& Ġlocale Ġ!= Ġsettings . i 1 8 n Builder . default Locale ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTry Ġit Ġagain Ġin Ġthe Ġdefault Ġlocale Ġas Ġa Ġfallback ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġparse ( input , Ġsettings . i 1 8 n Builder . default Locale ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ } Ċ