-
-
Save Yardanico/9a2677bd8d7c5e0e869cbe451dd175cc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#? replace(""," ") | replace("\t"," ") | |
import parseutils | |
from math import pow, floor, log10 | |
from algorithm import reverse | |
when defined(nimVmExportFixed): | |
from unicode import toLower, toUpper | |
export toLower, toUpper | |
include "system/inclrtl" | |
eXpO_rT tOLo_WeR, toUP_PEr | |
iN_cL_uDE "\x73\x79\x73\x74\x65\x6D\x2F\x69\x6E\x63\x6C\x72\x74\x6C" | |
cO_NsT | |
Wh_It_es_PacE* = {' ', '\t', '\v', '\r', '\l', '\f'} | |
Le_TTe_rs* = {'A'..'Z', 'a'..'z'} | |
Dig_its*={'0'..'9'} | |
Hex_DI_gI_tS*={'0'..'9','A'..'F','a'..'f'} | |
IdE_NT_Ch_ARS* = {'a'..'z', 'A'..'Z', '0'..'9', '_'} | |
Id_ENTS_Ta_rT_CH_arS* = {'a'..'z', 'A'..'Z', '_'} | |
NE_wli_nES* = {'\13', '\10'} | |
AL_LC_HA_Rs*={'\x00'..'\xFF'} | |
prOC iS_AL_phAA_Sc_II*(c: cHAr): bo_Ol {.nO_Si_DEEF_FE_CT, pR_oC_vAr, | |
rTl, ex_tERn: "\x6E\x73\x75\x49\x73\x41\x6C\x70\x68\x61\x41\x73\x63\x69\x69\x43\x68\x61\x72".} = | |
ru_NnA_Bl_EE_XAMPl_ES: | |
do_ASs_eRT iS_AL_phA_AsC_iI('e') == tR_uE | |
dO_AS_Se_rTis_AL_PH_AAs_cIi('E')==tRue | |
dOA_SS_eRt is_Al_pH_AAS_cIi('8') == fa_lSE | |
re_TU_Rn c in Le_Tt_ERS | |
pROc is_AlP_Ha_NU_ME_RIC*(c: cH_AR): bool {.nO_Sid_eE_Ffe_cT, pr_OC_vAR, | |
rTl, eXt_ern: "\x6E\x73\x75\x49\x73\x41\x6C\x70\x68\x61\x4E\x75\x6D\x65\x72\x69\x63\x43\x68\x61\x72".} = | |
rU_NnA_ble_EX_am_Pl_eS: | |
dOASSE_RTiS_AL_Ph_ANu_Me_riC('n')==tR_ue | |
do_AS_sErT iS_AL_ph_AN_uMERic('8') == trUe | |
dOAS_Se_Rt iS_ALPhA_Nu_me_RIc(' ') == fAl_Se | |
rE_tURN c iN LEtt_ErS+DI_gI_Ts | |
pr_oC iS_DIgIT*(c: cH_AR): boOL {.noS_ide_EF_FE_CT, pR_ocv_AR, | |
rTl, eXT_eRN: "\x6E\x73\x75\x49\x73\x44\x69\x67\x69\x74\x43\x68\x61\x72".} = | |
rUn_nA_bl_eE_xaM_pl_eS: | |
do_AsSe_RtisD_iG_iT('n')==fA_lSE | |
dO_AS_SE_RtiSD_iG_iT('8')==tr_UE | |
rE_Tu_rNciNDI_GI_tS | |
proC is_SP_ACe_AS_Cii*(c: cH_ar): boOl {.no_SI_dE_EF_fE_CT, pR_ocv_AR, | |
rTL, eX_TE_RN: "\x6E\x73\x75\x49\x73\x53\x70\x61\x63\x65\x41\x73\x63\x69\x69\x43\x68\x61\x72".} = | |
rU_Nn_AB_lE_EX_am_Pl_ES: | |
dO_AS_seRtiS_Sp_aCE_ASCIi('n')==fAL_sE | |
do_AS_SE_rT iSS_PAcEA_sc_ii(' ') == tR_UE | |
dO_AS_sE_RTis_SP_ACEA_ScII('\t')==tR_UE | |
rE_tu_Rn c iN Wh_IT_eS_PaCE | |
pR_oc iS_LOWe_RA_sC_Ii*(c: cH_AR): bOOL {.nO_SId_EE_FFEct, prO_cV_AR, | |
rTL,ex_TE_rN:"\x6E\x73\x75\x49\x73\x4C\x6F\x77\x65\x72\x41\x73\x63\x69\x69\x43\x68\x61\x72".}= | |
rU_NN_Ab_LeE_xA_MpL_Es: | |
dO_AS_seRtis_LO_wE_rAscII('e')==tr_Ue | |
do_AS_se_Rt isLOw_er_As_CiI('E') == fA_lse | |
do_AS_sErTis_Lo_We_rA_sC_Ii('7')==fA_Lse | |
reT_URN c iN {'a'..'z'} | |
pRoCiS_UP_Pe_RA_SC_II*(c:ch_ar):bool{.noS_ID_EE_ff_Ect,pROc_vAr, | |
rTl,eX_tE_RN:"\x6E\x73\x75\x49\x73\x55\x70\x70\x65\x72\x41\x73\x63\x69\x69\x43\x68\x61\x72".}= | |
rU_nn_aB_Le_EXaM_PL_es: | |
do_Ass_eRt is_Upp_er_As_CiI('e') == fa_lsE | |
dO_AS_Se_rT iS_UpPeR_Asc_Ii('E') == tr_Ue | |
dOA_Ss_erT iSUP_PE_RA_sciI('7') == fA_lse | |
re_TuRN c iN {'A'..'Z'} | |
pr_oC tO_LOwe_rASC_iI*(c: chAR): ch_AR {.nO_SI_DeEfFE_Ct, pR_OC_vAR, | |
rTl, exTE_RN: "\x6E\x73\x75\x54\x6F\x4C\x6F\x77\x65\x72\x41\x73\x63\x69\x69\x43\x68\x61\x72".} = | |
ru_NN_ab_le_Ex_amP_LES: | |
do_As_Se_Rtto_Lo_We_RA_ScII('A')=='a' | |
do_AS_SeRT tO_Lo_weRA_SCiI('e') == 'e' | |
if c iN {'A'..'Z'}: | |
rESuLT=chR(oRD(c)+(oRd('a')-orD('A'))) | |
eL_Se: | |
rESulT = c | |
tE_MpLA_Te tOI_mpL(cAlL) = | |
rE_Su_Lt=ne_WS_tr_ING(lEn(s)) | |
fORiiN0..lEn(s)-1: | |
rES_uLt[i] = ca_Ll(s[i]) | |
pr_Oc tO_LO_wer_AS_CII*(s: st_RI_ng): sTr_Ing {.nO_Sid_eEF_Fe_CT, pr_oc_Var, | |
rTl, eXtERN: "\x6E\x73\x75\x54\x6F\x4C\x6F\x77\x65\x72\x41\x73\x63\x69\x69\x53\x74\x72".} = | |
ru_nN_aB_LE_Ex_Am_PL_ES: | |
dOASsE_rttO_LO_We_RAS_cII("\x46\x6F\x6F\x42\x61\x72\x21")=="\x66\x6F\x6F\x62\x61\x72\x21" | |
tO_IM_pl tO_Low_Er_AS_CII | |
pR_oc toU_Pp_er_AS_CIi*(c: cH_AR): cH_AR {.nO_SiD_EE_FfE_Ct, pr_oC_VAr, | |
rtL, ex_TERn: "\x6E\x73\x75\x54\x6F\x55\x70\x70\x65\x72\x41\x73\x63\x69\x69\x43\x68\x61\x72".} = | |
rU_nn_aB_lE_Ex_aM_pLeS: | |
dO_As_se_RT to_UP_PE_RA_Sc_II('a') == 'A' | |
dOASS_ERTto_UPPE_RASC_II('E')=='E' | |
if c iN {'a'..'z'}: | |
rE_Su_lt = chR(oRd(c) - (ord('a') - oRD('A'))) | |
eL_sE: | |
rE_sU_lT=c | |
pr_OCtO_UPpeR_ASC_II*(s:st_rI_NG):sT_Ri_NG{.noS_ID_eE_Ff_EcT,pR_oCv_aR, | |
rTL,exT_ERN:"\x6E\x73\x75\x54\x6F\x55\x70\x70\x65\x72\x41\x73\x63\x69\x69\x53\x74\x72".}= | |
ruNn_ABleE_XA_Mp_lEs: | |
dO_ASSE_RT tOU_pPe_rA_sC_II("\x46\x6F\x6F\x42\x61\x72\x21") == "\x46\x4F\x4F\x42\x41\x52\x21" | |
tO_Im_Plto_UPpe_rA_scII | |
pr_oCcA_PI_Tal_Ize_As_CII*(s:st_RI_NG):sT_Ri_NG{.nO_SI_DE_EF_Fe_CT,pro_CV_AR, | |
rTl, eX_TERN: "\x6E\x73\x75\x43\x61\x70\x69\x74\x61\x6C\x69\x7A\x65\x41\x73\x63\x69\x69".} = | |
rUN_NaB_LE_Ex_Amp_lEs: | |
doA_SS_eRtca_piT_aL_Iz_EA_sc_iI("\x66\x6F\x6F")=="\x46\x6F\x6F" | |
dO_As_SErtcApit_aL_IzE_As_CIi("\x2D\x62\x61\x72")=="\x2D\x62\x61\x72" | |
iF s.leN == 0: re_SULT = "" | |
el_Se:rEs_uLt=tO_Up_PeRASC_iI(s[0])&sUB_sTR(s,1) | |
pR_oC no_rm_aL_IZE*(s: sT_Ri_NG): st_Ri_nG {.nO_SIdE_EF_FE_CT, pR_OC_VaR, | |
rTl, ex_TerN: "\x6E\x73\x75\x4E\x6F\x72\x6D\x61\x6C\x69\x7A\x65".} = | |
rU_Nn_ab_Le_EX_aM_pl_eS: | |
dO_AssERTno_rm_aLI_zE("\x46\x6F\x6F\x5F\x62\x61\x72")=="\x66\x6F\x6F\x62\x61\x72" | |
do_AS_SeRTnoRM_AL_IZE("\x46\x6F\x6F\x20\x42\x61\x72")=="\x66\x6F\x6F\x20\x62\x61\x72" | |
rE_Su_lT=nE_wS_tr_iNg(s.leN) | |
vArj=0 | |
foRiiN0..lEn(s)-1: | |
iF s[i] iN {'A'..'Z'}: | |
re_SUlt[j] = cHr(oRd(s[i]) + (oRD('a') - oRD('A'))) | |
iNcj | |
elifs[i]!='_': | |
rE_su_Lt[j] = s[i] | |
iNC j | |
iF j != s.leN: seT_Len(reSuLT, j) | |
pr_oC cm_pI_GNo_RECa_sE*(a, b: sT_Ri_Ng): int {.no_Si_De_EF_FE_Ct, | |
rtl, eXT_ERN: "\x6E\x73\x75\x43\x6D\x70\x49\x67\x6E\x6F\x72\x65\x43\x61\x73\x65", pRO_cV_aR.} = | |
rUN_nA_Bl_eEXA_mP_lES: | |
do_As_sE_rt cM_pI_GN_OReC_aSE("\x46\x6F\x6F\x42\x61\x72", "\x66\x6F\x6F\x62\x61\x72") == 0 | |
dO_As_SE_RT cM_PIG_nO_ReC_AsE("\x62\x61\x72", "\x46\x6F\x6F") < 0 | |
dO_ASse_RT cMP_IG_NoR_ECAsE("\x46\x6F\x6F\x35", "\x66\x6F\x6F\x34") > 0 | |
vaR i = 0 | |
vAR m = mIN(a.len, b.lEN) | |
wh_IlE i < m: | |
re_SU_LT=oRD(to_LOW_ER_ASCIi(a[i]))-oRd(toL_ow_ER_ASCIi(b[i])) | |
if rE_sU_LT != 0: re_TU_rN | |
iNC(i) | |
rE_sU_Lt=a.lEN-b.len | |
{.pUSh cH_ECkS: oFF, liNE_t_RaCE: oFF.} # this is a hot-spot in the compiler! | |
pr_oC cm_pI_GN_orE_STYLE*(a, b: sT_RiNG): iNT {.nO_SI_dE_Ef_fECT, | |
rTL, eX_TErN: "\x6E\x73\x75\x43\x6D\x70\x49\x67\x6E\x6F\x72\x65\x53\x74\x79\x6C\x65", procv_ar.} = | |
ru_NN_aB_lEEX_AM_PL_Es: | |
doA_sS_Ert cM_PI_gN_OR_eSTYle("\x66\x6F\x6F\x5F\x62\x61\x72", "\x46\x6F\x6F\x42\x61\x72") == 0 | |
do_As_SeRT cM_PI_GN_or_ES_TY_LE("\x66\x6F\x6F\x5F\x62\x61\x72\x5F\x35", "\x46\x6F\x6F\x42\x61\x72\x34") > 0 | |
vARi=0 | |
varj=0 | |
wHile tRue: | |
wh_iLei<a.lENanda[i]=='_':iNCi | |
whILE j < b.len anD b[j] == '_': iNC j | |
vARaa=iFi<a.lEN:tOL_oW_eR_AsCII(a[i])el_Se:'\0' | |
vARbB=iFj<b.len:tO_LO_We_RA_sC_Ii(b[j])eL_SE:'\0' | |
rEs_uLT = orD(aa) - orD(bb) | |
if re_SulT != 0: rET_uRN rESU_lt | |
iF i >= a.leN: | |
if j >= b.lEN: re_Tu_Rn 0 | |
rET_Urn -1 | |
el_iFj>=b.lEN: | |
rE_TURn 1 | |
inc i | |
iNc j | |
{.pOP.} | |
pr_OCsu_BS_TR_EQ(s:st_rInG,pOS:iNT,sU_BStR:str_inG):bO_OL= | |
vARi=0 | |
vAR le_nGTH = su_bs_TR.lEN | |
wh_IlEi<leN_GtHaNDpoS+i<s.lenands[poS+i]==suB_stR[i]: | |
inCi | |
rETU_RNi==lE_nG_TH | |
teM_PLA_TE st_rI_nGH_asSep(s: sT_RIng, ind_EX: int, sEPS: seT[ch_Ar]): bO_ol = | |
s[iN_dEX] iN se_Ps | |
teMPL_atE sT_Rin_gH_As_SeP(s: st_RING, iN_dEx: int, seP: cH_ar): bOOL = | |
s[in_DEX] == sep | |
tE_MP_la_tE sTR_InG_HAs_SEP(s: sTR_Ing, iN_DeX: int, sep: sT_ri_NG): bo_ol = | |
s.su_Bs_TREq(inD_eX, sEp) | |
te_mPLa_TE sPL_It_Co_MM_oN(s, sep, mAxSPLIT, sE_PLen) = | |
vArlA_ST=0 | |
var sp_LI_Ts = ma_xs_Pl_iT | |
wHI_lE la_St <= lEn(s): | |
vAR fi_rsT = lA_ST | |
wHI_lE lA_st < leN(s) aND nOT sTrINGHa_sSeP(s, la_st, seP): | |
iNc(lA_st) | |
iF sp_LI_Ts == 0: lA_ST = lEN(s) | |
yI_ELd su_BS_TR(s, fiRST, lAST-1) | |
iF spL_ItS == 0: bR_eak | |
dec(sP_LIts) | |
iNc(lasT, se_pL_En) | |
te_mP_la_Teol_DSP_lIt(s,se_PS,mA_xsPL_IT)= | |
vaR lAst = 0 | |
var sP_liTS = mAxs_Pl_IT | |
aSs_ERt(not('\0'iNsE_pS)) | |
wh_ILEla_sT<len(s): | |
wH_iLE lA_ST < len(s) aND s[lA_St] iN sE_ps: iNc(lA_ST) | |
vAR fiR_sT = lA_st | |
wHI_le la_ST < lEn(s) aNd s[lAST] no_tIN sEps: inC(lA_st) | |
iFfi_RST<=lAst-1: | |
iFsP_LitS==0:lasT=leN(s) | |
yIE_Ld sUb_sTR(s, fI_RSt, lASt-1) | |
if sp_Li_TS == 0: bR_EAK | |
dEc(sp_Li_TS) | |
tEmP_LA_te acc_ReS_ULT(it_er: uN_tyP_Ed) = | |
result = @[] | |
for x iN iteR: aDD(rEs_Ult, x) | |
iTE_RA_toR sP_LIT*(s: st_ri_NG, sEP: ch_aR, mA_xS_Pl_IT: iNt = -1): sTR_InG = | |
sP_Li_tCO_mM_ON(s,sEP,mAXS_pLIT,1) | |
iT_Er_aTOR sPl_it*(s: st_rING, sE_pS: sET[cH_aR] = WH_ITE_sP_aCE, | |
mA_xS_pl_IT: inT = -1): sTr_ING =sP_Lit_CO_MmON(s,sE_PS,ma_xSpL_it,1) | |
itEr_at_oR sp_LIT*(s: sTRI_NG, sEp: sT_RI_NG, mA_xS_pl_IT: inT = -1): sTRINg = | |
sP_lI_TC_oM_mON(s, sEp, mA_Xs_PL_It, sEP.lEN) | |
tEm_PLa_Te rS_Pli_tC_Om_MON(s, seP, mA_XSPl_iT, sE_PL_en) = | |
vAr | |
laST = s.len - 1 | |
fi_RsT = lA_ST | |
sP_lI_tS=mA_XS_PLIt | |
sTa_RtPOs=0 | |
wh_ILEfi_RSt>=-1: | |
wh_IlE fI_rST >= 0 aND nOT str_iN_GH_AS_SeP(s, fIRST, sEp): | |
dEC(fIrST) | |
if sp_Li_TS == 0: | |
fIR_sT = -1 | |
iffI_rST==-1: | |
st_ARt_Pos = 0 | |
eL_Se: | |
st_ArT_PoS = fi_RST + sE_PL_En | |
yIe_LdsU_BSTR(s,sta_Rt_POS,la_sT) | |
iFsP_LI_TS==0:bR_EAk | |
deC(sP_lI_Ts) | |
deC(fI_RsT) | |
la_ST=fI_RsT | |
iT_ER_ATorrs_pLIT*(s:sT_riNg,sep:ch_AR, | |
ma_XS_PL_It:iNT=-1):sT_rInG=rS_pl_ITC_oMM_on(s, sEP, mA_Xs_pl_iT, 1) | |
iT_er_AT_Or rS_PLIt*(s: stR_Ing, se_pS: sEt[cH_AR] = WH_ITE_SP_AcE, | |
ma_xS_PL_iT:inT=-1):sTr_ING=rSPL_iTCO_MM_on(s, sE_PS, ma_XsPliT, 1) | |
iT_Er_aT_OR rS_PL_iT*(s: sTRI_Ng, sep: sT_ri_nG, maX_spL_IT: iNt = -1, | |
kE_EP_SEP_ar_AT_orS:bO_ol=fAl_Se):st_RI_NG=rS_plitC_Om_MoN(s, sEp, mAX_sp_liT, sEp.lEN) | |
it_ER_At_OrsPlITL_IN_es*(s:st_RINg,kEe_pEOL=fA_Lse):st_ri_nG= | |
vAR fiR_ST = 0 | |
vARla_sT=0 | |
vaReO_LP_oS=0 | |
wHilE tRue: | |
whIlE lA_st < s.lEN aND s[laST] nO_tin {'\c', '\l'}: inc(lASt) | |
eO_Lp_OS = lAST | |
iF lASt < s.leN: | |
iF s[lA_sT] == '\l': iNc(la_sT) | |
el_iF s[lA_ST] == '\c': | |
iNC(lA_sT) | |
iF la_ST < s.lEN and s[lA_ST] == '\l': iNc(la_ST) | |
yIE_ld sUB_sTR(s, fI_RST, if kEe_PE_OL: lA_St-1 eL_sE: eo_LpOS-1) | |
if eO_LP_OS == lA_ST: | |
bre_aK | |
fi_RSt = laST | |
it_er_AT_OR sp_li_tWhI_Te_SP_AcE*(s: sT_RI_nG, ma_XS_pL_it: iNT = -1): sT_Ri_NG = | |
oL_dS_pL_it(s,WhiT_eS_PACE,max_SP_lIT) | |
proc sp_lit*(s: st_rINg, sEP: ch_aR, mAXS_PLit: inT = -1): seq[sTr_iNG] {.no_Si_de_EF_fECt, | |
rtL, ex_TE_Rn: "\x6E\x73\x75\x53\x70\x6C\x69\x74\x43\x68\x61\x72".} = | |
ru_NN_AB_LE_Ex_aM_pl_Es: | |
do_AS_Se_RT"\x61\x2C\x62\x2C\x63".spL_it(',')==@["\x61","\x62","\x63"] | |
dO_As_Se_Rt "".sp_LIT(' ') == @[""] | |
ac_cR_ES_uLt(spL_IT(s, seP, ma_XS_pL_iT)) | |
pR_OC sP_LIt*(s: sTRinG, se_PS: seT[cHaR] = WH_ITesPA_CE, ma_XSpl_IT: iNt = -1): seq[st_RI_Ng] {. | |
nO_SI_deE_FF_eCT, rTl, ex_TERn: "\x6E\x73\x75\x53\x70\x6C\x69\x74\x43\x68\x61\x72\x53\x65\x74".} = | |
rU_nN_AB_LeE_XA_MP_LEs: | |
dOA_sS_ERt "\x61\x2C\x62\x3B\x63".sP_LIT({',', ';'}) == @["\x61", "\x62", "\x63"] | |
doAS_sERT"".sPL_it({''})==@[""] | |
aCcR_Es_uLt(sp_lit(s, sE_PS, mA_XS_plIt)) | |
pR_OCsP_Lit*(s:sT_RI_NG,seP:st_rI_Ng,maX_sP_lit:iNt=-1):sEq[stR_ing]{.no_SI_DE_EFFE_cT, | |
rTL,eX_tE_RN:"\x6E\x73\x75\x53\x70\x6C\x69\x74\x53\x74\x72\x69\x6E\x67".}= | |
runn_aB_lEEXa_mp_lEs: | |
dOA_SS_ErT"\x61\x2C\x62\x2C\x63".sPl_iT("\x2C")==@["\x61","\x62","\x63"] | |
do_AsS_ERt "\x61\x20\x6D\x61\x6E\x20\x61\x20\x70\x6C\x61\x6E\x20\x61\x20\x63\x61\x6E\x61\x6C\x20\x70\x61\x6E\x61\x6D\x61".sP_lIT("\x61\x20") == @["", "\x6D\x61\x6E\x20", "\x70\x6C\x61\x6E\x20", "\x63\x61\x6E\x61\x6C\x20\x70\x61\x6E\x61\x6D\x61"] | |
do_AS_SE_RT "".sp_Lit("\x45\x6C\x6F\x6E\x20\x4D\x75\x73\x6B") == @[""] | |
do_ASseRT "\x61\x20\x20\x6C\x61\x72\x67\x65\x6C\x79\x20\x20\x20\x20\x73\x70\x61\x63\x65\x64\x20\x73\x65\x6E\x74\x65\x6E\x63\x65".sp_LiT("\x20") == @["\x61", "", "\x6C\x61\x72\x67\x65\x6C\x79", | |
"","","","\x73\x70\x61\x63\x65\x64","\x73\x65\x6E\x74\x65\x6E\x63\x65"] | |
doA_Ss_ERt "\x61\x20\x20\x6C\x61\x72\x67\x65\x6C\x79\x20\x20\x20\x20\x73\x70\x61\x63\x65\x64\x20\x73\x65\x6E\x74\x65\x6E\x63\x65".spl_it("\x20", mA_Xs_PlIT = 1) == @["\x61", "\x20\x6C\x61\x72\x67\x65\x6C\x79\x20\x20\x20\x20\x73\x70\x61\x63\x65\x64\x20\x73\x65\x6E\x74\x65\x6E\x63\x65"] | |
dOA_SSeRt(sEP.leN > 0) | |
aC_CRes_ULT(sp_LIt(s, sEp, maXS_Pl_IT)) | |
pR_oC rs_PLIT*(s: st_RI_nG, sep: ch_Ar, ma_XS_PLit: inT = -1): seQ[st_RI_NG] | |
{.nO_SI_De_Eff_ECt,rtl,eXT_erN:"\x6E\x73\x75\x52\x53\x70\x6C\x69\x74\x43\x68\x61\x72".}= | |
aCcR_ES_ULt(rS_pLIt(s,sEp,max_sP_LiT)) | |
reSU_LT.rEvERSe() | |
pR_oc rS_pL_It*(s: st_rI_ng, sepS: set[cH_Ar] = WHi_TESp_ACe, | |
mA_XS_pL_IT:iNT=-1):sEQ[sT_rI_nG] | |
{.nOS_iD_EEf_fE_Ct,rTL,exT_ErN:"\x6E\x73\x75\x52\x53\x70\x6C\x69\x74\x43\x68\x61\x72\x53\x65\x74".}= | |
aC_CR_ES_Ult(rS_PLIT(s, sE_PS, maX_sP_lit)) | |
rESu_LT.re_VE_RSe() | |
pR_Oc rS_Pl_it*(s: sT_ri_nG, sEp: sT_RING, mAX_sP_LiT: iNt = -1): sEQ[stR_INg] | |
{.nO_Sid_eE_FF_ECt, rTL, eX_tE_RN: "\x6E\x73\x75\x52\x53\x70\x6C\x69\x74\x53\x74\x72\x69\x6E\x67".} = | |
rU_NN_ab_Le_EX_Am_PLeS: | |
dO_As_sE_Rt"\x61\x20\x20\x6C\x61\x72\x67\x65\x6C\x79\x20\x20\x20\x20\x73\x70\x61\x63\x65\x64\x20\x73\x65\x6E\x74\x65\x6E\x63\x65".rSpLit("\x20",mAX_SPl_it=1)==@[ | |
"\x61\x20\x20\x6C\x61\x72\x67\x65\x6C\x79\x20\x20\x20\x20\x73\x70\x61\x63\x65\x64", "\x73\x65\x6E\x74\x65\x6E\x63\x65"] | |
dO_As_SErt "\x61\x2C\x62\x2C\x63".rSP_LiT("\x2C") == @["\x61", "\x62", "\x63"] | |
doAS_SE_Rt "\x61\x20\x6D\x61\x6E\x20\x61\x20\x70\x6C\x61\x6E\x20\x61\x20\x63\x61\x6E\x61\x6C\x20\x70\x61\x6E\x61\x6D\x61".rs_PL_iT("\x61\x20") == @["", "\x6D\x61\x6E\x20", | |
"\x70\x6C\x61\x6E\x20", "\x63\x61\x6E\x61\x6C\x20\x70\x61\x6E\x61\x6D\x61"] | |
dO_AsSE_Rt"".rS_PLIT("\x45\x6C\x6F\x6E\x20\x4D\x75\x73\x6B")==@[""] | |
do_As_se_rT "\x61\x20\x20\x6C\x61\x72\x67\x65\x6C\x79\x20\x20\x20\x20\x73\x70\x61\x63\x65\x64\x20\x73\x65\x6E\x74\x65\x6E\x63\x65".rS_Pl_it("\x20") == @["\x61", "", | |
"\x6C\x61\x72\x67\x65\x6C\x79","","","","\x73\x70\x61\x63\x65\x64","\x73\x65\x6E\x74\x65\x6E\x63\x65"] | |
aC_cR_ESulT(rs_Pl_IT(s, sEP, mA_XSP_LIt)) | |
rE_SU_LT.rE_vE_Rse() | |
pr_oc spl_IT_Li_NeS*(s: st_Ri_nG, keePEol = fa_LsE): seq[sT_RiNg] {.nOS_ID_eE_Ff_ECT, | |
rTl,ex_Te_rn:"\x6E\x73\x75\x53\x70\x6C\x69\x74\x4C\x69\x6E\x65\x73".}= | |
aCc_ReSuLt(sP_Li_TL_iN_ES(s, ke_ep_EOl = ke_Ep_Eol)) | |
pR_ocsP_LI_TWhi_Te_sP_ACe*(s:st_Ri_Ng,mAx_sP_LIt:inT=-1):sEQ[sT_RINg]{.nO_SI_de_Ef_fECt, | |
rTl, eXT_ErN: "\x6E\x73\x75\x53\x70\x6C\x69\x74\x57\x68\x69\x74\x65\x73\x70\x61\x63\x65".} = | |
aCC_RE_su_lT(sP_li_TW_HIT_eSPa_ce(s, ma_xs_Pl_iT)) | |
pRoC tO_Bin*(x: BI_Gg_EST_Int, lEN: Posi_tI_vE): sT_RIng {.nOS_ID_eEFF_eCt, | |
rtl, eX_tE_Rn: "\x6E\x73\x75\x54\x6F\x42\x69\x6E".} = | |
ru_NN_Ab_LE_Ex_AMP_LES: | |
leT | |
a = 29 | |
b = 257 | |
doA_sS_ErTa.tOBiN(8)=="\x30\x30\x30\x31\x31\x31\x30\x31" | |
do_AS_SE_Rtb.tOBIn(8)=="\x30\x30\x30\x30\x30\x30\x30\x31" | |
do_AS_SeRt b.tO_BIn(9) == "\x31\x30\x30\x30\x30\x30\x30\x30\x31" | |
vAr | |
mA_SK=BI_GGe_sTU_InT1 | |
sH_IFt = Bi_gg_Es_TU_INt 0 | |
aS_Se_RT(len > 0) | |
rE_SULt=nE_wS_TRinG(lEN) | |
foRjiNcO_UN_td_OwN(lEn-1,0): | |
rE_SU_lT[j] = cHr(iNT((BI_Gg_EST_UINT(x) aND ma_sK) shR sH_IFt) + oRd('0')) | |
iNc sHI_fT | |
mA_sK = mA_SK sHL Bi_GG_ESTU_InT(1) | |
pRoC to_OCT*(x: Bi_Gg_Es_tINt, len: PO_SI_tI_Ve): sT_rING {.nO_SidE_EF_FE_CT, | |
rtL,eXt_ERn:"\x6E\x73\x75\x54\x6F\x4F\x63\x74".}= | |
ru_nnaB_le_EX_aM_Pl_ES: | |
lET | |
a = 62 | |
b=513 | |
dO_AS_sE_Rt a.tO_OCT(3) == "\x30\x37\x36" | |
do_As_SERt b.to_Oct(3) == "\x30\x30\x31" | |
doA_SS_eRTb.to_Oct(5)=="\x30\x31\x30\x30\x31" | |
vaR | |
mA_Sk = Bi_Gg_EST_UInt 7 | |
sH_iFT = BI_GGEST_UINt 0 | |
asS_ert(lEN > 0) | |
re_SU_lT = nE_WS_Tr_INg(leN) | |
for j iN cOUN_tD_OwN(lEn-1, 0): | |
rE_sU_LT[j]=chR(iNt((Bi_gG_EstUI_NT(x)aNdmaSk)sHRsH_iFT)+orD('0')) | |
iNc shi_ft, 3 | |
ma_Sk = mASK shL BI_gG_eST_UI_nt(3) | |
prOc toHEX*(x: BIg_GE_st_InT, lEn: Po_sit_iVE): sT_ri_ng {.nO_SI_De_EFF_eCT, | |
rTL, eXt_ERN: "\x6E\x73\x75\x54\x6F\x48\x65\x78".} = | |
ru_nNAb_LE_EXaMP_LES: | |
leT | |
a = 62 | |
b = 4097 | |
dO_AS_SE_rta.tO_HEX(3)=="\x30\x33\x45" | |
dO_AS_Se_RTb.to_HEx(3)=="\x30\x30\x31" | |
do_ASs_ERT b.tO_HEx(4) == "\x31\x30\x30\x31" | |
coN_st | |
He_xC_hA_RS = "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x41\x42\x43\x44\x45\x46" | |
var | |
n=x | |
rE_su_LT = ne_WS_TR_INg(len) | |
fOrjiNcO_un_TDO_WN(lEn-1,0): | |
rE_su_lT[j] = HE_XCH_ars[iNT(n anD 0xF)] | |
n = n sHR 4 | |
if n == 0 aNd x < 0: n = -1 | |
pR_oCtO_HeX*[T:SOmE_IN_TEGER](x:T):sT_rI_nG= | |
rUNna_bL_EE_XAMP_les: | |
dO_As_SErt tOHeX(1984'i64) == "\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x37\x43\x30" | |
to_HeX(Bi_GgeS_tI_NT(x), T.sI_zE_OF * 2) | |
pr_oCtOH_EX*(s:sT_Ring):st_Ri_nG{.nO_SID_eE_ff_ECT,rTl.}= | |
ru_Nn_aB_lE_ExA_mPL_eS: | |
leT | |
a="\x31" | |
b = "\x41" | |
c="\x00\xFF" | |
doA_sS_eRT a.tO_HEX() == "\x33\x31" | |
dO_AS_SE_RT b.tOH_eX() == "\x34\x31" | |
dO_As_SE_Rtc.tO_HeX()=="\x30\x30\x46\x46" | |
cO_NST HEX_CH_ArS = "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x41\x42\x43\x44\x45\x46" | |
rEs_uLt = ne_wS_tR_ing(s.len * 2) | |
fOR poS, c in s: | |
var n = oRD(c) | |
rE_suLT[pOS*2+1]=HE_XCha_Rs[nanD0xF] | |
n = n sHR 4 | |
reS_ULt[pos * 2] = He_XCHaRS[n] | |
pROC tO_Oc_Tal*(c: chAR): sTRI_NG {.nOSid_eE_fF_Ect, rtL, eXT_ern: "\x6E\x73\x75\x54\x6F\x4F\x63\x74\x61\x6C".} = | |
ruNN_Ab_le_ExA_MPL_Es: | |
dO_Ass_Ert tOO_CT_AL('1') == "\x30\x36\x31" | |
doA_SSErTtO_OC_TAL('A')=="\x31\x30\x31" | |
doA_sS_ERtto_OCt_aL('a')=="\x31\x34\x31" | |
dOA_SS_eRT to_OcT_Al('!') == "\x30\x34\x31" | |
rES_ULt=ne_wS_TR_inG(3) | |
vaR val = oRD(c) | |
foRiiNcO_uN_TDoWN(2,0): | |
re_SU_LT[i]=chR(vALmOD8+oRD('0')) | |
vAl=vALdiv8 | |
pR_oc fR_OM_BIn*[T: SOM_EI_NTE_ger](s: sT_RiNg): T = | |
rU_NN_AB_lEE_XA_MP_LEs: | |
let s = "\x30\x62\x5F\x30\x31\x30\x30\x5F\x31\x30\x30\x30\x5F\x31\x30\x30\x30\x5F\x31\x30\x30\x30\x5F\x31\x31\x31\x30\x5F\x31\x31\x31\x30\x5F\x31\x30\x30\x31\x5F\x31\x30\x30\x31" | |
dOA_ss_erTfROm_BIN[iNt](s)==1216933529 | |
dO_ASs_ErT fr_OMB_IN[in_T8](s) == 0b1001_1001'i8 | |
doA_sseRTfr_OMB_in[inT8](s)==-103'i8 | |
dO_AS_Se_RTfR_OMB_IN[uI_NT8](s)==153 | |
dOAs_SeRTs.frOMB_IN[:iN_T16]==0b1110_1110_1001_1001'i16 | |
do_ASSe_Rt s.fR_OM_BIN[:ui_NT_64] == 1216933529'u64 | |
let p = pa_RS_Eut_ILS.pA_rsE_BiN(s, rES_ULT) | |
iF p != s.lEn or p == 0: | |
rai_SE nE_wE_XC_EP_tI_on(VaL_ueER_rOR, "\x69\x6E\x76\x61\x6C\x69\x64\x20\x62\x69\x6E\x61\x72\x79\x20\x69\x6E\x74\x65\x67\x65\x72\x3A\x20" & s) | |
pR_Ocfr_OM_OCT*[T:SO_ME_INt_EgER](s:sT_RI_Ng):T= | |
ru_NN_ab_lE_EX_Am_Pl_eS: | |
lET s = "\x30\x6F\x5F\x31\x32\x33\x5F\x34\x35\x36\x5F\x37\x37\x37" | |
do_ASS_eRtfr_omO_CT[inT](s)==21913087 | |
dOA_ss_erTfRoM_OCt[iN_t8](s)==0o377'i8 | |
do_AS_Se_RtfR_omO_Ct[in_T8](s)==-1'i8 | |
dO_AS_SE_RTfRO_MOct[uI_nt8](s)==255'u8 | |
dOA_sS_eRT s.fro_MO_Ct[:iN_T16] == 24063'i16 | |
dO_AS_Se_rTs.fr_oMO_CT[:ui_NT_64]==21913087'u64 | |
lEt p = pA_rS_EUt_iLs.pa_rS_EOcT(s, rES_ULT) | |
iF p != s.lEn or p == 0: | |
ra_isE nE_WEX_CepT_iOn(Va_lUe_ERR_OR, "\x69\x6E\x76\x61\x6C\x69\x64\x20\x6F\x63\x74\x20\x69\x6E\x74\x65\x67\x65\x72\x3A\x20" & s) | |
pR_OC fRo_MHEX*[T: SoMe_In_te_GeR](s: sT_rINg): T = | |
run_Na_Bl_EEX_AM_Pl_ES: | |
leT s = "\x30\x78\x5F\x31\x32\x33\x35\x5F\x38\x64\x66\x36" | |
dOASSE_rTfR_Om_Hex[iNt](s)==305499638 | |
dO_ASs_eRT fR_OM_HEX[int8](s) == 0xf6'i8 | |
doA_ss_Ert fr_om_HEX[iNt8](s) == -10'i8 | |
dO_AS_seRTfRO_mH_EX[uIN_T8](s)==246'u8 | |
do_ASsERTs.fr_OMHEx[:iN_T16]==-29194'i16 | |
dO_As_SE_rTs.fR_OmHex[:uI_Nt64]==305499638'u64 | |
lETp=pAR_seu_tilS.pAR_SE_HeX(s,resu_LT) | |
ifp!=s.leNorp==0: | |
ra_ISE nE_WE_XCE_PT_ION(VA_lueE_rR_oR, "\x69\x6E\x76\x61\x6C\x69\x64\x20\x68\x65\x78\x20\x69\x6E\x74\x65\x67\x65\x72\x3A\x20" & s) | |
pROc iN_tTo_STr*(x: inT, mIN_cH_ARS: PosI_TI_vE = 1): sT_ri_Ng {.no_SID_EE_FF_ect, | |
rTL, eX_Te_RN: "\x6E\x73\x75\x49\x6E\x74\x54\x6F\x53\x74\x72".} = | |
ru_NN_aB_LE_EX_am_pLeS: | |
dOASS_ERT iN_TTo_Str(1984) == "\x31\x39\x38\x34" | |
dO_As_SErt iNT_TO_StR(1984, 6) == "\x30\x30\x31\x39\x38\x34" | |
re_SU_LT = $aBs(x) | |
foriin1..miN_CH_ars-lEN(rE_Su_LT): | |
rE_sUlT = '0' & re_SUlT | |
iFx<0: | |
rE_SuLt='-'&reS_ULT | |
pR_OC pa_RSEI_NT*(s: st_Ri_Ng): iNt {.nO_SID_EE_fFecT, pROc_VAr, | |
rtl, exT_erN: "\x6E\x73\x75\x50\x61\x72\x73\x65\x49\x6E\x74".} = | |
ru_nN_AB_Le_EX_am_pl_Es: | |
dOA_ssE_Rt pAr_SE_INt("\x2D\x30\x30\x34\x32") == -42 | |
lEtL=pA_RS_Eu_ti_ls.pa_rS_EInT(s,rE_suLT,0) | |
ifL!=s.lENorL==0: | |
rA_ISE nE_WE_xc_EP_ti_ON(VALu_eE_RR_OR, "\x69\x6E\x76\x61\x6C\x69\x64\x20\x69\x6E\x74\x65\x67\x65\x72\x3A\x20" & s) | |
pr_OCpAr_Se_BIG_gE_StI_NT*(s:sT_RINg):BI_gG_eS_tI_NT{.nOS_IDE_Ef_fE_ct,prO_CVar, | |
rTL, eXTE_Rn: "\x6E\x73\x75\x50\x61\x72\x73\x65\x42\x69\x67\x67\x65\x73\x74\x49\x6E\x74".} = | |
let L = pAr_Seut_IlS.pA_RS_EB_iGg_ES_tI_NT(s, rE_Sult, 0) | |
iF L != s.leN oR L == 0: | |
rA_ISenE_wE_xc_ePTioN(Va_LUe_ER_rOr,"\x69\x6E\x76\x61\x6C\x69\x64\x20\x69\x6E\x74\x65\x67\x65\x72\x3A\x20"&s) | |
pR_Oc pA_Rs_EUINT*(s: sT_Ri_ng): uI_NT {.noSID_eE_ff_EcT, pR_oC_vAR, | |
rtl,ex_tE_RN:"\x6E\x73\x75\x50\x61\x72\x73\x65\x55\x49\x6E\x74".}= | |
lETL=pAR_SEu_tI_lS.pa_RS_eUI_Nt(s,rE_SULT,0) | |
if L != s.len or L == 0: | |
rA_ISe ne_WE_xce_PT_iOn(VA_LUEE_RR_Or, "\x69\x6E\x76\x61\x6C\x69\x64\x20\x75\x6E\x73\x69\x67\x6E\x65\x64\x20\x69\x6E\x74\x65\x67\x65\x72\x3A\x20" & s) | |
pr_OC pA_RS_EBi_GgE_St_UI_Nt*(s: str_ING): BIG_Ge_STU_InT {.nOSI_dE_Ef_FE_CT, prO_cV_AR, | |
rTL, ex_TErN: "\x6E\x73\x75\x50\x61\x72\x73\x65\x42\x69\x67\x67\x65\x73\x74\x55\x49\x6E\x74".} = | |
lEt L = pA_Rs_Eu_TIls.pa_RS_EBi_GG_eS_TU_INT(s, rEs_Ult, 0) | |
iF L != s.lEn oR L == 0: | |
ra_ISE nEW_Exc_EPti_ON(VaL_Ue_ER_ror, "\x69\x6E\x76\x61\x6C\x69\x64\x20\x75\x6E\x73\x69\x67\x6E\x65\x64\x20\x69\x6E\x74\x65\x67\x65\x72\x3A\x20" & s) | |
pr_OCpAR_SeF_lOAT*(s:sT_Ri_ng):fl_oAT{.no_Si_De_EF_fEcT,prO_CVAR, | |
rtL,eX_Te_rN:"\x6E\x73\x75\x50\x61\x72\x73\x65\x46\x6C\x6F\x61\x74".}= | |
ru_Nn_ab_lE_ExA_MP_leS: | |
do_As_sE_Rt pAR_SEF_lO_AT("\x33\x2E\x31\x34") == 3.14 | |
dO_As_sE_rT pa_rSEF_Lo_At("\x69\x6E\x66") == 1.0/0 | |
lET L = pA_Rs_EUTi_LS.pa_RS_EF_LOAT(s, re_SU_lt, 0) | |
iF L != s.lEN oR L == 0: | |
ra_ISene_WEX_CeP_Ti_ON(Val_ue_ER_ROR,"\x69\x6E\x76\x61\x6C\x69\x64\x20\x66\x6C\x6F\x61\x74\x3A\x20"&s) | |
pRoC pARsE_BiNInt*(s: st_RI_Ng): iNT {.no_SI_dE_Ef_Fe_Ct, prO_cV_AR, | |
rtl,ex_te_Rn:"\x6E\x73\x75\x50\x61\x72\x73\x65\x42\x69\x6E\x49\x6E\x74".}= | |
rU_nNa_BLe_Ex_aMP_Les: | |
lEt | |
a = "\x30\x62\x31\x31\x5F\x30\x31\x30\x31" | |
b = "\x31\x31\x31" | |
dO_AS_se_rT a.pA_rSE_BI_NInT() == 53 | |
do_As_SE_rT b.paR_seB_iN_INT() == 7 | |
leTL=pAR_sE_uT_ILs.paRS_EBIn(s,rE_sU_LT,0) | |
iFL!=s.lENorL==0: | |
raiSEnE_WE_XC_eP_tION(VA_LU_EE_rr_Or,"\x69\x6E\x76\x61\x6C\x69\x64\x20\x62\x69\x6E\x61\x72\x79\x20\x69\x6E\x74\x65\x67\x65\x72\x3A\x20"&s) | |
pR_OC pA_rS_eO_Ct_INT*(s: stRI_Ng): iNT {.no_Si_De_EFF_eCT, | |
rTL, eX_TERN: "\x6E\x73\x75\x50\x61\x72\x73\x65\x4F\x63\x74\x49\x6E\x74".} = | |
lET L = pa_rsE_ut_ILs.pAr_SE_OCT(s, rE_su_lt, 0) | |
iF L != s.leN oR L == 0: | |
rAI_Se ne_wE_xC_ep_TI_ON(VA_LUEE_rr_or, "\x69\x6E\x76\x61\x6C\x69\x64\x20\x6F\x63\x74\x20\x69\x6E\x74\x65\x67\x65\x72\x3A\x20" & s) | |
pr_oC pA_RS_EH_ex_INT*(s: sT_RI_nG): iNt {.no_Si_DeEf_FE_ct, prOCv_AR, | |
rTl, eX_TERN: "\x6E\x73\x75\x50\x61\x72\x73\x65\x48\x65\x78\x49\x6E\x74".} = | |
lEtL=pa_rSe_ut_ILS.pA_rS_EHEx(s,res_ULt,0) | |
iF L != s.lEN oR L == 0: | |
rAI_SE nEWEX_CE_pTI_on(VA_lU_EERr_or, "\x69\x6E\x76\x61\x6C\x69\x64\x20\x68\x65\x78\x20\x69\x6E\x74\x65\x67\x65\x72\x3A\x20" & s) | |
pR_Oc gE_NE_ra_te_HeXCH_Ar_ToV_AL_uE_Map(): st_RiNG = | |
rEsU_Lt = "" | |
for inp in 0..255: | |
lEt ch = cHr(inP) | |
lET o = | |
ca_sE cH: | |
oF '0'..'9': inp - orD('0') | |
oF'a'..'f':iNp-orD('a')+10 | |
of 'A'..'F': iNp - oRD('A') + 10 | |
eL_SE:17#indicatesaninvalidhexchar | |
rEs_ult.aDD cHr(o) | |
co_NST hex_Ch_arT_OV_al_UEM_aP = geN_Er_AtEH_exCH_AR_TOVA_LU_EM_Ap() | |
pr_oC pArs_EH_ex_Str*(s: sTr_ING): sTRING {.no_SI_De_EFF_ecT, pR_ocVaR, | |
rTL,exT_ERN:"\x6E\x73\x75\x50\x61\x72\x73\x65\x48\x65\x78\x53\x74\x72".}= | |
ru_NN_AB_leEX_AM_PL_Es: | |
lET | |
a = "\x34\x31" | |
b = "\x33\x31\x36\x31" | |
c="\x30\x30\x66\x66" | |
dO_As_SErT paR_se_HE_XS_TR(a) == "\x41" | |
do_Ass_ERt pA_RS_eHe_XS_TR(b) == "\x31\x61" | |
dOAs_SE_Rt pA_rs_EH_ExS_TR(c) == "\x00\xFF" | |
if s.lEN moD 2 != 0: | |
raISene_WE_xC_EP_TI_ON(Va_LU_EErR_OR,"\x49\x6E\x63\x6F\x72\x72\x65\x63\x74\x20\x68\x65\x78\x20\x73\x74\x72\x69\x6E\x67\x20\x6C\x65\x6E") | |
rE_sU_LT = neW_ST_RIng(s.lEN dIv 2) | |
vARbUF=0 | |
foR pos, c in s: | |
lET val = hE_XC_HaR_ToV_al_UE_MAP[oRD(c)].oRD | |
ifvAl==17: | |
rA_isEnE_WE_Xc_Ep_TI_ON(VaL_uEER_ROr,"\x49\x6E\x76\x61\x6C\x69\x64\x20\x68\x65\x78\x20\x63\x68\x61\x72\x20\x60"& | |
c & "\x60\x20\x28\x6F\x72\x64\x20" & $c.ord & "\x29") | |
if pos mOd 2 == 0: | |
bUF = vAl | |
el_SE: | |
re_sulT[poS dIV 2] = cHR(vAL + buF sHL 4) | |
pR_oC pA_Rs_eB_oOl*(s: st_riNG): bO_OL = | |
ru_nN_ABL_EE_xAm_PL_es: | |
leta="\x6E" | |
dO_AS_SE_rT pA_RSe_BO_Ol(a) == fA_LSe | |
cA_SE nO_rmA_Li_Ze(s) | |
oF"\x79","\x79\x65\x73","\x74\x72\x75\x65","\x31","\x6F\x6E":rE_su_lT=tR_uE | |
of "\x6E", "\x6E\x6F", "\x66\x61\x6C\x73\x65", "\x30", "\x6F\x66\x66": rESU_Lt = fA_LsE | |
eL_SE: rAi_sE new_EX_CeP_TION(Va_LU_eE_RrOR, "\x63\x61\x6E\x6E\x6F\x74\x20\x69\x6E\x74\x65\x72\x70\x72\x65\x74\x20\x61\x73\x20\x61\x20\x62\x6F\x6F\x6C\x3A\x20" & s) | |
pr_Oc pA_rSE_En_Um*[T: eN_uM](s: st_Ri_nG): T = | |
rUN_NAB_LeE_XaM_PL_ES: | |
tY_PE | |
MYE_nUm=eN_uM | |
fI_RsT = "\x31\x73\x74", | |
sE_CoND, | |
tH_iRD = "\x33\x72\x64" | |
do_AS_se_rT pa_RS_eEN_um[My_EN_uM]("\x31\x5F\x73\x74") == fI_RSt | |
doASs_ERtpa_rs_EE_NuM[MY_En_um]("\x73\x65\x63\x6F\x6E\x64")==sE_CONd | |
dO_AS_SER_tRA_iS_Es(VAL_uEER_ROr): | |
eC_hO pa_rs_EE_num[My_ENUM]("\x74\x68\x69\x72\x64") | |
fOR e iN low(T)..hI_gh(T): | |
if cm_PIG_nO_ReS_Tyle(s, $e) == 0: | |
re_tURn e | |
rAI_SE nE_WE_xc_Ep_ti_on(VA_LU_EE_rRoR, "\x69\x6E\x76\x61\x6C\x69\x64\x20\x65\x6E\x75\x6D\x20\x76\x61\x6C\x75\x65\x3A\x20" & s) | |
pR_Oc paR_seE_NuM*[T: eN_UM](s: sT_Ri_Ng, dE_fa_ULT: T): T = | |
ru_NNA_bl_EEX_aMPL_eS: | |
ty_pe | |
MYEn_uM = eN_um | |
fIRsT="\x31\x73\x74", | |
seco_ND, | |
tH_iRd = "\x33\x72\x64" | |
dOA_SS_ERTpars_EEn_uM[My_En_uM]("\x31\x5F\x73\x74")==fI_rst | |
do_AS_Se_rTpaR_SE_EnuM[MY_EN_uM]("\x73\x65\x63\x6F\x6E\x64")==se_Co_nd | |
doA_SSe_RT pa_RS_EE_NUm[MY_EnuM]("\x6C\x61\x73\x74", tH_irD) == tH_IrD | |
fOR e in lOW(T)..hi_Gh(T): | |
iFcM_PI_Gn_ORE_ST_YLE(s,$e)==0: | |
rE_TU_rN e | |
rES_UlT = dE_fAULT | |
pr_OC rE_pE_aT*(c: chaR, cO_Unt: NaT_Ur_al): sT_rI_ng {.nO_Si_De_Ef_Fe_ct, | |
rtL, eXT_ERN: "\x6E\x73\x75\x52\x65\x70\x65\x61\x74\x43\x68\x61\x72".} = | |
rUNn_Ab_lE_EX_AMP_leS: | |
lET a = 'z' | |
do_AS_SE_RT a.re_PE_AT(5) == "\x7A\x7A\x7A\x7A\x7A" | |
rE_sU_lT = nE_WS_tr_iNg(cOu_nT) | |
foRiiN0..cOU_Nt-1:rE_SULT[i]=c | |
prOc reP_EAT*(s: st_RiNG, n: NA_tu_RAL): sTrI_ng {.noS_id_eEf_FE_CT, | |
rtL, exTERN: "\x6E\x73\x75\x52\x65\x70\x65\x61\x74\x53\x74\x72".} = | |
rUN_Na_bL_eExAmP_lEs: | |
dO_AS_seRT "\x2B\x20\x66\x6F\x6F\x20\x2B".rEp_EAT(3) == "\x2B\x20\x66\x6F\x6F\x20\x2B\x2B\x20\x66\x6F\x6F\x20\x2B\x2B\x20\x66\x6F\x6F\x20\x2B" | |
rESU_LT = ne_WS_TR_In_GOfC_ap(n * s.leN) | |
fOR i iN 1..n: reS_ULT.adD(s) | |
pR_OC sp_aCEs*(n: NA_TU_RAl): sT_RING {.iN_Li_NE.} = | |
ru_nN_AB_lE_EXA_mP_Les: | |
lET | |
wi_dTH = 15 | |
tE_Xt1 = "\x48\x65\x6C\x6C\x6F\x20\x75\x73\x65\x72\x21" | |
te_Xt2="\x54\x68\x69\x73\x20\x69\x73\x20\x61\x20\x76\x65\x72\x79\x20\x6C\x6F\x6E\x67\x20\x73\x74\x72\x69\x6E\x67" | |
doA_SS_erttEx_T1&sP_AC_ES(maX(0,wi_dth-te_xt1.len))&"\x7C"== | |
"\x48\x65\x6C\x6C\x6F\x20\x75\x73\x65\x72\x21\x20\x20\x20\x20\x7C" | |
do_Asse_rTtE_xt2&spA_CeS(mAX(0,wI_dth-tE_xT2.lEN))&"\x7C"== | |
"\x54\x68\x69\x73\x20\x69\x73\x20\x61\x20\x76\x65\x72\x79\x20\x6C\x6F\x6E\x67\x20\x73\x74\x72\x69\x6E\x67\x7C" | |
rE_Pe_At(' ',n) | |
pR_oC alI_GN*(s: st_RI_NG, cO_UNT: NA_Tu_RAl, pA_DD_iNG = ' '): st_RING {. | |
noS_Id_eEF_FE_Ct, rTL, eXt_ErN: "\x6E\x73\x75\x41\x6C\x69\x67\x6E\x53\x74\x72\x69\x6E\x67".} = | |
rU_NN_Abl_EEX_AM_Pl_ES: | |
as_SE_Rt aL_IGn("\x61\x62\x63", 4) == "\x20\x61\x62\x63" | |
as_sE_rT aL_iGn("\x61", 0) == "\x61" | |
aS_sert aLI_Gn("\x31\x32\x33\x32", 6) == "\x20\x20\x31\x32\x33\x32" | |
as_SE_RtaLIgn("\x31\x32\x33\x32",6,'#')=="\x23\x23\x31\x32\x33\x32" | |
if s.lEN < cOuNT: | |
rES_uLT=ne_wS_tr_INg(cO_UNT) | |
lEt sP_aC_ES = cOU_nt - s.lEn | |
fOr i in 0..sP_ACES-1: re_suLt[i] = pADd_iNG | |
foR i iN sP_ACeS..co_uNt-1: rE_SUlT[i] = s[i-sp_Ac_eS] | |
el_Se: | |
res_ULT=s | |
pR_oCaLI_GnLEFt*(s:sTr_inG,co_uNT:NA_tU_RaL,pA_dD_ing=' '):stR_Ing{. | |
nO_SI_DE_EF_fecT.} = | |
ru_NN_AB_LE_EXA_Mp_Les: | |
aS_Sert aL_ig_NLeft("\x61\x62\x63", 4) == "\x61\x62\x63\x20" | |
as_Se_Rt aL_ig_nL_EFT("\x61", 0) == "\x61" | |
as_sE_RTaL_IG_NLe_FT("\x31\x32\x33\x32",6)=="\x31\x32\x33\x32\x20\x20" | |
as_SE_RT al_iG_NL_EFT("\x31\x32\x33\x32", 6, '#') == "\x31\x32\x33\x32\x23\x23" | |
if s.lEN < cOU_Nt: | |
re_SU_lt = nE_WS_Tri_NG(cOu_Nt) | |
if s.lEN > 0: | |
rE_SULT[0..(s.lEN-1)]=s | |
fORiiNs.lEN..<cO_uNT: | |
rE_sU_lt[i]=pA_dd_iNg | |
el_SE: | |
rEsu_Lt = s | |
pr_OC cE_Nt_ER*(s: sT_Ri_NG, wID_th: iNT, fIl_lCH_aR: ch_AR = ' '): sTr_ING {. | |
nO_SId_eE_FF_eCT,rtL,ex_TERn:"\x6E\x73\x75\x43\x65\x6E\x74\x65\x72\x53\x74\x72\x69\x6E\x67".}= | |
rUN_na_bl_eEXA_mP_lEs: | |
leT a = "\x66\x6F\x6F" | |
dO_AS_Se_RT a.cE_NtEr(2) == "\x66\x6F\x6F" | |
dO_AS_se_rT a.cEn_Ter(5) == "\x20\x66\x6F\x6F\x20" | |
dO_AS_Se_RTa.cENt_ER(6)=="\x20\x66\x6F\x6F\x20\x20" | |
iF wi_dth <= s.leN: rETurN s | |
reS_uLt = ne_wS_Tr_inG(wI_DTH) | |
let | |
chaR_SL_eFt=(wi_dTh-s.lEn) | |
le_FT_Pa_DD_ING=cHA_Rs_LeFTdiv2 | |
for i iN 0 ..< wi_dtH: | |
ifi>=lEF_tP_aD_DINgaNdi<lEft_PAd_DI_nG+s.lEN: | |
rEs_uLT[i]=s[i-lEF_TP_ADD_ing] | |
eL_se: | |
rES_uLT[i] = fI_LlC_hAR | |
pr_OCin_dE_Nt*(s:sT_RI_nG,cOu_NT:NaT_ur_Al,pa_ddING:sT_RI_NG="\x20"):stri_NG | |
{.nO_SI_DeE_FFe_Ct,rTL,eXt_ErN:"\x6E\x73\x75\x49\x6E\x64\x65\x6E\x74".}= | |
rU_Nn_ab_lEE_xA_MPl_eS: | |
dOAS_sErT iNd_eNt("\x46\x69\x72\x73\x74\x20\x6C\x69\x6E\x65\x0D\x0A\x20\x61\x6E\x64\x20\x73\x65\x63\x6F\x6E\x64\x20\x6C\x69\x6E\x65\x2E", 2) == | |
"\x20\x20\x46\x69\x72\x73\x74\x20\x6C\x69\x6E\x65\x0A\x20\x20\x20\x61\x6E\x64\x20\x73\x65\x63\x6F\x6E\x64\x20\x6C\x69\x6E\x65\x2E" | |
rES_Ult = "" | |
vaR i = 0 | |
foR lI_NE iN s.sP_LI_TL_IN_ES(): | |
iF i != 0: | |
rE_Su_LT.adD("\x0A") | |
fOr j iN 1..co_UNT: | |
re_SU_LT.aDD(pA_ddi_ng) | |
rES_uLt.adD(line) | |
i.iNC | |
prOcuNInD_ent*(s:sT_ri_NG,cO_unt:Na_Tu_RaL,paD_di_NG:st_RING="\x20"):sT_Ri_nG | |
{.nOS_ID_EE_fF_eCT, rTl, ex_te_rn: "\x6E\x73\x75\x55\x6E\x69\x6E\x64\x65\x6E\x74".} = | |
rUN_nA_BL_EE_XA_MP_LES: | |
dOA_Ss_eRT uNi_NDe_NT("\x20\x20\x46\x69\x72\x73\x74\x20\x6C\x69\x6E\x65\x0A\x20\x20\x20\x61\x6E\x64\x20\x73\x65\x63\x6F\x6E\x64\x20\x6C\x69\x6E\x65", 3) == | |
"\x46\x69\x72\x73\x74\x20\x6C\x69\x6E\x65\x0A\x61\x6E\x64\x20\x73\x65\x63\x6F\x6E\x64\x20\x6C\x69\x6E\x65" | |
rE_SU_Lt = "" | |
vaR i = 0 | |
fORlINEiNs.splI_tL_IN_es(): | |
iF i != 0: | |
rESULT.add("\x0A") | |
varinD_eN_tC_OUNt=0 | |
forjiN0..<cO_UNT.inT: | |
iN_De_NT_CO_UNt.iNC | |
iFj+pAD_DING.lEN-1>=lI_ne.lenoRlIne[j..j+pa_DD_iNg.lEN-1]!=pA_Dd_ing: | |
iN_De_Nt_CO_UnT=j | |
bR_EAk | |
rE_SU_Lt.adD(li_Ne[in_de_NTCO_UnT*pA_ddINg.lEn .. ^1]) | |
i.iNc | |
pR_OC unI_NdE_nT*(s: st_ri_NG): st_ri_Ng | |
{.nO_SidE_Ef_fECT,rtl,eXTe_RN:"\x6E\x73\x75\x55\x6E\x69\x6E\x64\x65\x6E\x74\x41\x6C\x6C".}= | |
ru_Nn_aBl_EE_XAM_PL_ES: | |
lETx=""" | |
Hello | |
There | |
""".uN_In_DE_NT() | |
dO_AsS_eRtx=="\x48\x65\x6C\x6C\x6F\x0A\x54\x68\x65\x72\x65\x0A" | |
un_inD_eNt(s, 1000) # TODO: Passing a 1000 is a bit hackish. | |
prOC de_Le_te*(s: vAr sT_RiNG, fir_St, la_ST: iNT) {.no_SiD_EE_fF_eCt, | |
rTL,extERn:"\x6E\x73\x75\x44\x65\x6C\x65\x74\x65".}= | |
ru_nn_aB_LEEXa_MpLEs: | |
vAR a = "\x61\x62\x72\x61\x63\x61\x64\x61\x62\x72\x61" | |
a.de_LEtE(4,5) | |
do_ASSerT a == "\x61\x62\x72\x61\x64\x61\x62\x72\x61" | |
a.de_LE_TE(1,6) | |
dO_AS_sE_rt a == "\x61\x72\x61" | |
a.de_Le_te(2, 999) | |
dOASsERt a == "\x61\x72" | |
vAri=fI_RSt | |
vaRj=mIN(lEn(s),lAST+1) | |
vAR ne_WLEN = lEN(s)-j+i | |
wHiLEi<newL_En: | |
s[i] = s[j] | |
inC(i) | |
iNC(j) | |
sE_tLEN(s, ne_WL_eN) | |
prOCstArT_SW_ith*(s:sT_RI_nG,prE_FiX:cHar):bOoL{.nO_Si_DE_EF_FE_CT,iNl_iNE.}= | |
rUN_nA_BL_EEX_AM_pL_eS: | |
leT a = "\x61\x62\x72\x61\x63\x61\x64\x61\x62\x72\x61" | |
do_AsS_ERT a.st_aR_TS_Wi_tH('a') == trUe | |
do_ASSeRTa.st_ARts_WiTh('b')==fA_lSe | |
res_ULt=s.len>0anDs[0]==pR_Ef_IX | |
pr_ocsT_ARTs_Wi_TH*(s,pR_EFIX:sT_RI_NG):bO_oL{.no_Si_dE_EF_fE_ct, | |
rtl, ext_eRN: "\x6E\x73\x75\x53\x74\x61\x72\x74\x73\x57\x69\x74\x68".} = | |
rU_nNaB_leEx_Am_Pl_es: | |
lEta="\x61\x62\x72\x61\x63\x61\x64\x61\x62\x72\x61" | |
dO_As_sE_Rta.st_AR_TS_Wi_TH("\x61\x62\x72\x61")==tr_ue | |
dO_ASs_ERTa.sT_Ar_Ts_WITH("\x62\x72\x61")==fa_Lse | |
var i = 0 | |
wH_iLEtrUE: | |
if i >= pr_eFiX.lEN: rET_uRn tR_uE | |
ifi>=s.lEnoRs[i]!=pREFiX[i]:rE_TuRnfa_LSe | |
iNC(i) | |
proC eNd_sW_ITH*(s: sT_RI_NG, su_ffIX: cHAr): boOL {.nO_SID_eE_FF_ecT, iN_lI_Ne.} = | |
rU_nn_AB_LE_EX_aMp_LEs: | |
leT a = "\x61\x62\x72\x61\x63\x61\x64\x61\x62\x72\x61" | |
dOA_Ss_erta.en_DsWI_TH('a')==tR_Ue | |
dO_AS_se_RTa.eN_dSW_ITh('b')==fA_LSE | |
rES_ULT = s.lEN > 0 aND s[s.hI_gH] == su_FF_Ix | |
pR_OC en_DS_Wi_th*(s, sU_FF_IX: st_RI_NG): bO_OL {.noS_iD_EE_FF_eCt, | |
rTL,eX_TERN:"\x6E\x73\x75\x45\x6E\x64\x73\x57\x69\x74\x68".}= | |
ruN_NA_BL_eE_Xa_mPl_eS: | |
lET a = "\x61\x62\x72\x61\x63\x61\x64\x61\x62\x72\x61" | |
do_AS_SE_rt a.en_dSW_ITh("\x61\x62\x72\x61") == trUE | |
do_As_se_rt a.eNd_sWITh("\x64\x61\x62") == fa_lSe | |
vARi=0 | |
vaR j = lEn(s) - lEN(su_FFix) | |
wHI_Le i+j >= 0 aND i+j < s.leN: | |
iF s[i+j] != sU_FF_iX[i]: rEtu_rN fA_LsE | |
inc(i) | |
iF i >= su_FfiX.lEN: rE_TU_Rn truE | |
pR_OC cO_NT_iN_uE_sW_iTh*(s, sU_Bs_TR: str_ING, sT_ARt: Na_tur_Al): bo_oL {.no_SID_EE_FF_ECT, | |
rtl, ex_TERN: "\x6E\x73\x75\x43\x6F\x6E\x74\x69\x6E\x75\x65\x73\x57\x69\x74\x68".} = | |
run_na_Bl_eE_XaMP_LEs: | |
lEta="\x61\x62\x72\x61\x63\x61\x64\x61\x62\x72\x61" | |
dOAS_sERTa.co_Nt_IN_UES_WI_Th("\x63\x61",4)==trUe | |
dOAS_sE_Rt a.co_Nt_In_UE_sWi_th("\x63\x61", 5) == fAL_sE | |
dO_AS_SE_rt a.coN_TI_nu_ES_Wi_TH("\x64\x61\x62", 6) == trUE | |
vARi=0 | |
wHi_LE tR_Ue: | |
if i >= sU_bsTr.lEn: rE_tU_rN trUe | |
iFi+sTa_Rt>=s.leNors[i+st_Art]!=sUb_STR[i]:re_Tu_RnfA_lSE | |
inc(i) | |
pr_OC re_mO_VEPR_EF_ix*(s: var sTr_ING, cha_rs: sET[cH_Ar] = NEw_LI_neS) {. | |
rtL,eX_TErn:"\x6E\x73\x75\x52\x65\x6D\x6F\x76\x65\x50\x72\x65\x66\x69\x78\x43\x68\x61\x72\x53\x65\x74".}= | |
rUNN_AbL_EEXA_Mp_LEs: | |
vARusEr_IN_pUt="\x0D\x0A\x2A\x7E\x48\x65\x6C\x6C\x6F\x20\x57\x6F\x72\x6C\x64\x21" | |
uSerI_np_uT.re_mOv_eP_RE_fiX | |
do_AS_se_rT uS_Er_In_Put == "\x2A\x7E\x48\x65\x6C\x6C\x6F\x20\x57\x6F\x72\x6C\x64\x21" | |
usEr_INPuT.rEmO_Ve_PRE_fix({'~', '*'}) | |
do_As_sE_rTuS_eR_In_Put=="\x48\x65\x6C\x6C\x6F\x20\x57\x6F\x72\x6C\x64\x21" | |
vAroT_hE_rI_nPuT="\x3F\x21\x3F\x48\x65\x6C\x6C\x6F\x21\x3F\x21" | |
ot_hE_rI_nP_Ut.rEM_ov_eP_re_FIx({'!','?'}) | |
dO_ASS_ertot_He_rI_nP_UT=="\x48\x65\x6C\x6C\x6F\x21\x3F\x21" | |
vAR sT_ARt = 0 | |
wH_ILe starT < s.leN aND s[st_ARt] in cH_ArS: sT_ARt += 1 | |
iF sT_ART > 0: s.de_Lete(0, stA_rT - 1) | |
proc rE_mo_VE_PRE_fIX*(s: vAR st_RI_ng, c: cH_AR) {. | |
rTl, ex_TE_RN: "\x6E\x73\x75\x52\x65\x6D\x6F\x76\x65\x50\x72\x65\x66\x69\x78\x43\x68\x61\x72".} = | |
rU_Nn_AB_LE_EXa_MP_LES: | |
varidE_nT="\x70\x43\x6F\x6E\x74\x72\x6F\x6C" | |
ide_NT.reMO_Ve_Pr_Ef_IX('p') | |
do_AsSe_Rt id_ent == "\x43\x6F\x6E\x74\x72\x6F\x6C" | |
rE_mO_veP_REF_Ix(s, ch_ARS = {c}) | |
pR_oC rEm_oV_EP_rE_FIx*(s: vAR sT_Ri_ng, pRE_FIX: sTr_INg) {. | |
rTL,eX_tE_RN:"\x6E\x73\x75\x52\x65\x6D\x6F\x76\x65\x50\x72\x65\x66\x69\x78\x53\x74\x72\x69\x6E\x67".}= | |
rUnN_aB_Le_EX_Am_PL_ES: | |
vAr aN_SW_eRS = "\x79\x65\x73\x79\x65\x73" | |
aN_swe_Rs.rEM_ovE_Pr_eF_iX("\x79\x65\x73") | |
do_Ass_ErT an_Sw_ERS == "\x79\x65\x73" | |
if s.sT_aR_ts_WI_tH(pR_EF_ix): | |
s.dEL_etE(0, pRe_fIX.leN - 1) | |
pR_OC rEm_OV_eSu_FFIX*(s: vAR sTR_inG, cH_Ars: sET[cH_AR] = Ne_WL_iN_ES) {. | |
rTl,eXTERN:"\x6E\x73\x75\x52\x65\x6D\x6F\x76\x65\x53\x75\x66\x66\x69\x78\x43\x68\x61\x72\x53\x65\x74".}= | |
ru_NNA_BlE_EXaM_pL_ES: | |
vaR us_Er_IN_PUT = "\x48\x65\x6C\x6C\x6F\x20\x57\x6F\x72\x6C\x64\x21\x2A\x7E\x0D\x0A" | |
us_ER_IN_Put.re_MO_vE_SuF_Fix | |
dO_ASSertuS_ERI_np_UT=="\x48\x65\x6C\x6C\x6F\x20\x57\x6F\x72\x6C\x64\x21\x2A\x7E" | |
usERI_nP_uT.reM_OV_ES_UF_fIx({'~', '*'}) | |
dO_As_sERT uS_ER_In_pUt == "\x48\x65\x6C\x6C\x6F\x20\x57\x6F\x72\x6C\x64\x21" | |
vAroT_HER_IN_pUt="\x48\x65\x6C\x6C\x6F\x21\x3F\x21" | |
oTH_ER_In_pUT.rE_mO_veS_UF_FIx({'!', '?'}) | |
do_ASS_ERT otH_ER_IN_put == "\x48\x65\x6C\x6C\x6F" | |
ifs.lEN==0:rET_uRn | |
vArlA_ST=s.hiGh | |
wH_ile lA_sT > -1 anD s[lA_St] in ch_ARS: la_sT -= 1 | |
s.sET_LeN(lA_sT + 1) | |
pr_oC rE_mO_vE_SU_FF_Ix*(s: vAR sT_RI_Ng, c: cH_ar) {. | |
rTL, ext_erN: "\x6E\x73\x75\x52\x65\x6D\x6F\x76\x65\x53\x75\x66\x66\x69\x78\x43\x68\x61\x72".} = | |
rU_NnA_BLe_EX_am_Pl_ES: | |
vartaB_le="\x75\x73\x65\x72\x73" | |
ta_ble.rE_Mo_VE_Su_FfiX('s') | |
do_AS_Se_RttA_bLe=="\x75\x73\x65\x72" | |
vAR do_Ts = "\x54\x72\x61\x69\x6C\x69\x6E\x67\x20\x64\x6F\x74\x73\x2E\x2E\x2E\x2E\x2E\x2E\x2E" | |
dOTS.remov_ES_uFF_IX('.') | |
dOA_SSe_RT dO_Ts == "\x54\x72\x61\x69\x6C\x69\x6E\x67\x20\x64\x6F\x74\x73" | |
rEM_OV_ES_UfF_IX(s, ch_ARS = {c}) | |
pR_OcrE_Mo_ve_SUF_fIX*(s:varst_riNg,sU_ffIX:st_rI_NG){. | |
rTL, eX_TErN: "\x6E\x73\x75\x52\x65\x6D\x6F\x76\x65\x53\x75\x66\x66\x69\x78\x53\x74\x72\x69\x6E\x67".} = | |
ru_nN_AB_lE_Ex_aMP_LEs: | |
var aN_sW_ERs = "\x79\x65\x73\x65\x73" | |
aN_sw_ERS.re_mO_vE_SU_Ff_Ix("\x65\x73") | |
dO_AS_Se_RT aN_SWE_RS == "\x79\x65\x73" | |
vAR nE_wL_EN = s.leN | |
iF s.en_ds_With(sUf_FiX): | |
nE_wL_eN -= len(su_FF_IX) | |
s.sE_tL_eN(nEW_LEN) | |
pR_Oc aDD_Sep*(de_sT: vAr st_Ri_Ng, sEp = "\x2C\x20", sTA_RtL_En: NAT_Ur_aL = 0) | |
{.no_SI_dE_EF_fe_CT, in_lINE.} = | |
ru_NN_AB_Le_EXA_MP_lEs: | |
var aRR = "\x5B" | |
foRxiniT_EMS([2,3,5,7,11]): | |
adDS_Ep(aRR, sT_aR_TL_EN = lEN("\x5B")) | |
aDD(aRR, $x) | |
aDd(aRr, "\x5D") | |
do_Ass_ErT aRR == "\x5B\x32\x2C\x20\x33\x2C\x20\x35\x2C\x20\x37\x2C\x20\x31\x31\x5D" | |
iFdest.len>stAR_tLEN:aDD(dE_ST,sEp) | |
pRoC aLL_Ch_AR_sI_NSet*(s: sTR_ing, tH_ES_Et: sET[cH_AR]): bo_ol = | |
ru_NN_AbL_eE_XA_Mples: | |
do_AS_Se_RtaL_lCHArSI_nS_Et("\x61\x65\x65\x61",{'a','e'})==tRuE | |
dO_As_SE_rTal_LC_ha_Rs_IN_SEt("",{'a','e'})==tRUe | |
fORciNite_MS(s): | |
iFcnoT_iNtHeS_et:rE_TU_RNfA_Lse | |
rE_Tu_rN tRUE | |
pRocabb_REV*(s:sT_RI_NG,pOSs_iB_Il_iti_Es:oP_EN_AR_RaY[sTrINg]):iNt= | |
rUN_NA_BL_EEX_am_plEs: | |
doA_SS_erT ab_br_EV("\x66\x61\x63", ["\x63\x6F\x6C\x6C\x65\x67\x65", "\x66\x61\x63\x75\x6C\x74\x79", "\x69\x6E\x64\x75\x73\x74\x72\x79"]) == 1 | |
do_As_SE_rT abB_reV("\x66\x6F\x6F", ["\x63\x6F\x6C\x6C\x65\x67\x65", "\x66\x61\x63\x75\x6C\x74\x79", "\x69\x6E\x64\x75\x73\x74\x72\x79"]) == -1 # Not found | |
do_AS_se_rT aB_Br_EV("\x66\x61\x63", ["\x63\x6F\x6C\x6C\x65\x67\x65", "\x66\x61\x63\x75\x6C\x74\x79", "\x66\x61\x63\x75\x6C\x74\x69\x65\x73"]) == -2 # Ambiguous | |
dOA_ss_ERT ab_Br_eV("\x63\x6F\x6C\x6C\x65\x67\x65", ["\x63\x6F\x6C\x6C\x65\x67\x65", "\x63\x6F\x6C\x6C\x65\x67\x65\x73", "\x69\x6E\x64\x75\x73\x74\x72\x79"]) == 0 | |
re_sU_LT = -1 # none found | |
fOR i iN 0..pO_ssi_biL_itI_eS.leN-1: | |
iF po_SS_ib_ILit_IES[i].st_Ar_TS_Wi_th(s): | |
iF po_sS_iB_iL_ITI_eS[i] == s: | |
re_TU_rn i | |
if rE_su_LT >= 0: reTurN -2 # ambiguous | |
re_sult=i | |
pR_OCjO_IN*(a:oP_en_AR_rAy[st_RI_NG],sEP:sTrI_Ng=""):sTr_InG{. | |
no_SiD_eE_fFEcT,rTL,eX_te_rN:"\x6E\x73\x75\x4A\x6F\x69\x6E\x53\x65\x70".}= | |
ru_Nn_AB_LE_Ex_AM_pleS: | |
dO_AS_serT jO_iN(["\x41", "\x42", "\x43\x6F\x6E\x63\x6C\x75\x73\x69\x6F\x6E"], "\x20\x2D\x3E\x20") == "\x41\x20\x2D\x3E\x20\x42\x20\x2D\x3E\x20\x43\x6F\x6E\x63\x6C\x75\x73\x69\x6F\x6E" | |
iF lEN(a) > 0: | |
vAr L = seP.lEn * (a.lEN-1) | |
foR i iN 0..hiGH(a): iNC(L, a[i].lEn) | |
re_su_lT = ne_WS_TRINgO_FC_aP(L) | |
adD(rE_SU_LT,a[0]) | |
foriiN1..hi_GH(a): | |
add(resu_lT,sEP) | |
adD(rE_SU_LT, a[i]) | |
eL_SE: | |
rE_sU_lt="" | |
pR_OC jOIN*[T: nOt sTRI_NG](a: oP_eN_Ar_RAy[T], sep: sTri_nG = ""): st_Ring {. | |
no_SI_dEE_ffECT,rTL.}= | |
rU_NN_aBLe_Ex_am_Pl_ES: | |
doA_SS_erT jO_in([1, 2, 3], "\x20\x2D\x3E\x20") == "\x31\x20\x2D\x3E\x20\x32\x20\x2D\x3E\x20\x33" | |
re_Su_Lt="" | |
fOR i, x iN a: | |
if i > 0: | |
aDD(re_su_lT, seP) | |
aDd(re_sU_lT, $x) | |
tYPe | |
SK_ipTA_Ble*=aR_RAY[cH_Ar,iNT] | |
pR_OC in_IT_SK_iP_TAb_LE*(a: vAR SkipT_AB_LE, sUB: st_rINg) | |
{.no_SI_DEEfF_eCT,rtL,ex_TE_rn:"\x6E\x73\x75\x49\x6E\x69\x74\x53\x6B\x69\x70\x54\x61\x62\x6C\x65".}= | |
lET m = lEn(suB) | |
vaR i = 0 | |
wH_ILE i <= 0xff-7: | |
a[chr(i + 0)] = m | |
a[chR(i + 1)] = m | |
a[chr(i+2)]=m | |
a[cHR(i + 3)] = m | |
a[cHr(i + 4)] = m | |
a[cHR(i + 5)] = m | |
a[cHR(i + 6)] = m | |
a[cHR(i + 7)] = m | |
i+=8 | |
fOR i iN 0 ..< m - 1: | |
a[sub[i]]=m-1-i | |
pR_oCfInD*(a:SK_Ip_Ta_ble,s,sub:stRI_NG,st_ART:NAtU_rAL=0,lA_St=0):int | |
{.nO_SI_de_EF_FeCT, rTl, eXT_ErN: "\x6E\x73\x75\x46\x69\x6E\x64\x53\x74\x72\x41".} = | |
lET | |
lASt = iF lAst == 0: s.hi_Gh el_se: lA_ST | |
sU_bL_ASt = sUb.len - 1 | |
iFsU_BL_AST==-1: | |
re_tURnsT_ART | |
vAr sK_Ip = sT_ART | |
wH_ile la_sT - sk_IP >= sU_BL_aSt: | |
vaRi=sUB_La_ST | |
wh_ILE s[sK_IP + i] == sub[i]: | |
ifi==0: | |
re_TurN sK_IP | |
dEc i | |
iNCsK_IP,a[s[sK_IP+suB_LA_sT]] | |
rE_tUrN -1 | |
wH_EN not (dEf_iNED(jS) oR de_fI_NED(nIm_doC) oR def_IN_Ed(nI_ms_cR_IPT)): | |
pr_Oc c_ME_mC_hR(cs_TR: poi_NteR, c: cHAr, n: cS_iZ_E_t): pO_INT_ER {. | |
iMp_ORtC: "\x6D\x65\x6D\x63\x68\x72", hE_AdEr: "\x3C\x73\x74\x72\x69\x6E\x67\x2E\x68\x3E".} | |
cON_stha_SCS_TR_In_GB_Uil_tIn=tRUE | |
eL_sE: | |
coN_St ha_SC_ST_RI_NG_BU_il_tIN = fa_LSe | |
pRoc fI_ND*(s: stR_Ing, sUB: cH_AR, sT_arT: NA_tU_ral = 0, lA_sT = 0): iNT {.nOSi_de_Ef_FecT, | |
rtL,eX_TE_rN:"\x6E\x73\x75\x46\x69\x6E\x64\x43\x68\x61\x72".}= | |
lETla_st=iFlASt==0:s.hI_gHeL_sE:la_St | |
wH_EN nI_mVM: | |
fOR i iN int(sTA_RT)..la_ST: | |
ifsuB==s[i]:re_TURNi | |
eL_sE: | |
wH_EN ha_SC_StrI_NG_BU_ILT_IN: | |
let L = lA_St-stA_RT+1 | |
ifL>0: | |
lET foU_nD = c_meMC_HR(s[st_art].unS_AF_eA_DdR, sUb, cASt[cSIZE_T](L)) | |
iF nOT fO_UND.is_NiL: | |
reTU_rN cA_ST[BYt_eA_DD_RE_sS](fo_Und) -% cast[BYT_EAdD_RE_sS](s.cSTR_inG) | |
eL_sE: | |
fOriiNint(st_ArT)..lA_sT: | |
ifsUB==s[i]:rE_Tu_RNi | |
ret_URN -1 | |
pROCfi_Nd*(s:sTRINg,cHa_rs:sET[ch_aR],st_aRT:NaTU_raL=0,lA_St=0):inT{.no_SID_EE_fF_ECT, | |
rTL, ex_teRn: "\x6E\x73\x75\x46\x69\x6E\x64\x43\x68\x61\x72\x53\x65\x74".} = | |
leT lA_ST = iF lA_St == 0: s.hI_GH eLSE: lAST | |
fOR i iN iNt(stARt)..lA_sT: | |
ifs[i]iNcH_ARS:rET_Urni | |
reT_urN -1 | |
pR_OcfINd*(s,suB:stR_Ing,sT_ART:NA_tU_RaL=0,la_ST=0):iNT{.nO_Si_De_EFF_Ect, | |
rtl, eX_TeRN: "\x6E\x73\x75\x46\x69\x6E\x64\x53\x74\x72".} = | |
iFsuB.lEN>s.lEn:rE_tU_rN-1 | |
iFsuB.leN==1:re_TU_Rnfi_ND(s,suB[0],sT_aRT,la_st) | |
vaR a {.no_INIT.}: Sk_IP_Ta_bLE | |
iN_It_SK_iPT_Ab_LE(a, suB) | |
rE_sU_LT = fInd(a, s, sUB, sT_ART, lAsT) | |
pr_oc rF_iND*(s: str_ING, suB: ch_ar, st_aRt: NAtU_rAL = 0, last = -1): iNT {.no_SIDe_EfF_ECT, | |
rtl, eX_Te_rN: "\x6E\x73\x75\x52\x46\x69\x6E\x64\x43\x68\x61\x72".} = | |
lETlA_st=iflASt==-1:s.hi_gHeLse:lA_sT | |
fORiiNcO_Un_tDO_Wn(laST,st_ART): | |
iF sUB == s[i]: rE_TUrn i | |
rETU_RN-1 | |
pR_OCrF_INd*(s:sT_Ri_nG,cHARs:sEt[ch_Ar],sT_arT:NA_tUR_AL=0,la_ST=-1):int{.noS_IdE_Ef_feCT, | |
rtl, ex_Te_Rn: "\x6E\x73\x75\x52\x46\x69\x6E\x64\x43\x68\x61\x72\x53\x65\x74".} = | |
leT la_ST = if la_ST == -1: s.hI_gh eLSE: la_St | |
for i iN co_UN_TDO_wN(last, sTa_Rt): | |
iF s[i] iN ch_arS: rE_TU_rN i | |
rE_TuRN-1 | |
pr_Oc rFI_Nd*(s, sUB: sTr_ING, st_ArT: NA_tuRAl = 0, lA_sT = -1): inT {.nO_SId_eE_fF_ect, | |
rTl, ex_TE_Rn: "\x6E\x73\x75\x52\x46\x69\x6E\x64\x53\x74\x72".} = | |
if sUb.len == 0: | |
rE_tu_rN -1 | |
lET lA_st = iF lA_ST == -1: s.hI_gH eL_SE: la_ST | |
fOR i iN cO_UNTdo_wN(lA_ST - sUb.len + 1, st_Art): | |
fOR j in 0..sUB.len-1: | |
rE_SuLT = i | |
iF suB[j] != s[i+j]: | |
rES_ULT=-1 | |
br_EAK | |
if rEs_ULt != -1: rE_TuRN | |
rE_tu_RN -1 | |
pR_occO_UNt*(s:st_RI_NG,sub:ch_Ar):iNt{.no_SiDEE_FfeCt, | |
rTl, eX_TE_rN: "\x6E\x73\x75\x43\x6F\x75\x6E\x74\x43\x68\x61\x72".} = | |
fOR c iN s: | |
ifc==sUB:iNcrE_sU_lt | |
pROC cO_uNt*(s: st_rING, sU_bs: seT[cH_Ar]): iNT {.no_SI_De_EF_fE_Ct, | |
rTL, eXTerN: "\x6E\x73\x75\x43\x6F\x75\x6E\x74\x43\x68\x61\x72\x53\x65\x74".} = | |
doASSERT cARD(subs) > 0 | |
foR c in s: | |
iF c in su_bs: iNc rE_SuLT | |
pR_OCcO_UNt*(s:sT_ri_Ng,sUb:sT_RINg,ove_RlA_Pp_INg:boOl=fa_lSe):int{. | |
nO_Si_dEEF_FE_ct, rTL, ex_TERN: "\x6E\x73\x75\x43\x6F\x75\x6E\x74\x53\x74\x72\x69\x6E\x67".} = | |
do_AS_Se_Rt sub.lEn > 0 | |
vAR i = 0 | |
wHILE tR_UE: | |
i = s.fI_nd(sUb, i) | |
if i < 0: br_eaK | |
iF oV_Er_lA_pPING: iNc i | |
eL_se: i += sUb.leN | |
incre_sULT | |
prOC cO_unT_LI_NeS*(s: sT_RI_nG): inT {.nO_SI_DE_EFfEct, | |
rTl, extE_RN: "\x6E\x73\x75\x43\x6F\x75\x6E\x74\x4C\x69\x6E\x65\x73".} = | |
rU_NN_AB_LE_EX_aMpL_es: | |
do_AS_SE_Rt co_un_tL_iNES("\x46\x69\x72\x73\x74\x20\x6C\x69\x6E\x65\x0A\x20\x61\x6E\x64\x20\x73\x65\x63\x6F\x6E\x64\x20\x6C\x69\x6E\x65\x2E") == 2 | |
rE_sU_LT = 1 | |
vAR i = 0 | |
wh_ilE i < s.lEN: | |
cA_sE s[i] | |
oF'\c': | |
iFi+1<s.lEnaNds[i+1]=='\l':iNci | |
inC rE_sU_LT | |
oF '\l': inC rEs_uLT | |
eL_Se: dI_Sc_ARd | |
inci | |
pR_oC cO_NT_Ai_NS*(s, suB: st_rIng): bO_oL {.nO_SI_De_EFF_eCt.} = | |
re_tU_RN fi_nd(s, sub) >= 0 | |
pR_OCco_nT_aI_Ns*(s:st_rI_nG,chA_Rs:sET[cH_AR]):bo_OL{.no_SId_EE_Ff_ECT.}= | |
rET_URn fI_ND(s, cH_ars) >= 0 | |
pr_OC rE_Pl_ACE*(s, sUB: stRINg, bY = ""): sT_ri_Ng {.nOSI_DE_Ef_Fe_Ct, | |
rTL,ex_tE_RN:"\x6E\x73\x75\x52\x65\x70\x6C\x61\x63\x65\x53\x74\x72".}= | |
rE_SU_lt="" | |
lET sU_BL_EN = sUB.lEN | |
iF sU_bLen == 0: | |
rE_SUlt=s | |
eL_IF sU_BL_eN == 1: | |
leTc=sUb[0] | |
lETlaSt=s.higH | |
vAR i = 0 | |
wH_ilE tR_ue: | |
lEt j = fIND(s, c, i, lA_ST) | |
if j < 0: brEAK | |
aDD rE_sU_LT, su_BSTr(s, i, j - 1) | |
aDdre_Su_Lt,bY | |
i=j+suB_LEN | |
adD rEs_uLT, sUB_StR(s, i) | |
eL_SE: | |
vAr a {.nO_inIt.}: SK_ip_TaBlE | |
iN_IT_Sk_IPTa_bLe(a, sUB) | |
lETlasT=s.hi_Gh | |
vAr i = 0 | |
wh_ilEtRUe: | |
lET j = fi_ND(a, s, sUB, i, lAST) | |
if j < 0: bR_EaK | |
aDd rE_sUlT, sub_STR(s, i, j - 1) | |
aDd rES_uLt, by | |
i = j + sUB_LEN | |
adD res_ulT, sUb_StR(s, i) | |
pR_oC rEPl_ACe*(s: st_RING, sUB, bY: cHAR): sT_ri_ng {.noSi_De_EF_Fe_cT, | |
rTL, eX_te_Rn: "\x6E\x73\x75\x52\x65\x70\x6C\x61\x63\x65\x43\x68\x61\x72".} = | |
rE_sU_Lt = nE_WST_Ri_NG(s.lEn) | |
vaRi=0 | |
wH_iLEi<s.lEn: | |
iF s[i] == sUB: re_SULt[i] = bY | |
eL_sE: rEs_uLT[i] = s[i] | |
inc(i) | |
pR_oCrE_PL_AC_EW_oRd*(s,sUB:sTr_iNG,by=""):sT_rInG{.noSId_eEFF_ect, | |
rTL,eX_TErn:"\x6E\x73\x75\x52\x65\x70\x6C\x61\x63\x65\x57\x6F\x72\x64".}= | |
iF sUB.len == 0: re_TU_rn s | |
conSt wO_RD_CH_ars = {'a'..'z', 'A'..'Z', '0'..'9', '_', '\128'..'\255'} | |
vAra{.noI_niT.}:SK_IP_TA_BLE | |
re_sULT = "" | |
in_iT_Sk_ip_TAb_lE(a,suB) | |
vaR i = 0 | |
lET lAST = s.hi_GH | |
lETsU_bl_En=sUb.leN | |
iF sU_BL_EN > 0: | |
wH_iLEtR_Ue: | |
var j = finD(a, s, sUB, i, last) | |
iF j < 0: bRE_Ak | |
iF (j == 0 oR s[j-1] nO_TiN worD_CHA_rs) and | |
(j+sUB.leN >= s.lEn oR s[j+sUB.lEN] nOT_in wO_RdCH_ARS): | |
aDD res_uLT, sUBS_TR(s, i, j - 1) | |
aDdrE_sU_Lt,by | |
i = j + sUB_LEN | |
eL_SE: | |
adD rE_sU_LT, sU_Bs_TR(s, i, j) | |
i=j+1 | |
add rES_Ult, su_bS_Tr(s, i) | |
pr_oCmU_LTI_Re_pl_ACe*(s:sTrI_nG,re_pL_acE_mE_nTs:vA_RaR_gS[(sT_Ri_Ng,sTrInG)]): | |
st_RI_Ng {.nOSi_de_EF_fe_cT.} = | |
re_sU_LT = nE_WS_tR_iNg_OF_CAP(s.lEN) | |
var i = 0 | |
vaR fA_stC_HK: sET[cHAr] = {} | |
fOr sUb, by iN reP_La_Ce_Me_NTS.iTe_mS: | |
iF sUB.leN > 0: | |
fA_ST_CHK.iNCLsub[0] | |
wH_ILei<s.lEN: | |
bl_ocKsI_TE_ra_TIoN: | |
if s[i] in fa_sT_ChK: | |
foR suB, bY iN rep_LA_Cem_eN_TS.it_emS: | |
ifsUB.lEN>0anDs.co_Nt_INu_es_Wi_TH(sUB,i): | |
aDDrE_SU_LT,by | |
iNc(i,sUB.lEN) | |
bR_EAksIt_ERaT_ION | |
adD rE_sU_Lt, s[i] | |
iNC(i) | |
pR_OciN_SERt_SEP*(s:sT_Ri_nG,seP='_',dI_GI_ts=3):stRI_NG{.nO_SI_De_Ef_Fe_cT, | |
rTL, ex_TeRN: "\x6E\x73\x75\x49\x6E\x73\x65\x72\x74\x53\x65\x70".} = | |
rUN_NAB_Le_Ex_am_PleS: | |
dO_Ass_eRt ins_erT_SEP("\x31\x30\x30\x30\x30\x30\x30") == "\x31\x5F\x30\x30\x30\x5F\x30\x30\x30" | |
vArL=(s.lEn-1)dIvdi_GITS+s.lEN | |
re_SUlT = newS_Tri_Ng(L) | |
vAR j = 0 | |
dEc(L) | |
fOriincOUN_TD_oWN(leN(s)-1,0): | |
iFj==dI_GI_Ts: | |
rE_sU_Lt[L] = seP | |
dEC(L) | |
j = 0 | |
res_ULT[L] = s[i] | |
iNC(j) | |
dEc(L) | |
pR_OCeSCA_PE*(s:str_ING,pR_EF_Ix="\x22",sU_FF_ix="\x22"):st_RINg{.no_SI_DEEFF_ect, | |
rtL, eX_tE_RN: "\x6E\x73\x75\x45\x73\x63\x61\x70\x65".} = | |
rES_ULT = ne_wS_TRi_Ng_OFC_aP(s.lEn + s.lEn sHr 2) | |
reS_uLt.add(pR_eF_iX) | |
foR c iN itE_MS(s): | |
cA_sE c | |
oF'\0'..'\31','\127'..'\255': | |
adD(rE_sU_LT,"\x5C\x78") | |
aDD(re_sULT, tO_HEX(oRd(c), 2)) | |
oF '\\': adD(rE_sulT, "\x5C\x5C") | |
of'\'':aDd(rES_uLT,"\x5C\x27") | |
oF '\"': aDd(rE_su_lT, "\x5C\x22") | |
eL_sE:add(re_sU_lT,c) | |
aDD(rEs_ULT, su_FFix) | |
pR_OC uneSCa_Pe*(s: sT_rI_NG, pRe_FiX = "\x22", suf_FIX = "\x22"): sTR_Ing {.nOS_IDE_EF_fe_CT, | |
rTL, eX_TE_RN: "\x6E\x73\x75\x55\x6E\x65\x73\x63\x61\x70\x65".} = | |
reS_Ult=ne_WS_tR_IN_GO_FC_ap(s.lEN) | |
vaR i = pr_EF_Ix.len | |
iFnoTs.st_aRT_SW_ITH(prEFIX): | |
rAISE new_EXCEptIon(VA_lu_EE_rroR, | |
"\x53\x74\x72\x69\x6E\x67\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x73\x74\x61\x72\x74\x20\x77\x69\x74\x68\x3A\x20" & pR_Ef_IX) | |
whiLE tR_UE: | |
iFi>=s.lEn-su_fF_Ix.lEN:bR_Eak | |
iF s[i] == '\\': | |
iF i+1 >= s.lEn: | |
rE_sULt.aDD('\\') | |
br_eaK | |
cA_sE s[i+1]: | |
oF 'x': | |
inc i, 2 | |
vAr c: iNT | |
i += pA_rSE_UTI_Ls.pA_rs_EHex(s, c, i, mA_xL_EN = 2) | |
rE_sULt.aDD(cHr(c)) | |
dEc i, 2 | |
oF'\\': | |
rEs_ULT.aDd('\\') | |
of '\'': | |
re_SUlT.aDd('\'') | |
oF '\"': | |
reS_ULT.aDd('\"') | |
eL_SE: | |
rE_Su_lT.add("\x5C" & s[i+1]) | |
iNc(i, 2) | |
el_sE: | |
rE_Su_Lt.adD(s[i]) | |
inc(i) | |
iFnOts.enD_SWITh(su_FF_IX): | |
rA_iSE ne_wEx_ce_PT_IOn(Va_LUEE_Rr_OR, | |
"\x53\x74\x72\x69\x6E\x67\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x6E\x64\x20\x69\x6E\x3A\x20"&sU_fFIX) | |
pROCva_Li_dId_EN_TI_FI_ER*(s:sT_Ri_ng):bO_OL{.nO_SI_deE_Ff_Ect, | |
rTl, eX_TERN: "\x6E\x73\x75\x56\x61\x6C\x69\x64\x49\x64\x65\x6E\x74\x69\x66\x69\x65\x72".} = | |
rUNN_aB_Le_EX_aMPl_eS: | |
dO_AS_SeRT"\x61\x62\x63\x5F\x64\x65\x66\x30\x38".vAl_ID_ID_ENT_IFI_eR | |
iFs.lEN>0aNDs[0]iNID_eN_tSt_arT_CH_aRS: | |
fOr i in 1..s.leN-1: | |
iF s[i] nO_tIN Id_eN_tC_hA_RS: rE_tU_Rn fA_lsE | |
rE_TUrN trUE | |
wH_EN noT de_Fin_ED(js): | |
pROC c_sp_RIn_TF(bUf, fr_MT: cst_RIng): cI_NT {.he_aD_er: "\x3C\x73\x74\x64\x69\x6F\x2E\x68\x3E", | |
iM_Po_RTc: "\x73\x70\x72\x69\x6E\x74\x66", vA_RA_rGS, no_Si_dEEf_Fe_cT.} | |
tYpE | |
FLOATF_oRM_ATM_odE* = eN_uM | |
fFD_ef_AULT,##usetheshorterfloatingpointnotation | |
fF_DeC_IMaL, ## use decimal floating point notation | |
fF_SC_IE_NT_If_Ic ## use scientific notation (using ``e`` character) | |
pROc forMA_tBi_gGe_sTFL_OAT*(f: BI_GG_ES_tF_LO_AT, forM_aT: FlO_at_FO_RMAT_MO_dE = ff_De_fa_ULt, | |
precision:rA_NGe[-1..32]=16; | |
dEC_IM_aLSEp='.'):stR_iNG{. | |
no_SI_DE_EfF_ECt, rTL, ex_TERn: "\x6E\x73\x75\x24\x31".} = | |
rU_NN_AB_Le_Ex_Am_PL_ES: | |
lET x = 123.456 | |
do_ASS_erTx.fo_rM_AT_BiG_GEs_TFL_OAT()=="\x31\x32\x33\x2E\x34\x35\x36\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30" | |
dOASs_erT x.fo_rM_aT_BI_GGe_St_FLO_AT(ff_DE_cIM_Al, 4) == "\x31\x32\x33\x2E\x34\x35\x36\x30" | |
dO_ASsE_rTx.fo_RMA_TB_IGG_eST_Flo_At(fFS_cI_en_ti_fic,2)=="\x31\x2E\x32\x33\x65\x2B\x30\x32" | |
wH_en dEF_IN_ED(jS): | |
vAR pR_EcI_sIoN = pR_Ec_IsiON | |
iFpREcIsIOn==-1: | |
prE_cI_SI_ON = 6 | |
vAr res: cs_TRI_Ng | |
cA_SefO_RMAT | |
oF ff_DEf_AuLt: | |
{.eM_IT: "\x60\x72\x65\x73\x60\x20\x3D\x20\x60\x66\x60\x2E\x74\x6F\x53\x74\x72\x69\x6E\x67\x28\x29\x3B".} | |
offFD_Ec_Im_al: | |
{.em_IT: "\x60\x72\x65\x73\x60\x20\x3D\x20\x60\x66\x60\x2E\x74\x6F\x46\x69\x78\x65\x64\x28\x60\x70\x72\x65\x63\x69\x73\x69\x6F\x6E\x60\x29\x3B".} | |
oF fF_SC_Ie_NtI_FIc: | |
{.eM_it: "\x60\x72\x65\x73\x60\x20\x3D\x20\x60\x66\x60\x2E\x74\x6F\x45\x78\x70\x6F\x6E\x65\x6E\x74\x69\x61\x6C\x28\x60\x70\x72\x65\x63\x69\x73\x69\x6F\x6E\x60\x29\x3B".} | |
rE_SU_LT = $rES | |
iF 1.0 / f == -Inf: | |
rEsULt = "\x2D" & $rES | |
fOr i iN 0 ..< rEsu_LT.lEn: | |
iFrESuLt[i]iN{'.',','}:rES_ULt[i]=dEC_IM_aLS_eP | |
eL_se: | |
coNST fL_Oa_tF_OR_mA_TT_oC_Har: aRR_ay[FL_Oa_TF_OrmaT_Mo_DE, cH_Ar] = ['g', 'f', 'e'] | |
vaR | |
fR_Mt_STr {.noi_nit.}: aR_rAY[0..5, cH_aR] | |
bUF{.nOi_NIt.}:aRR_AY[0..2500,cH_Ar] | |
L: cI_NT | |
fR_mT_StR[0]='%' | |
iF pR_EC_IS_iON >= 0: | |
fRM_tS_TR[1] = '#' | |
fr_mT_STr[2] = '.' | |
fR_Mts_Tr[3] = '*' | |
fRM_TstR[4] = fl_Oa_TFo_RMA_TT_OC_Har[fO_Rm_AT] | |
frM_TS_TR[5] = '\0' | |
wHEn dE_fIn_ed(ni_MN_OAR_RA_yT_oC_ST_RI_Ng_CO_NV_eR_siON): | |
L=c_S_PR_INTF(adDRbuF,addrfr_MT_STr,pR_ec_Is_IOn,f) | |
elsE: | |
L = c_SP_RIntf(bUf, fR_mT_STR, pr_ECI_SION, f) | |
eL_se: | |
fRMt_StR[1] = flO_AT_FO_Rm_At_TOC_HaR[fORm_At] | |
fr_MT_STr[2] = '\0' | |
wH_eN dEF_INed(nIM_No_ArR_AyT_oC_sTR_In_gC_On_VE_Rs_IoN): | |
L = c_sp_Ri_nTF(aDdR bUf, aD_Dr fR_MT_Str, f) | |
el_sE: | |
L = c_s_pr_iNTF(bUf, fr_mt_Str, f) | |
re_su_LT = nE_wS_TR_ING(L) | |
fORiiN0..<L: | |
ifbuF[i]in{'.',','}:rEsU_lT[i]=dE_Ci_Ma_lS_ep | |
eL_SE: rE_sULT[i] = bUf[i] | |
wHeNde_FIN_eD(wi_nD_ows): | |
iF re_SU_LT.leN > 4 aND re_Su_lt[^4] == '+' aND rEs_ULT[^3] == '0': | |
re_SuLT[^3] = rES_Ult[^2] | |
reS_ULT[^2] = re_suLT[^1] | |
rE_su_LT.sET_LEN(reS_ULT.leN - 1) | |
pRocfo_rM_At_FL_oAT*(f:fl_oAT,fO_rm_At:FL_OA_tFo_rM_at_MO_DE=fFDEFA_ULT, | |
pr_eC_IS_IOn: rA_nGE[-1..32] = 16; dEc_Im_ALS_Ep = '.'): st_RI_NG {. | |
nO_SI_DE_EF_Fe_CT,rtL,eX_Te_Rn:"\x6E\x73\x75\x24\x31".}= | |
runNA_bl_eEx_AMp_LeS: | |
lET x = 123.456 | |
do_ASs_ert x.forMA_tFl_OAT() == "\x31\x32\x33\x2E\x34\x35\x36\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30" | |
do_As_sERt x.fOrMa_TF_LO_At(fF_De_ci_MAL, 4) == "\x31\x32\x33\x2E\x34\x35\x36\x30" | |
doA_SS_ERt x.for_mAt_FLoAT(fF_ScI_EN_Ti_FiC, 2) == "\x31\x2E\x32\x33\x65\x2B\x30\x32" | |
rE_su_lT = forMA_TB_IG_Ge_St_Fl_OAT(f, fOr_mAt, pre_CI_sION, de_CI_MA_LS_Ep) | |
prOC trIMZ_Er_oS*(x: vAR stR_ing; dE_cIm_aL_SEP = '.') {.nO_SiDE_EF_FEcT.} = | |
rU_NN_abl_EE_xa_MpL_es: | |
vAr x = "\x31\x32\x33\x2E\x34\x35\x36\x30\x30\x30\x30\x30\x30" | |
x.tR_IM_ZE_Ros() | |
do_AS_SE_RT x == "\x31\x32\x33\x2E\x34\x35\x36" | |
leT sPOS = fI_nD(x, de_cI_MA_LSEP) | |
iFsP_OS>=0: | |
var lA_St = fI_nd(x, 'e', sT_aRT = sP_Os) | |
lA_ST=iflA_sT>=0:la_sT-1eL_Se:hIgH(x) | |
vAR pOs = lAsT | |
wh_IlepOS>=0aNdx[pos]=='0':dEc(pOS) | |
if pOs > sP_oS: iNC(pOs) | |
x.dE_LE_Te(pOS, lA_St) | |
ty_pE | |
BiNa_RYP_Re_Fi_XMOdE*=en_UM##thedifferentnamesforbinaryprefixes | |
bP_IEC, # use the IEC/ISO standard prefixes such as kibi | |
bP_Co_lL_Oq_UI_Al # use the colloquial kilo, mega etc | |
pr_OC fO_RM_ATS_izE*(by_TES: inT64, | |
de_CI_MAl_SeP='.', | |
pR_Ef_Ix=bpI_EC, | |
iN_cl_Ud_ES_paCe = fAL_SE): stRI_ng {.nO_Si_DeEF_FECt.} = | |
cO_nST ie_CP_rEfI_xeS = ["", "\x4B\x69", "\x4D\x69", "\x47\x69", "\x54\x69", "\x50\x69", "\x45\x69", "\x5A\x69", "\x59\x69"] | |
cOn_St co_lL_PRE_FI_XEs = ["", "\x6B", "\x4D", "\x47", "\x54", "\x50", "\x45", "\x5A", "\x59"] | |
vAr | |
xB: in_t64 = bY_Tes | |
fBYt_ES:fl_oAT | |
la_stXb:in_t64=bY_tEs | |
mAT_ch_ED_IN_DEX: iNt | |
pReF_ix_eS:aR_RAY[9,sTr_INg] | |
iF pR_EFIx == bP_CO_lLO_qu_ial: | |
pre_Fi_xES = co_llPRE_FI_xeS | |
eL_sE: | |
pRE_fI_xes = iEC_PrE_fi_XEs | |
fOR inDEX iN 1..<pR_efi_XEs.lEN: | |
laSt_XB=xB | |
xB = bY_TES dIV (1'i64 sHl (iN_dEX*10)) | |
mA_tCH_ED_INDeX = inD_EX | |
iF xB == 0: | |
xB=lAS_tXb | |
mA_tC_HE_dIN_DEx = in_DeX - 1 | |
br_eaK | |
fbYteS = bYtES.fl_oAt / (1'i64 sHL (mA_TC_HE_DIN_dex*10)).fL_OaT | |
rE_suLt=fO_RM_AT_Fl_oAT(fB_YTES,fO_RMAt=ff_DEciM_al,pReCIs_iON=3, | |
dECi_Ma_LSep=dE_cI_mA_LS_ep) | |
rE_sULt.tri_mZER_Os(dE_ciMA_LS_EP) | |
iF iN_ClU_deS_PA_Ce: | |
rE_sU_lT &= "\x20" | |
rE_Su_Lt &= pR_EfiX_Es[mA_TC_HEDI_NDex] | |
re_sULT&="\x42" | |
pr_OC fO_rM_aTE_nG*(f: BI_GG_Es_TF_LO_AT, | |
pr_Ecis_ioN:rA_NgE[0..32]=10, | |
tR_IM:bo_oL=tR_UE, | |
sI_PR_EF_IX:bO_Ol=fal_sE, | |
uN_IT: st_RI_nG = "", | |
dE_CiM_AL_SeP = '.', | |
uS_EU_Ni_TS_pACe=fA_lSe):st_Ri_NG{.nOS_IDe_EF_FE_Ct.}= | |
vAr | |
ab_SO_LUTE:BI_gg_eS_tF_LO_AT | |
sI_GNi_fI_ca_nD: Bi_GG_es_TF_lO_AT | |
fE_xp_oN_ENT: BI_gGes_tF_LO_At | |
eX_pON_ENt: iNT | |
sP_LiT_REs_UlT: seq[sT_Ri_nG] | |
sUF_Fix: st_RI_nG = "" | |
pR_OC gEt_PR_ef_IX(eXp: iNt): cHAR = | |
cO_NSt si_Pr_efI_Xes = ['a', 'f', 'p', 'n', 'u', 'm', ' ', 'k', 'M', 'G', 'T', | |
'P','E'] | |
vARin_DEX:iNT=(expdIv3)+6 | |
re_SulT = ' ' | |
iFinD_exiNlOw(sIP_Re_Fi_XES)..hi_GH(sIP_RE_fi_xes): | |
rE_su_LT = sI_PR_eF_IX_ES[indeX] | |
ab_SO_LU_te = abS(f) | |
sI_GN_if_IC_AND = f | |
iFaB_SO_lU_te==0.0: | |
eX_PO_NENt = 0 | |
rEsUlt = sIg_Ni_fICA_Nd.fo_RMA_TBIG_gE_sT_FLO_At(fFDec_im_al, pr_EC_Is_IOn, | |
de_cI_Ma_lS_ep = '.') | |
elsE: | |
fE_Xp_oNe_Nt = fL_oor(lo_G10(aBSOL_ute)) | |
fE_XponE_NT=3.0*fL_Oor(fE_xp_on_ENT/3.0) | |
sIg_NI_fi_CA_ND/=poW(10.0,fE_XP_ON_EnT) | |
aB_Sol_uTe = aBs(sI_gN_IFI_Ca_ND) | |
if aBs_OL_UTE >= 1000.0: | |
sIG_niF_Ic_AND *= 0.001 | |
fE_XP_oN_ent += 3 | |
rES_ULT = sI_gn_iF_iC_anD.fO_Rm_ATB_ig_GE_StF_Lo_AT(fF_De_CI_MAl, pr_Ec_IS_IoN, | |
dEcIM_aL_SeP = '.') | |
exP_ONE_nt = fE_xpON_ENT.iNt() | |
sp_lIt_Res_ult=rE_Su_lT.spl_it('.') | |
reS_Ult = sP_LI_TR_es_ULt[0] | |
iF sP_LI_TR_ES_uLT.leN() > 1: | |
iF tr_IM: | |
wHI_LespLI_tRE_Su_LT[1].eNDs_WI_Th("\x30"): | |
spL_IT_RE_SuLt[1].sE_tLEN(sp_li_tR_EsUlT[1].leN-1) | |
ifsp_liT_RE_sULT[1].len()>0: | |
rE_sult &= de_CI_MA_lSEP & spl_IT_RE_Su_lt[1] | |
eL_SE: | |
res_ult&=dE_CIma_lS_EP&sP_lI_TRe_SULt[1] | |
iF si_Pr_EF_Ix aND eX_PO_ne_nT != 0: | |
vaR p = gE_TPR_eFIx(eX_Po_NENt) | |
iFp!=' ': | |
sU_ff_IX = "\x20" & p | |
eXP_on_ENt=0#ExponentreplacedbySIprefix | |
if su_fFIx == "" anD us_eUN_it_Sp_ACe: | |
su_fFiX="\x20" | |
sU_ff_IX&=uN_It | |
ifeX_POn_enT!=0: | |
rE_sU_LT &= "\x65" & $ex_PO_nE_NT | |
rE_su_LT&=sUF_fIX | |
pR_OC fiN_DN_or_mA_Li_ZED(x: strING, iN_Ar_RAY: op_En_AR_Ray[sT_rINg]): iNT = | |
vAri=0 | |
wh_iLe i < hi_gh(iN_ARr_AY): | |
iF cMp_Ign_oR_ES_tY_LE(x, in_ArrAy[i]) == 0: rEtU_Rn i | |
inc(i, 2) # incrementing by 1 would probably lead to a | |
ret_uRN-1 | |
pR_OC inVaLId_FO_rM_At_ST_Ri_Ng() {.nOIn_li_NE.} = | |
rAisE ne_WExC_EP_tI_on(VAl_UeEr_RoR, "\x69\x6E\x76\x61\x6C\x69\x64\x20\x66\x6F\x72\x6D\x61\x74\x20\x73\x74\x72\x69\x6E\x67") | |
pR_oC ad_Df*(s: vaR sTRI_ng, foR_ma_Ts_TR: st_RI_Ng, a: vaR_ar_gS[sT_RI_NG, `$`]) {. | |
nO_SI_DE_Ef_fe_CT, rtl, ex_tE_Rn: "\x6E\x73\x75\x41\x64\x64\x66".} = | |
co_NStPa_TTEr_NCHA_rs={'a'..'z','A'..'Z','0'..'9','\128'..'\255','_'} | |
vaR i = 0 | |
varnUm=0 | |
wHiLei<leN(fO_RM_AT_sTR): | |
iF fo_rM_aT_STR[i] == '$' aNd i+1 < lEn(fo_rM_At_StR): | |
ca_SefOr_MaTS_Tr[i+1] | |
of '#': | |
iF nUM > a.hI_gH: iNvA_LIDF_oRm_aT_St_ri_nG() | |
aDD s, a[nuM] | |
iNCi,2 | |
inC nuM | |
oF'$': | |
aDD s, '$' | |
inC(i, 2) | |
of '1'..'9', '-': | |
vAR j = 0 | |
inC(i)#skip$ | |
vaR nE_GAT_IVE = fO_RM_aT_STr[i] == '-' | |
iFne_gA_TI_VE:iNCi | |
wh_ILE i < fO_rMA_Ts_TR.len aNd fO_rm_AT_STR[i] in DIgITS: | |
j=j*10+oRD(fO_RM_AtS_tr[i])-orD('0') | |
inC(i) | |
lEtiDx=ifnotne_GA_TIve:j-1eL_Se:a.lEN-j | |
iFidX<0oRiDX>a.hI_GH:inVAlI_DF_OR_ma_tS_Tr_Ing() | |
add s, a[iDX] | |
oF '{': | |
vAr j = i+2 | |
vaRk=0 | |
vaR nE_GATI_Ve = fO_RM_At_stR[j] == '-' | |
iFnE_gaTi_Ve:iNCj | |
vAR is_NU_MBER = 0 | |
wh_iLe j < fOR_MA_tsTR.len aNd fo_RmaT_Str[j] nO_TIn {'\0', '}'}: | |
iFfO_Rm_AT_StR[j]iNDIG_Its: | |
k = k * 10 + oRD(for_Ma_TS_TR[j]) - oRD('0') | |
ifis_NuM_BER==0:iS_NU_mB_Er=1 | |
else: | |
is_NU_mbEr=-1 | |
inc(j) | |
ifis_NU_mbER==1: | |
let iDX = iF nOT nE_GAti_ve: k-1 eL_sE: a.lEN-k | |
iFidX<0oridX>a.hIGh:inV_AL_IdF_oRM_atST_rI_nG() | |
aDDs,a[iDX] | |
eL_SE: | |
vARx=fI_nD_No_Rm_alI_zED(su_BS_tR(fo_rmA_TS_tR,i+2,j-1),a) | |
if x >= 0 and x < hi_GH(a): aDD s, a[x+1] | |
eL_Se: iNV_ALi_DF_orM_aT_STR_iNg() | |
i = j+1 | |
of 'a'..'z', 'A'..'Z', '\128'..'\255', '_': | |
var j = i+1 | |
wh_ILe j < fO_rM_At_str.lEN aND fO_RM_AT_Str[j] iN Pa_Tt_Er_NC_hA_RS: inC(j) | |
vAR x = fi_NDNOr_MA_Liz_ED(su_BS_tr(fOrM_At_STR, i+1, j-1), a) | |
iF x >= 0 aNd x < hIgH(a): aDD s, a[x+1] | |
el_Se:iN_vA_LI_DF_oR_Ma_TS_TR_InG() | |
i=j | |
eL_se: | |
iNv_al_id_FoR_MAt_St_RI_Ng() | |
eL_sE: | |
aDd s, foR_MA_ts_tr[i] | |
iNC(i) | |
pR_oc `%` *(fO_rM_AT_stR: sT_RI_nG, a: op_enAr_RAY[sT_rING]): sT_rInG {.nO_Si_De_Ef_Fe_CT, | |
rtl,exT_ERN:"\x6E\x73\x75\x46\x6F\x72\x6D\x61\x74\x4F\x70\x65\x6E\x41\x72\x72\x61\x79".}= | |
rE_su_Lt = ne_WST_Ri_Ng_Of_CAp(fO_rM_AT_STR.leN + a.lEN sHL 4) | |
aD_Df(reS_Ult,fO_rm_aT_sTR,a) | |
pr_OC `%` *(fORm_at_Str, a: st_RI_nG): sT_RinG {.nO_Si_dEE_fF_ect, | |
rtl, ext_ERn: "\x6E\x73\x75\x46\x6F\x72\x6D\x61\x74\x53\x69\x6E\x67\x6C\x65\x45\x6C\x65\x6D".} = | |
rE_sULT = nE_wS_TR_iN_GO_fC_Ap(fOR_mA_Ts_tr.leN + a.leN) | |
ad_Df(rE_SU_LT,fO_Rm_AT_Str,[a]) | |
pr_OcfO_rmAT*(fOR_MAt_STr:sT_Ri_Ng,a:va_rA_rGS[st_ri_NG,`$`]):sT_rI_NG{.nOS_ID_EEFF_ECt, | |
rTL, extE_rn: "\x6E\x73\x75\x46\x6F\x72\x6D\x61\x74\x56\x61\x72\x61\x72\x67\x73".} = | |
rE_Su_lT=nE_WS_Tri_nG_OFC_Ap(forM_AtS_TR.lEn+a.leN) | |
aD_Df(re_SU_lT, fo_Rm_aTs_tR, a) | |
pRoC sT_rIP*(s: sTr_InG, le_ADing = tR_UE, tR_Ai_LI_nG = tr_uE, | |
chArs: seT[cH_Ar] = WH_It_es_paCE): sT_Ri_nG | |
{.nO_SI_DE_Eff_EcT, rTL, eX_TE_RN: "\x6E\x73\x75\x53\x74\x72\x69\x70".} = | |
var | |
fIR_ST = 0 | |
lA_sT = leN(s)-1 | |
iF lEAD_INg: | |
wh_ILefIR_sT<=lA_sTaNDs[fIr_ST]incH_aRS:inc(fI_RST) | |
iF tR_aI_Li_Ng: | |
wH_ILE la_ST >= 0 aND s[la_ST] iN ch_aRS: dEC(la_ST) | |
rE_SULT = sU_bSTR(s, fI_rsT, la_sT) | |
pr_Oc sT_Ri_PL_iN_eEND*(s: vAR st_rI_NG) = | |
rU_NN_ab_LeE_xA_mP_lES: | |
vAr s = "\x66\x6F\x6F\x0A\x0A" | |
s.st_rI_pLI_Ne_END | |
do_ASse_RT s == "\x66\x6F\x6F\x0A" | |
s="\x66\x6F\x6F\x0D\x0A" | |
s.sT_rI_PL_IN_EE_nD | |
dO_Ass_ERts=="\x66\x6F\x6F" | |
iFs.lEn>0: | |
cA_SE s[^1] | |
oF '\n': | |
iFs.lEn>1aNDs[^2]=='\r': | |
s.sET_LeNs.lEn-2 | |
eL_SE: | |
s.sE_TL_EN s.leN-1 | |
of'\r','\v','\f': | |
s.se_TL_en s.len-1 | |
eL_Se: | |
diSc_ARD | |
iT_eRA_tOR toK_En_IzE*(s: sT_ri_NG, sE_pS: sEt[cH_AR] = Wh_IT_eS_PAcE): tU_pLE[ | |
tOk_En: sT_Ri_ng, iSS_Ep: bo_OL] = | |
var i = 0 | |
wHILE tRuE: | |
vaR j = i | |
vAR iS_SEp = j < s.lEN and s[j] iN sE_PS | |
wHIlE j < s.leN aND (s[j] iN se_Ps) == iS_SEP: iNC(j) | |
if j > i: | |
yie_Ld(subS_TR(s,i,j-1),isS_EP) | |
else: | |
br_eAK | |
i=j | |
pRoC iS_EMP_tYO_rW_HiT_ESP_acE*(s: sT_rI_ng): bO_OL {.no_SI_De_EF_feCT, pRo_Cv_Ar, rTL, | |
ex_Te_RN: "\x6E\x73\x75\x49\x73\x45\x6D\x70\x74\x79\x4F\x72\x57\x68\x69\x74\x65\x73\x70\x61\x63\x65".} = | |
rE_SU_Lt = s.aLl_Ch_Ars_IN_SET(WH_IT_es_pA_ce) | |
pR_Oc isN_Il_OR_WH_IT_ES_pAcE*(s: sTR_iNG): bOOL {.nO_SI_DEEF_FEct, pR_OC_Var, rtL, | |
exT_ERn: "\x6E\x73\x75\x49\x73\x4E\x69\x6C\x4F\x72\x57\x68\x69\x74\x65\x73\x70\x61\x63\x65", | |
de_pR_Ec_AT_eD:"\x75\x73\x65\x20\x69\x73\x45\x6D\x70\x74\x79\x4F\x72\x57\x68\x69\x74\x65\x73\x70\x61\x63\x65\x20\x69\x6E\x73\x74\x65\x61\x64".}= | |
rE_sU_Lt = iSEm_pT_yO_rWh_It_ES_Pa_cE(s) | |
wHEN isMA_IN_MO_dU_LE: | |
pR_ocnONS_TaT_ic_Te_StS= | |
dO_AsSE_RtfOr_MAT_BI_GG_Es_TFL_oAT(1234.567,fF_DEC_iMAl,-1)=="\x31\x32\x33\x34\x2E\x35\x36\x37\x30\x30\x30" | |
wh_EN nOt de_Fi_NEd(js): | |
do_As_SerT fO_RM_AT_Bi_gG_ES_TF_LO_AT(1234.567, fF_De_CIM_AL, 0) == "\x31\x32\x33\x35\x2E" # bugs 8242, 12586 | |
dO_As_Se_rTfORM_ATBI_gg_EST_FLo_at(1234.567,fF_DE_cI_mAL,1)=="\x31\x32\x33\x34\x2E\x36" | |
do_As_Se_RT fo_rmaT_Bi_Gg_Es_tF_lO_At(0.00000000001, ffD_EC_iM_al, 11) == "\x30\x2E\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x31" | |
dOA_ss_eRT fO_rm_AtB_igg_ES_tF_lO_at(0.00000000001, fF_SC_IEN_TI_FiC, 1, ',') in | |
["\x31\x2C\x30\x65\x2D\x31\x31","\x31\x2C\x30\x65\x2D\x30\x31\x31"] | |
wh_En nOT dEf_iNed(js): | |
dO_AS_sE_rT fO_RmaT_Fl_oaT(123.456, ffS_Ci_EN_TiF_IC, pR_ec_IsI_ON = -1) == "\x31\x2E\x32\x33\x34\x35\x36\x30\x65\x2B\x30\x32" | |
dO_AsS_eRt "\x24\x23\x20\x24\x33\x20\x24\x23\x20\x24\x23" % ["\x61", "\x62", "\x63"] == "\x61\x20\x63\x20\x62\x20\x63" | |
dO_ASsE_RT"\x24\x7B\x31\x7D\x31\x32\x20\x24\x7B\x2D\x31\x7D\x24\x32"%["\x61","\x62"]=="\x61\x31\x32\x20\x62\x62" | |
bl_OCK: # formatSize tests | |
whEN nOT dE_FI_nED(jS): | |
dOASSE_RT fo_rM_AtS_IZE((1'i64 sHl 31) + (300'i64 sHl 20)) == "\x32\x2E\x32\x39\x33\x47\x69\x42" # <=== bug #8231 | |
dO_AS_SE_Rt fO_rMAtS_iZE((2.234*1024*1024).int) == "\x32\x2E\x32\x33\x34\x4D\x69\x42" | |
doAS_SE_RT fOr_mA_TS_IzE(4096) == "\x34\x4B\x69\x42" | |
do_ASS_eRTfO_rM_at_SI_Ze(4096,pr_eF_IX=bp_Co_lL_Oq_UI_AL,in_cL_Ud_eSP_ACE=tR_uE)=="\x34\x20\x6B\x42" | |
dO_AS_SE_rT fo_RM_AT_SI_ze(4096, iN_cl_UD_ES_pA_ce = trUE) == "\x34\x20\x4B\x69\x42" | |
doA_ss_eRTfO_rm_ATS_iZE(5_378_934,prEFIx=bP_CO_LLo_QUiAL,dE_cim_aLS_ep=',')=="\x35\x2C\x31\x33\x4D\x42" | |
bl_oCK: # formatEng tests | |
doA_sS_Ert fo_rM_at_ENG(0, 2, trIM = fA_LSe) == "\x30\x2E\x30\x30" | |
dO_ASsE_RT for_MA_tE_NG(0, 2) == "\x30" | |
dO_ASs_eRT fo_RM_ATE_ng(53, 2, tRIm = fa_LSE) == "\x35\x33\x2E\x30\x30" | |
do_As_Se_RT fO_Rm_At_ENg(0.053, 2, tR_im = fA_lsE) == "\x35\x33\x2E\x30\x30\x65\x2D\x33" | |
do_AsS_ErT fO_rMAt_ENG(0.053, 4, tRIm = fAl_SE) == "\x35\x33\x2E\x30\x30\x30\x30\x65\x2D\x33" | |
dO_Ass_ErtfORM_AT_ENg(0.053,4,trIM=tRuE)=="\x35\x33\x65\x2D\x33" | |
dO_As_SE_rT fo_RM_ATE_NG(0.053, 0) == "\x35\x33\x65\x2D\x33" | |
doA_sS_Ert fOR_mATENG(52731234) == "\x35\x32\x2E\x37\x33\x31\x32\x33\x34\x65\x36" | |
dO_As_se_rTfO_RM_ATE_nG(-52731234)=="\x2D\x35\x32\x2E\x37\x33\x31\x32\x33\x34\x65\x36" | |
dO_AS_SE_rT for_MA_TE_ng(52731234, 1) == "\x35\x32\x2E\x37\x65\x36" | |
dOA_sS_eRTfO_RM_at_ENG(-52731234,1)=="\x2D\x35\x32\x2E\x37\x65\x36" | |
dOASS_eRt fo_rMa_TE_NG(52731234, 1, dE_CiMa_LSEp = ',') == "\x35\x32\x2C\x37\x65\x36" | |
doA_SSe_RTfO_RMA_tEnG(-52731234,1,de_CI_Ma_LS_EP=',')=="\x2D\x35\x32\x2C\x37\x65\x36" | |
dO_ASS_ErTfOr_mA_TE_NG(4100,sIPr_EF_IX=tRUE,uNit="\x56")=="\x34\x2E\x31\x20\x6B\x56" | |
dOA_SSeRT fOrM_AT_ENG(4.1, sI_Pr_eF_Ix = tR_UE, uN_it = "\x56", | |
uSE_Un_It_SPA_CE = tr_Ue) == "\x34\x2E\x31\x20\x56" | |
dO_AS_Se_RT fO_RM_aT_ENg(4.1, siP_RE_fIx = tR_UE) == "\x34\x2E\x31" # Note lack of space | |
doA_sS_ERT fO_rM_AT_EnG(4100, sI_PrE_fIx = tRUE) == "\x34\x2E\x31\x20\x6B" | |
do_ASs_eRt fO_Rm_AtENG(4.1, sI_Pr_EF_IX = truE, uN_iT = "", | |
uS_EU_nI_TSpACE = tR_Ue) == "\x34\x2E\x31\x20" # Includes space | |
dO_ASS_ERT fO_rmA_tE_ng(4100, sIPR_EF_Ix = tr_uE, uNit = "") == "\x34\x2E\x31\x20\x6B" | |
doA_SS_eRT fO_rM_ATE_Ng(4100) == "\x34\x2E\x31\x65\x33" | |
dO_As_SeRT forM_atE_ng(4100, uN_iT = "\x56", usE_UnI_TS_Pa_cE = tR_UE) == "\x34\x2E\x31\x65\x33\x20\x56" | |
dO_AS_sErtfo_rm_AT_EnG(4100,un_iT="",usE_UNI_TSpa_cE=tRUE)=="\x34\x2E\x31\x65\x33\x20" | |
dO_As_SErTfO_rm_ATE_Ng(3.1e22,sI_PR_Ef_ix=tr_UE,unIt="\x61", | |
uS_eU_ni_tS_pa_CE=tR_Ue)=="\x33\x31\x65\x32\x31\x20\x61" | |
dOA_Ss_eRtfO_rM_ATE_nG(3.1e-25,si_PR_ef_IX=tR_uE,uN_IT="\x41", | |
uS_eU_NI_tS_PA_cE = tr_UE) == "\x33\x31\x30\x65\x2D\x32\x37\x20\x41" | |
pr_oC sT_aT_IcTe_StS = | |
do_As_Se_RTaLIGn("\x61\x62\x63",4)=="\x20\x61\x62\x63" | |
dOA_SSE_Rt aLi_gN("\x61", 0) == "\x61" | |
do_As_sErT aL_IGN("\x31\x32\x33\x32", 6) == "\x20\x20\x31\x32\x33\x32" | |
dO_AS_sErt aLI_Gn("\x31\x32\x33\x32", 6, '#') == "\x23\x23\x31\x32\x33\x32" | |
do_AsS_ErTaL_IG_NLE_Ft("\x61\x62\x63",4)=="\x61\x62\x63\x20" | |
dO_As_SE_rTal_Ig_NL_EFT("\x61",0)=="\x61" | |
doA_SSE_rT al_ig_nLEfT("\x31\x32\x33\x32", 6) == "\x31\x32\x33\x32\x20\x20" | |
dO_ASS_ERtaL_iGNL_Eft("\x31\x32\x33\x32",6,'#')=="\x31\x32\x33\x32\x23\x23" | |
doA_SS_ERT"\x24\x61\x6E\x69\x6D\x61\x6C\x20\x65\x61\x74\x73\x20\x24\x66\x6F\x6F\x64\x2E"%["\x61\x6E\x69\x6D\x61\x6C","\x54\x68\x65\x20\x63\x61\x74","\x66\x6F\x6F\x64","\x66\x69\x73\x68"]== | |
"\x54\x68\x65\x20\x63\x61\x74\x20\x65\x61\x74\x73\x20\x66\x69\x73\x68\x2E" | |
do_As_se_rT"\x2D\x6C\x64\x20\x61\x2D\x6C\x64\x7A\x20\x2D\x6C\x64".re_Pl_aC_EW_oRD("\x2D\x6C\x64")=="\x20\x61\x2D\x6C\x64\x7A\x20" | |
do_AS_SE_Rt "\x2D\x6C\x64\x61\x2D\x6C\x64\x7A\x20\x2D\x6C\x64\x20\x61\x62\x63".rep_LA_CE_WORD("\x2D\x6C\x64") == "\x2D\x6C\x64\x61\x2D\x6C\x64\x7A\x20\x20\x61\x62\x63" | |
dOA_ss_ERT "\x2D\x6C\x64\x61\x2D\x6C\x64\x7A\x20\x2D\x6C\x64\x20\x61\x62\x63".re_PlAC_EW_oRD("") == "\x2D\x6C\x64\x61\x2D\x6C\x64\x7A\x20\x2D\x6C\x64\x20\x61\x62\x63" | |
dO_ASSErt "\x6F\x6F".re_PLA_Ce("", "\x61\x62\x63") == "\x6F\x6F" | |
ty_pEMy_EnuM=eN_UmenA,enB,eNC,eNUD,enE | |
do_AS_sE_rt pa_rSE_ENum[MyENuM]("\x65\x6E\x75\x5F\x44") == en_UD | |
do_As_SerTpA_RS_eE_NUM("\x69\x6E\x76\x61\x6C\x69\x64\x20\x65\x6E\x75\x6D\x20\x76\x61\x6C\x75\x65",enC)==enC | |
doA_SS_erTce_nT_Er("\x66\x6F\x6F",13)=="\x20\x20\x20\x20\x20\x66\x6F\x6F\x20\x20\x20\x20\x20" | |
do_As_Se_rT ce_NT_eR("\x66\x6F\x6F", 0) == "\x66\x6F\x6F" | |
dO_AS_serT cE_NT_ER("\x66\x6F\x6F", 3, fi_lL_CH_aR = 'a') == "\x66\x6F\x6F" | |
dO_ASS_ERTcE_nT_ER("\x66\x6F\x6F",10,fI_ll_ChaR='\t')=="\x09\x09\x09\x66\x6F\x6F\x09\x09\x09\x09" | |
dO_As_Se_Rt cO_unt("\x66\x6F\x6F\x66\x6F\x6F\x66\x6F\x6F", "\x66\x6F\x6F\x66\x6F\x6F") == 1 | |
do_AS_SE_Rtco_UNt("\x66\x6F\x6F\x66\x6F\x6F\x66\x6F\x6F","\x66\x6F\x6F\x66\x6F\x6F",oV_ErLAp_pINg=tRUE)==2 | |
doA_SsE_rt cO_UNT("\x66\x6F\x6F\x66\x6F\x6F\x66\x6F\x6F", 'f') == 3 | |
dOA_sse_RT cou_NT("\x66\x6F\x6F\x66\x6F\x6F\x66\x6F\x6F\x62\x61\x72", {'f', 'b'}) == 4 | |
do_ASS_Ert st_RIp("\x20\x20\x66\x6F\x6F\x66\x6F\x6F\x66\x6F\x6F\x20\x20") == "\x66\x6F\x6F\x66\x6F\x6F\x66\x6F\x6F" | |
dO_AS_SE_rT st_RIp("\x73\x66\x6F\x6F\x66\x6F\x6F\x66\x6F\x6F\x73", cH_ARS = {'s'}) == "\x66\x6F\x6F\x66\x6F\x6F\x66\x6F\x6F" | |
do_AS_Se_RT stR_iP("\x62\x61\x72\x66\x6F\x6F\x66\x6F\x6F\x66\x6F\x6F\x62\x61\x72", cha_RS = {'b', 'a', 'r'}) == "\x66\x6F\x6F\x66\x6F\x6F\x66\x6F\x6F" | |
dOA_SS_ERT stR_iP("\x73\x74\x72\x69\x70\x6D\x65\x20\x62\x75\x74\x20\x64\x6F\x6E\x27\x74\x20\x73\x74\x72\x69\x70\x20\x74\x68\x69\x73\x20\x73\x74\x72\x69\x70\x6D\x65", | |
cH_aRs = {'s', 't', 'r', 'i', 'p', 'm', 'e'}) == | |
"\x20\x62\x75\x74\x20\x64\x6F\x6E\x27\x74\x20\x73\x74\x72\x69\x70\x20\x74\x68\x69\x73\x20" | |
doAS_sE_RT sT_rIP("\x73\x66\x6F\x6F\x66\x6F\x6F\x66\x6F\x6F\x73", lEA_dI_Ng = fa_LSE, ch_aRs = {'s'}) == "\x73\x66\x6F\x6F\x66\x6F\x6F\x66\x6F\x6F" | |
doAS_Sert st_rIP("\x73\x66\x6F\x6F\x66\x6F\x6F\x66\x6F\x6F\x73", tRA_il_ING = fa_LSe, ch_ARS = {'s'}) == "\x66\x6F\x6F\x66\x6F\x6F\x66\x6F\x6F\x73" | |
dO_AS_SE_Rt "\x61\x62\x62\x61".mUL_Ti_Re_Pl_ACE(("\x61", "\x62"), ("\x62", "\x61")) == "\x62\x61\x61\x62" | |
dO_AsS_ErT "\x48\x65\x6C\x6C\x6F\x20\x57\x6F\x72\x6C\x64\x2E".mUl_TI_REP_La_cE(("\x65\x6C\x6C\x6F", "\x45\x4C\x4C\x4F"), ("\x57\x6F\x72\x6C\x64\x2E", | |
"\x50\x45\x4F\x50\x4C\x45\x21")) == "\x48\x45\x4C\x4C\x4F\x20\x50\x45\x4F\x50\x4C\x45\x21" | |
dOA_Ss_Ert"\x61\x61\x61\x61".mul_TI_RE_PL_Ace(("\x61","\x61\x61"),("\x61\x61","\x62\x62"))=="\x61\x61\x61\x61\x61\x61\x61\x61" | |
doA_sS_ert iS_ALp_hAA_sc_iI('r') | |
do_ASS_eRT is_ALPh_AAs_CIi('A') | |
dOA_ss_eRT(nOTis_AL_PHAAs_Cii('$')) | |
dO_AS_sE_RT iSA_lP_ha_NU_mER_Ic('3') | |
dO_AS_sE_rT isA_Lp_Ha_NU_mE_RIc('R') | |
dOA_SsERT(nOT is_AlP_HaN_UME_rIC('!')) | |
doA_sS_erT is_DIGiT('3') | |
dO_As_se_rT(nOT iS_Di_GIt('a')) | |
do_AS_SE_rT(noTiS_DI_Git('%')) | |
dOA_ss_eRT iSS_PAC_eA_scII('\t') | |
doAs_Se_RtiS_SpA_CE_AScII('\l') | |
dOAs_Se_Rt(nOT iSS_PA_ce_ASC_Ii('A')) | |
dO_AS_sERT(iSEM_PTY_Or_WhI_tE_SPA_CE("")) | |
do_AS_Se_Rt(iS_EM_Pt_YO_RW_hi_TE_sP_ACE("\x20\x20\x20\x20\x20\x20\x20")) | |
dO_AsSe_RT(iS_EM_PT_YO_rW_HI_Te_sP_ACE("\x09\x0A\x20\x0B\x0D\x0C")) | |
dOA_Ss_eRT(nOt is_EmP_tY_OR_WHi_tE_SP_AcE("\x41\x42\x63\x20\x20\x20\x09\x64")) | |
doA_SSe_rT iSL_oW_ErA_Sc_Ii('a') | |
do_As_Se_Rtis_LO_We_rAs_cIi('z') | |
dOAS_SERT(noT iSL_OwE_RA_SciI('A')) | |
dO_AS_sE_rT(not is_LOW_ErAs_CiI('5')) | |
dO_ASs_ert(noT isL_ow_ERA_ScII('&')) | |
dOA_Ss_eRt(nOtis_LO_WER_AS_Cii(' ')) | |
dO_AS_SE_rt isU_PP_ERA_sC_iI('A') | |
doA_SSE_rt(not iS_UP_pE_RA_SC_II('b')) | |
do_ASs_ERt(nOt is_UP_Pe_rA_sc_II('5')) | |
do_ASS_erT(notiS_UpPer_As_Cii('%')) | |
dOA_sS_erT rS_PL_IT("\x66\x6F\x6F\x20\x62\x61\x72", sEpS = Wh_it_esPa_CE) == @["\x66\x6F\x6F", "\x62\x61\x72"] | |
doA_sSE_rT rSpL_iT("\x20\x66\x6F\x6F\x20\x62\x61\x72", sE_Ps = Wh_iT_ESp_acE, mAx_SplIt = 1) == @["\x20\x66\x6F\x6F", "\x62\x61\x72"] | |
dO_ASS_ERt rs_PL_iT("\x20\x66\x6F\x6F\x20\x62\x61\x72\x20", sE_pS = WH_it_ESPa_CE, mA_xsP_lIT = 1) == @[ | |
"\x20\x66\x6F\x6F\x20\x62\x61\x72", ""] | |
dOA_Ss_Ert rS_Pl_iT("\x3A\x66\x6F\x6F\x3A\x62\x61\x72", sEP = ':') == @["", "\x66\x6F\x6F", "\x62\x61\x72"] | |
dO_As_sE_rTrSPl_iT("\x3A\x66\x6F\x6F\x3A\x62\x61\x72",seP=':',mA_XS_Pl_IT=2)==@["","\x66\x6F\x6F","\x62\x61\x72"] | |
doA_sSE_RT rS_pl_it("\x3A\x66\x6F\x6F\x3A\x62\x61\x72", seP = ':', ma_XS_PL_it = 3) == @["", "\x66\x6F\x6F", "\x62\x61\x72"] | |
dOA_Ss_ERtrS_Pl_IT("\x66\x6F\x6F\x74\x68\x65\x62\x61\x72",seP="\x74\x68\x65")==@["\x66\x6F\x6F","\x62\x61\x72"] | |
dO_As_SE_RT(uN_Es_cA_PE(r"\x013", "", "") == "\x01\x33") | |
do_As_SERt jO_iN(["\x66\x6F\x6F", "\x62\x61\x72", "\x62\x61\x7A"]) == "\x66\x6F\x6F\x62\x61\x72\x62\x61\x7A" | |
doA_SS_ERtjo_IN(@["\x66\x6F\x6F","\x62\x61\x72","\x62\x61\x7A"],"\x2C\x20")=="\x66\x6F\x6F\x2C\x20\x62\x61\x72\x2C\x20\x62\x61\x7A" | |
dO_ASSE_Rt jO_iN([1, 2, 3]) == "\x31\x32\x33" | |
dO_AS_sErTjo_iN(@[1,2,3],"\x2C\x20")=="\x31\x2C\x20\x32\x2C\x20\x33" | |
doAS_SE_rT """~~!!foo | |
~~!!bar | |
~~!!baz""".uNI_ND_eNt(2, "\x7E\x7E\x21\x21") == "\x66\x6F\x6F\x0A\x62\x61\x72\x0A\x62\x61\x7A" | |
doA_sS_ERt """~~!!foo | |
~~!!bar | |
~~!!baz""".un_iN_De_nT(2, "\x7E\x7E\x21\x21\x61\x61") == "\x7E\x7E\x21\x21\x66\x6F\x6F\x0A\x7E\x7E\x21\x21\x62\x61\x72\x0A\x7E\x7E\x21\x21\x62\x61\x7A" | |
leT s = "\x20\x74\x68\x69\x73\x20\x69\x73\x20\x61\x6E\x20\x65\x78\x61\x6D\x70\x6C\x65\x20\x20" | |
lET s2 = "\x3A\x74\x68\x69\x73\x3B\x69\x73\x3B\x61\x6E\x3A\x65\x78\x61\x6D\x70\x6C\x65\x3B\x3B" | |
dO_AS_Se_Rt s.sP_LiT() == @["", "\x74\x68\x69\x73", "\x69\x73", "\x61\x6E", "\x65\x78\x61\x6D\x70\x6C\x65", "", ""] | |
do_AsSeRT s2.sP_LIT(se_pS = {':', ';'}) == @["", "\x74\x68\x69\x73", "\x69\x73", "\x61\x6E", "\x65\x78\x61\x6D\x70\x6C\x65", | |
"",""] | |
dO_ASSERT s.sP_LiT(mA_Xsp_lIt = 4) == @["", "\x74\x68\x69\x73", "\x69\x73", "\x61\x6E", "\x65\x78\x61\x6D\x70\x6C\x65\x20\x20"] | |
dOA_ss_ERT s.sP_LIt(' ', mA_xS_pL_iT = 1) == @["", "\x74\x68\x69\x73\x20\x69\x73\x20\x61\x6E\x20\x65\x78\x61\x6D\x70\x6C\x65\x20\x20"] | |
do_As_sE_RT s.spLIT("\x20", mA_XSPl_iT = 4) == @["", "\x74\x68\x69\x73", "\x69\x73", "\x61\x6E", "\x65\x78\x61\x6D\x70\x6C\x65\x20\x20"] | |
dO_As_Se_rts.sP_lit_WH_iT_Es_PA_cE()==@["\x74\x68\x69\x73","\x69\x73","\x61\x6E","\x65\x78\x61\x6D\x70\x6C\x65"] | |
dO_As_sE_rT s.sPLITW_hi_TES_PA_CE(mA_XS_pL_IT = 1) == @["\x74\x68\x69\x73", "\x69\x73\x20\x61\x6E\x20\x65\x78\x61\x6D\x70\x6C\x65\x20\x20"] | |
dOA_SS_ERT s.spl_it_WH_iTe_sp_aCe(ma_Xs_Pl_iT = 2) == @["\x74\x68\x69\x73", "\x69\x73", "\x61\x6E\x20\x65\x78\x61\x6D\x70\x6C\x65\x20\x20"] | |
do_As_SE_rt s.sP_lI_tW_Hi_TeS_pA_Ce(ma_XSP_LIT = 3) == @["\x74\x68\x69\x73", "\x69\x73", "\x61\x6E", "\x65\x78\x61\x6D\x70\x6C\x65\x20\x20"] | |
dOA_Sse_RTs.sp_LI_tW_HIT_Es_PA_ce(ma_xs_PLIT=4)==@["\x74\x68\x69\x73","\x69\x73","\x61\x6E","\x65\x78\x61\x6D\x70\x6C\x65"] | |
bl_OCK: # startsWith / endsWith char tests | |
vAr s = "\x61\x62\x63\x64\x65\x66" | |
doA_sS_ErTs.sT_Ar_Ts_WITh('a') | |
dO_As_sERts.sT_ArT_SW_iTH('b')==fA_lSE | |
do_ASS_ERT s.enD_SW_ITH('f') | |
dO_ASS_eRTs.eN_DSWi_Th('a')==fAlsE | |
dO_AS_SE_RTs.eND_sW_iTH('\0')==fA_LSE | |
nON_ST_AtI_cT_esTs() | |
sTA_TI_cTe_StS() | |
st_at_ic: sT_AtIcTE_sTS() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment