diff --git a/SoulverCore.xcframework/Info.plist b/SoulverCore.xcframework/Info.plist
index c9f03ada3..2d121c455 100644
--- a/SoulverCore.xcframework/Info.plist
+++ b/SoulverCore.xcframework/Info.plist
@@ -20,27 +20,27 @@
LibraryIdentifier
- macos-x86_64
+ ios-arm64
LibraryPath
SoulverCore.framework
SupportedArchitectures
- x86_64
+ arm64
SupportedPlatform
- macos
+ ios
LibraryIdentifier
- ios-arm64
+ macos-x86_64
LibraryPath
SoulverCore.framework
SupportedArchitectures
- arm64
+ x86_64
SupportedPlatform
- ios
+ macos
CFBundlePackageType
diff --git a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Base.lproj/DefaultCurrencyRates.json b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Base.lproj/DefaultCurrencyRates.json
index 9d21884c8..ba0c2dee3 100644
--- a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Base.lproj/DefaultCurrencyRates.json
+++ b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Base.lproj/DefaultCurrencyRates.json
@@ -1,30 +1,30 @@
{
"HRK" : {
- "value" : 0.14595077810008575,
+ "value" : 0.14104046112332522,
"code" : "HRK"
},
"HUF" : {
- "value" : 0.0032135431356240985,
+ "value" : 0.0030455270849261184,
"code" : "HUF"
},
"CDF" : {
- "value" : 0.00058962259318541251,
+ "value" : 0.00058479519783867745,
"code" : "CDF"
},
"XMR" : {
- "value" : 76.734707209999996,
+ "value" : 39.878292340000002,
"code" : "XMR"
},
"ILS" : {
- "value" : 0.29177912320373478,
+ "value" : 0.27719067253386925,
"code" : "ILS"
},
"NGN" : {
- "value" : 0.0027359793173534065,
+ "value" : 0.0027247930862974888,
"code" : "NGN"
},
"GYD" : {
- "value" : 0.0047815368414066556,
+ "value" : 0.004795433289696489,
"code" : "GYD"
},
"BYR" : {
@@ -32,47 +32,47 @@
"code" : "BYR"
},
"BHD" : {
- "value" : 2.6523510439653708,
+ "value" : 2.6594471541256004,
"code" : "BHD"
},
"SZL" : {
- "value" : 0.065702793544805654,
+ "value" : 0.05723977225439416,
"code" : "SZL"
},
"INR" : {
- "value" : 0.013910044327555561,
+ "value" : 0.013223559453202643,
"code" : "INR"
},
"SDG" : {
- "value" : 0.018484230613031911,
+ "value" : 0.018081980008635232,
"code" : "SDG"
},
"PEN" : {
- "value" : 0.29323328995435527,
+ "value" : 0.28542853097927107,
"code" : "PEN"
},
"EUR" : {
- "value" : 1.0883773273588673,
+ "value" : 1.0763497964622535,
"code" : "EUR"
},
"TRX" : {
- "value" : 0.0190759,
+ "value" : 0.01110775,
"code" : "TRX"
},
"PGK" : {
- "value" : 0.29368653250478488,
+ "value" : 0.2932228860462559,
"code" : "PGK"
},
"QAR" : {
- "value" : 0.27464838826713073,
+ "value" : 0.27464695507160319,
"code" : "QAR"
},
"LRD" : {
- "value" : 0.0050639416826753058,
+ "value" : 0.0050729222683882393,
"code" : "LRD"
},
"ISK" : {
- "value" : 0.0078488663117121521,
+ "value" : 0.0071062909108279455,
"code" : "ISK"
},
"SYP" : {
@@ -80,91 +80,91 @@
"code" : "SYP"
},
"TRY" : {
- "value" : 0.16273920017914331,
+ "value" : 0.1526134131318348,
"code" : "TRY"
},
"UAH" : {
- "value" : 0.040753552752091492,
+ "value" : 0.036539083756897441,
"code" : "UAH"
},
"SGD" : {
- "value" : 0.71494704029798983,
+ "value" : 0.68979598593919855,
"code" : "SGD"
},
"MMK" : {
- "value" : 0.00068987321992875405,
+ "value" : 0.00070313998918671949,
"code" : "MMK"
},
"NIO" : {
- "value" : 0.02919728914849172,
+ "value" : 0.029282253604403841,
"code" : "NIO"
},
"BIF" : {
- "value" : 0.00052910052910052914,
+ "value" : 0.00052770448548812663,
"code" : "BIF"
},
"AFN" : {
- "value" : 0.012995415282465422,
+ "value" : 0.01314917406618905,
"code" : "AFN"
},
+ "LKR" : {
+ "value" : 0.0053567214936039408,
+ "code" : "LKR"
+ },
"LTC" : {
- "value" : 71.324140209999996,
+ "value" : 37.386027069999997,
"code" : "LTC"
},
"GTQ" : {
- "value" : 0.13075498451076453,
+ "value" : 0.13131838404849325,
"code" : "GTQ"
},
- "LKR" : {
- "value" : 0.0055015208404211261,
- "code" : "LKR"
- },
"XRP" : {
- "value" : 0.25512463000000002,
+ "value" : 0.15588341,
"code" : "XRP"
},
"CHF" : {
- "value" : 1.024642655873764,
+ "value" : 1.0139252493749151,
"code" : "CHF"
},
"THB" : {
- "value" : 0.031509975018261603,
+ "value" : 0.030671409734363199,
"code" : "THB"
},
"AMD" : {
- "value" : 0.002090605015070419,
+ "value" : 0.002026012365811047,
"code" : "AMD"
},
"AOA" : {
- "value" : 0.0020284407638936717,
+ "value" : 0.0019282033334532417,
"code" : "AOA"
},
"SEK" : {
- "value" : 0.10295713482648633,
+ "value" : 0.096334426889635907,
"code" : "SEK"
},
"DASH" : {
- "value" : 96.853203140000005,
+ "value" : 70.651361420000001,
"code" : "DASH"
},
"SAR" : {
- "value" : 0.26651528598422763,
+ "value" : 0.26610330822293815,
"code" : "SAR"
},
"KWD" : {
- "value" : 3.266927585283145,
+ "value" : 3.2126449706042988,
"code" : "KWD"
},
"IRR" : {
- "value" : 2.3750148435043321e-05,
+ "value" : 2.3750148239875258e-05,
"code" : "IRR"
},
"WST" : {
- "value" : 0.37188891678055763,
+ "value" : 0.34640216321222883,
"code" : "WST"
},
"BNB" : {
- "value" : 20.485580339999999,
+ "value" : 11.775446219999999,
"code" : "BNB"
},
"BMD" : {
@@ -172,99 +172,99 @@
"code" : "BMD"
},
"BGN" : {
- "value" : 0.55563334422374688,
+ "value" : 0.54648183193825628,
"code" : "BGN"
},
"PHP" : {
- "value" : 0.019575026947960848,
+ "value" : 0.019616311999168582,
"code" : "PHP"
},
"ZMW" : {
- "value" : 0.067886459624731804,
+ "value" : 0.058983113429540691,
"code" : "ZMW"
},
"XAF" : {
- "value" : 0.0016514878146375363,
+ "value" : 0.0016360828518246062,
"code" : "XAF"
},
"BDT" : {
- "value" : 0.011767930295253842,
+ "value" : 0.011810162503111978,
"code" : "BDT"
},
"NOK" : {
- "value" : 0.1068136650566999,
+ "value" : 0.087346199719706044,
"code" : "NOK"
},
"BOB" : {
- "value" : 0.1445582422989849,
+ "value" : 0.14520865176380593,
"code" : "BOB"
},
"TZS" : {
- "value" : 0.00043292944517055035,
+ "value" : 0.00043381997443251612,
"code" : "TZS"
},
"XAG" : {
- "value" : 17.995968902965735,
+ "value" : 12.582573136206353,
"code" : "XAG"
},
- "VEF" : {
- "value" : 0.10012517649565486,
- "code" : "VEF"
+ "VUV" : {
+ "value" : 0.0078507628393907347,
+ "code" : "VUV"
},
"ANG" : {
- "value" : 0.55846235209822681,
+ "value" : 0.55975120178583027,
"code" : "ANG"
},
- "VUV" : {
- "value" : 0.0083791690639469351,
- "code" : "VUV"
- },
"BND" : {
- "value" : 0.71415716599583501,
+ "value" : 0.69261046963838113,
"code" : "BND"
},
"XCD" : {
"value" : 0.37002090618119926,
"code" : "XCD"
},
+ "VEF" : {
+ "value" : 0.10012511634538519,
+ "code" : "VEF"
+ },
"SCR" : {
- "value" : 0.072965746011637592,
+ "value" : 0.073255817445916874,
"code" : "SCR"
},
"KYD" : {
- "value" : 1.1995398565110424,
+ "value" : 1.2023074684935329,
"code" : "KYD"
},
"DJF" : {
- "value" : 0.0056268222604561047,
+ "value" : 0.005626816244848073,
"code" : "DJF"
},
"CLF" : {
- "value" : 33.935116058096916,
+ "value" : 31.962156806341291,
"code" : "CLF"
},
"LSL" : {
- "value" : 0.065661645148579501,
+ "value" : 0.057239732937722825,
"code" : "LSL"
},
"MOP" : {
- "value" : 0.12457938883843422,
+ "value" : 0.12540460227366068,
"code" : "MOP"
},
"ALL" : {
- "value" : 0.0088893254535389408,
+ "value" : 0.0087069785902274977,
"code" : "ALL"
},
"UZS" : {
- "value" : 0.00010503098243043774,
+ "value" : 0.00010509721122358741,
"code" : "UZS"
},
"UYU" : {
- "value" : 0.026035353093541484,
+ "value" : 0.021802889192419021,
"code" : "UYU"
},
"PLN" : {
- "value" : 0.25272296357099572,
+ "value" : 0.23574063814990748,
"code" : "PLN"
},
"LTL" : {
@@ -272,19 +272,19 @@
"code" : "LTL"
},
"LYD" : {
- "value" : 0.71174123935502009,
+ "value" : 0.70902826966613985,
"code" : "LYD"
},
- "JPY" : {
- "value" : 0.009077169804173767,
- "code" : "JPY"
- },
"MNT" : {
- "value" : 0.00036300093050751028,
+ "value" : 0.00036022874978058379,
"code" : "MNT"
},
+ "JPY" : {
+ "value" : 0.009011766122319945,
+ "code" : "JPY"
+ },
"FJD" : {
- "value" : 0.45108013393471336,
+ "value" : 0.42300468689193071,
"code" : "FJD"
},
"ZWL" : {
@@ -292,23 +292,23 @@
"code" : "ZWL"
},
"KPW" : {
- "value" : 0.0011110213047901087,
+ "value" : 0.0011111110777777787,
"code" : "KPW"
},
"PKR" : {
- "value" : 0.0064809950587986333,
+ "value" : 0.0063002032483369125,
"code" : "PKR"
},
"MRO" : {
- "value" : 0.0028011201735596465,
+ "value" : 0.0028011180393746832,
"code" : "MRO"
},
"OMR" : {
- "value" : 2.5972272002410226,
+ "value" : 2.6073511658770738,
"code" : "OMR"
},
"GBP" : {
- "value" : 1.3002007509959537,
+ "value" : 1.1650001339750153,
"code" : "GBP"
},
"LVL" : {
@@ -316,99 +316,99 @@
"code" : "LVL"
},
"SHP" : {
- "value" : 1.3003360068241632,
+ "value" : 1.1659509670980297,
"code" : "SHP"
},
"GEL" : {
- "value" : 0.35906423551454086,
+ "value" : 0.31200858647629987,
"code" : "GEL"
},
"TND" : {
- "value" : 0.3496019432274412,
+ "value" : 0.34182144341624554,
"code" : "TND"
},
"DKK" : {
- "value" : 0.1456971975144058,
+ "value" : 0.14321714985268685,
"code" : "DKK"
},
"NPR" : {
- "value" : 0.0087003367378331014,
+ "value" : 0.0083551067415016875,
"code" : "NPR"
},
"KRW" : {
- "value" : 0.00082254450239665274,
+ "value" : 0.00079684425197163811,
"code" : "KRW"
},
"BSD" : {
- "value" : 0.99963513317639063,
+ "value" : 1.0019046206839202,
"code" : "BSD"
},
"CRC" : {
- "value" : 0.0017460833081489916,
+ "value" : 0.0017717644250681136,
"code" : "CRC"
},
"EGP" : {
- "value" : 0.06415609743078568,
+ "value" : 0.063897302211172541,
"code" : "EGP"
},
"MAD" : {
- "value" : 0.10328975813876813,
+ "value" : 0.10182904308906142,
"code" : "MAD"
},
- "BTC" : {
- "value" : 9345.7943925233649,
- "code" : "BTC"
- },
"AUD" : {
- "value" : 0.66019761034872959,
+ "value" : 0.57930580626623507,
"code" : "AUD"
},
+ "BTC" : {
+ "value" : 6211.1801242236024,
+ "code" : "BTC"
+ },
"SLL" : {
- "value" : 0.0001029336096135646,
+ "value" : 0.0001030927799022214,
"code" : "SLL"
},
"MWK" : {
- "value" : 0.001355938147454957,
+ "value" : 0.0013605435790645785,
"code" : "MWK"
},
"RSD" : {
- "value" : 0.0092584198291947445,
+ "value" : 0.0091053917959946426,
"code" : "RSD"
},
"NZD" : {
- "value" : 0.63199979270406803,
+ "value" : 0.56965288201634334,
"code" : "NZD"
},
"SRD" : {
- "value" : 0.13408472626133838,
+ "value" : 0.13408352169833407,
"code" : "SRD"
},
"CLP" : {
- "value" : 0.0012298621631488707,
+ "value" : 0.0011583406331187806,
"code" : "CLP"
},
"RUB" : {
- "value" : 0.015304115033196997,
+ "value" : 0.012503531622506775,
"code" : "RUB"
},
"NAD" : {
- "value" : 0.065660567303361866,
+ "value" : 0.05723974931966265,
"code" : "NAD"
},
"HKD" : {
- "value" : 0.12836558518661145,
+ "value" : 0.12883526478867796,
"code" : "HKD"
},
"GMD" : {
- "value" : 0.019607800845919746,
+ "value" : 0.019650075387514225,
"code" : "GMD"
},
"VND" : {
- "value" : 4.3035741183052525e-05,
+ "value" : 4.3019078961519434e-05,
"code" : "VND"
},
"LAK" : {
- "value" : 0.00011229646146342911,
+ "value" : 0.00011185681889954924,
"code" : "LAK"
},
"CUC" : {
@@ -416,179 +416,179 @@
"code" : "CUC"
},
"RON" : {
- "value" : 0.22636720699764418,
+ "value" : 0.2205539521283236,
"code" : "RON"
},
"MUR" : {
- "value" : 0.026699166315861871,
+ "value" : 0.025621068142843293,
"code" : "MUR"
},
"XAU" : {
- "value" : 1633.9869281045751,
+ "value" : 1497.0059880239521,
"code" : "XAU"
},
"GGP" : {
- "value" : 1.3003360068241632,
+ "value" : 1.1659509670980297,
"code" : "GGP"
},
+ "MXN" : {
+ "value" : 0.040944668848526183,
+ "code" : "MXN"
+ },
"BRL" : {
- "value" : 0.22787364042040861,
+ "value" : 0.19747609749315942,
"code" : "BRL"
},
"STD" : {
- "value" : 4.5685510254460443e-05,
+ "value" : 4.5345772756215923e-05,
"code" : "STD"
},
- "MXN" : {
- "value" : 0.052422303593286805,
- "code" : "MXN"
- },
"AWG" : {
- "value" : 0.5554012774229381,
+ "value" : 0.55555555555555558,
"code" : "AWG"
},
"MVR" : {
- "value" : 0.064724311648855073,
+ "value" : 0.06489133491728756,
"code" : "MVR"
},
"PAB" : {
- "value" : 0.99963513317639063,
+ "value" : 1.0019046206839202,
"code" : "PAB"
},
"TJS" : {
- "value" : 0.10316107188067483,
+ "value" : 0.10280197050817071,
"code" : "TJS"
},
"GNF" : {
- "value" : 0.00010624170451756518,
+ "value" : 0.00010624165639982802,
"code" : "GNF"
},
"MGA" : {
- "value" : 0.00026917901381942578,
+ "value" : 0.00026652449560660981,
"code" : "MGA"
},
"XDR" : {
- "value" : 1.3626484435148154,
+ "value" : 1.3504461874203235,
"code" : "XDR"
},
"ETB" : {
- "value" : 0.030969578211687721,
+ "value" : 0.030671199951809412,
"code" : "ETB"
},
"ZAR" : {
- "value" : 0.065733984687005337,
+ "value" : 0.056678707113347777,
"code" : "ZAR"
},
"COP" : {
- "value" : 0.00029099374363451185,
+ "value" : 0.00024268899405411964,
"code" : "COP"
},
"IDR" : {
- "value" : 7.1702577707668594e-05,
+ "value" : 6.3373854153186512e-05,
"code" : "IDR"
},
"SVC" : {
- "value" : 0.11424858023289346,
+ "value" : 0.11450918386556438,
"code" : "SVC"
},
"CVE" : {
- "value" : 0.0098376559518098868,
+ "value" : 0.00969895444398188,
"code" : "CVE"
},
"ETC" : {
- "value" : 9.2414770100000005,
+ "value" : 4.8471909000000002,
"code" : "ETC"
},
"TTD" : {
- "value" : 0.14783698961312094,
+ "value" : 0.1482872525753047,
"code" : "TTD"
},
- "DOGE" : {
- "value" : 0.0025008600000000001,
- "code" : "DOGE"
+ "GIP" : {
+ "value" : 1.1659509670980297,
+ "code" : "GIP"
},
"PYG" : {
- "value" : 0.00015260611179847446,
+ "value" : 0.00015102166981185603,
"code" : "PYG"
},
- "GIP" : {
- "value" : 1.3003360068241632,
- "code" : "GIP"
+ "DOGE" : {
+ "value" : 0.0017667799999999999,
+ "code" : "DOGE"
},
"MZN" : {
- "value" : 0.015378693404678168,
+ "value" : 0.01507044551657938,
"code" : "MZN"
},
"FKP" : {
- "value" : 1.3003360068241632,
+ "value" : 1.1659509670980297,
"code" : "FKP"
},
"KZT" : {
- "value" : 0.0026468799333706208,
+ "value" : 0.0022358015367513568,
"code" : "KZT"
},
+ "UGX" : {
+ "value" : 0.00026195567645827576,
+ "code" : "UGX"
+ },
"USD" : {
"value" : 1,
"code" : "USD"
},
- "UGX" : {
- "value" : 0.00027163687561171894,
- "code" : "UGX"
- },
"RWF" : {
"value" : 0.0010695187165775401,
"code" : "RWF"
},
"GHS" : {
- "value" : 0.18709119404780591,
+ "value" : 0.17792359604938446,
"code" : "GHS"
},
"ARS" : {
- "value" : 0.016188774318594657,
+ "value" : 0.015781795342403961,
"code" : "ARS"
},
"JEP" : {
- "value" : 1.3003360068241632,
+ "value" : 1.1659509670980297,
"code" : "JEP"
},
"DOP" : {
- "value" : 0.018658447894026584,
+ "value" : 0.018518395405482394,
"code" : "DOP"
},
"LBP" : {
- "value" : 0.0006605020835914713,
+ "value" : 0.00066135545154280214,
"code" : "LBP"
},
"BZD" : {
- "value" : 0.4959279357198047,
+ "value" : 0.49709571826603072,
"code" : "BZD"
},
"BTN" : {
- "value" : 0.013920560096519595,
+ "value" : 0.0133681457673309,
"code" : "BTN"
},
"ADA" : {
- "value" : 0.05665137,
+ "value" : 0.028973720000000001,
"code" : "ADA"
},
- "YER" : {
- "value" : 0.003996004554885752,
- "code" : "YER"
- },
"MYR" : {
- "value" : 0.23615555755500595,
+ "value" : 0.22755696661102137,
"code" : "MYR"
},
+ "YER" : {
+ "value" : 0.0039944020213208073,
+ "code" : "YER"
+ },
"JMD" : {
- "value" : 0.0072263691946240433,
+ "value" : 0.0074044889418030122,
"code" : "JMD"
},
"TOP" : {
- "value" : 0.43108093544562992,
+ "value" : 0.41702287370462271,
"code" : "TOP"
},
"SOS" : {
- "value" : 0.0017094014230404455,
+ "value" : 0.0017064836573524296,
"code" : "SOS"
},
"TMT" : {
@@ -596,43 +596,43 @@
"code" : "TMT"
},
"MDL" : {
- "value" : 0.056002056843543743,
+ "value" : 0.055662867379099416,
"code" : "MDL"
},
"XOF" : {
- "value" : 0.0016501659695678042,
+ "value" : 0.001640679393392658,
"code" : "XOF"
},
"ETH" : {
- "value" : 253.23130087000001,
+ "value" : 131.32626894000001,
"code" : "ETH"
},
"TWD" : {
- "value" : 0.032894195819147709,
+ "value" : 0.033036550582394741,
"code" : "TWD"
},
"BBD" : {
- "value" : 0.49508945523821973,
+ "value" : 0.50064859024866715,
"code" : "BBD"
},
"CAD" : {
- "value" : 0.75270314517009207,
+ "value" : 0.69606375944036469,
"code" : "CAD"
},
"CNY" : {
- "value" : 0.14209787332059851,
+ "value" : 0.1409283570966729,
"code" : "CNY"
},
- "JOD" : {
- "value" : 1.4104073961763857,
- "code" : "JOD"
- },
"XPF" : {
- "value" : 0.0090457003253557496,
+ "value" : 0.0089565314807213709,
"code" : "XPF"
},
+ "JOD" : {
+ "value" : 1.4103576667042761,
+ "code" : "JOD"
+ },
"XLM" : {
- "value" : 0.064830589999999994,
+ "value" : 0.039567440000000002,
"code" : "XLM"
},
"IQD" : {
@@ -640,91 +640,91 @@
"code" : "IQD"
},
"HNL" : {
- "value" : 0.040164394473154404,
+ "value" : 0.04009560556573516,
"code" : "HNL"
},
"AED" : {
- "value" : 0.27225441630695052,
+ "value" : 0.27225389745066897,
"code" : "AED"
},
"EOS" : {
- "value" : 4.0654144399999996,
+ "value" : 2.1972275300000002,
"code" : "EOS"
},
- "KES" : {
- "value" : 0.0098808349566392398,
- "code" : "KES"
- },
"ERN" : {
- "value" : 0.066664208979495626,
+ "value" : 0.066665075593529161,
"code" : "ERN"
},
+ "KES" : {
+ "value" : 0.0094321483552431921,
+ "code" : "KES"
+ },
"KMF" : {
- "value" : 0.0022105554069313188,
+ "value" : 0.0021810070248578705,
"code" : "KMF"
},
- "MKD" : {
- "value" : 0.017615996847159348,
- "code" : "MKD"
- },
"DZD" : {
- "value" : 0.0082945988699222838,
+ "value" : 0.0080988028025745125,
"code" : "DZD"
},
+ "MKD" : {
+ "value" : 0.017395114936830335,
+ "code" : "MKD"
+ },
"BSV" : {
- "value" : 261.34168437,
+ "value" : 164.85426050999999,
"code" : "BSV"
},
"BWP" : {
- "value" : 0.090066843107612315,
+ "value" : 0.088471562629859668,
"code" : "BWP"
},
- "SBD" : {
- "value" : 0.12114843384756402,
- "code" : "SBD"
- },
"AZN" : {
- "value" : 0.58922658118953064,
+ "value" : 0.58686479222052035,
"code" : "AZN"
},
+ "SBD" : {
+ "value" : 0.12094835118369733,
+ "code" : "SBD"
+ },
"BCH" : {
- "value" : 355.60714253999998,
+ "value" : 215.75744254,
"code" : "BCH"
},
"KGS" : {
- "value" : 0.014316402722069275,
+ "value" : 0.011972161754823921,
"code" : "KGS"
},
"BYN" : {
- "value" : 0.44742889460007013,
+ "value" : 0.3887025923741993,
"code" : "BYN"
},
"KHR" : {
- "value" : 0.00024479803526350263,
+ "value" : 0.00024721876717582515,
"code" : "KHR"
},
"NEO" : {
- "value" : 12.6220079,
+ "value" : 6.0888002800000001,
"code" : "NEO"
},
"ZMK" : {
- "value" : 0.000111096211627849,
+ "value" : 0.00011109625392516104,
"code" : "ZMK"
},
"HTG" : {
- "value" : 0.01108319746256844,
+ "value" : 0.010517724026785531,
"code" : "HTG"
},
- "CZK" : {
- "value" : 0.043086767011151113,
- "code" : "CZK"
+ "IMP" : {
+ "value" : 1.1659509670980297,
+ "code" : "IMP"
},
"BAM" : {
- "value" : 0.55389019237714165,
+ "value" : 0.54868781309498338,
"code" : "BAM"
},
- "IMP" : {
- "value" : 1.3003360068241632,
- "code" : "IMP"
+ "CZK" : {
+ "value" : 0.039221777185790417,
+ "code" : "CZK"
}
}
\ No newline at end of file
diff --git a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Base.lproj/FunctionDescriptions.json b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Base.lproj/FunctionDescriptions.json
index 93dcc8bd0..05504e9d5 100644
--- a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Base.lproj/FunctionDescriptions.json
+++ b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Base.lproj/FunctionDescriptions.json
@@ -1 +1,267 @@
-{"percentage":[{"prototypeExpressions":["10% of 100"],"keywords":[],"identifier":"percentOf"},{"prototypeExpressions":["10% off 100"],"keywords":[],"identifier":"percentOff"},{"prototypeExpressions":["10% on 100"],"keywords":[],"identifier":"percentOn"},{"prototypeExpressions":["30 is 20% of what"],"keywords":["what"],"identifier":"isPercentOfWhat"},{"prototypeExpressions":["20% of what is 30"],"keywords":["what"],"identifier":"isPercentOfWhatClassic"},{"prototypeExpressions":["30 is 20% off what"],"keywords":["what"],"identifier":"isPercentOffWhat"},{"prototypeExpressions":["20% off what is 30"],"keywords":["what"],"identifier":"isPercentOffWhatClassic"},{"prototypeExpressions":["30 is 20% on what"],"keywords":["what"],"identifier":"isPercentOnWhat"},{"prototypeExpressions":["20% on what is 30"],"keywords":["what"],"identifier":"isPercentOnWhatClassic"},{"prototypeExpressions":["10 is what % of 20","10 as a % of 20","10 as % of 20"],"keywords":["of"],"identifier":"isWhatPercentOf"},{"prototypeExpressions":["10 is what % off 20","10 as a % off 20","10 as % off 20"],"keywords":[],"identifier":"isWhatPercentOff"},{"prototypeExpressions":["20 is what % on 10","20 as a % on 10","20 as % on 10"],"keywords":[],"identifier":"isWhatPercentOn"}],"general":[{"prototypeExpressions":["remainder of 20 divided by 3"],"keywords":["remainder"],"identifier":"remainder"},{"prototypeExpressions":["half of 20"],"keywords":["half"],"identifier":"halfOf"},{"prototypeExpressions":["smaller of 2 and 30","lesser of 2 and 30"],"keywords":["and","of"],"identifier":"lesserOf"},{"prototypeExpressions":["larger of 2 and 30","greater of 2 and 30"],"keywords":["and","of"],"identifier":"greaterOf"},{"prototypeExpressions":["midpoint between 2 and 32"],"keywords":["midpoint"],"identifier":"midpoint"},{"prototypeExpressions":["6 is to 600 as what is to 8"],"keywords":["is to"],"identifier":"proportionsFindNumerator"},{"prototypeExpressions":["6 is to 600 as 8 is to what"],"keywords":["is to"],"identifier":"proportionsFindDenominator"}],"unitRelated":[{"prototypeExpressions":["__unit in __unit_expression"],"keywords":[],"identifier":"unitInUnitExpression"}],"datetime":[{"prototypeExpressions":["__unit between __datestamp and __datestamp","__unit from __datestamp to __datestamp","__unit in __datestamp to __datestamp"],"keywords":[],"identifier":"calendarUnitBetweenDates"},{"prototypeExpressions":["__unit to __datestamp","__unit before __datestamp","__unit until __datestamp","__unit till __datestamp"],"keywords":[],"identifier":"calendarUnitToDate"},{"prototypeExpressions":["__datestamp to __datestamp"],"keywords":[],"identifier":"intervalBetweenDates"},{"identifier":"intervalBetweenTimestamps","keywords":[],"prototypeExpressions":["__timestamp to __timestamp"]},{"identifier":"calendarUnitSinceDate","keywords":["since"],"prototypeExpressions":["__unit since __datestamp"]},{"prototypeExpressions":["__timespan from __datestamp","__timespan after __datestamp"],"keywords":[],"identifier":"calendarUnitExpressionAfterDate"},{"prototypeExpressions":["new timestamp"],"keywords":[],"identifier":"generateTimestamp"}]}
+{
+ "percentage": [
+ {
+ "identifier": "percentOf",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "10% of 100"
+ ]
+ },
+ {
+ "identifier": "percentOff",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "10% off 100"
+ ]
+ },
+ {
+ "identifier": "percentOn",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "10% on 100"
+ ]
+ },
+ {
+ "identifier": "isPercentOfWhat",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "30 is 20% of what"
+ ]
+ },
+ {
+ "identifier": "isPercentOfWhatClassic",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "20% of what is 30"
+ ]
+ },
+ {
+ "identifier": "isPercentOffWhat",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "30 is 20% off what"
+ ]
+ },
+ {
+ "identifier": "isPercentOffWhatClassic",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "20% off what is 30"
+ ]
+ },
+ {
+ "identifier": "isPercentOnWhat",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "30 is 20% on what"
+ ]
+ },
+ {
+ "identifier": "isPercentOnWhatClassic",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "20% on what is 30"
+ ]
+ },
+ {
+ "identifier": "isWhatPercentOf",
+ "keywords": [
+ "of"
+ ],
+ "prototypeExpressions": [
+ "10 is what % of 20",
+ "10 as a % of 20",
+ "10 as % of 20"
+ ]
+ },
+ {
+ "identifier": "isWhatPercentOff",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "10 is what % off 20",
+ "10 as a % off 20",
+ "10 as % off 20"
+ ]
+ },
+ {
+ "identifier": "isWhatPercentOn",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "20 is what % on 10",
+ "20 as a % on 10",
+ "20 as % on 10"
+ ]
+ }
+ ],
+ "general": [
+ {
+ "identifier": "remainder",
+ "keywords": [
+ "remainder"
+ ],
+ "prototypeExpressions": [
+ "remainder of 20 divided by 3"
+ ]
+ },
+ {
+ "identifier": "halfOf",
+ "keywords": [
+ "half"
+ ],
+ "prototypeExpressions": [
+ "half of 20"
+ ]
+ },
+ {
+ "identifier": "lesserOf",
+ "keywords": [
+ "and",
+ "of"
+ ],
+ "prototypeExpressions": [
+ "smaller of 2 and 30",
+ "lesser of 2 and 30"
+ ]
+ },
+ {
+ "identifier": "greaterOf",
+ "keywords": [
+ "and",
+ "of"
+ ],
+ "prototypeExpressions": [
+ "larger of 2 and 30",
+ "greater of 2 and 30"
+ ]
+ },
+ {
+ "identifier": "midpoint",
+ "keywords": [
+ "midpoint"
+ ],
+ "prototypeExpressions": [
+ "midpoint between 2 and 32"
+ ]
+ },
+ {
+ "identifier": "proportionsFindNumerator",
+ "keywords": [
+ "is to"
+ ],
+ "prototypeExpressions": [
+ "6 is to 600 as what is to 8"
+ ]
+ },
+ {
+ "identifier": "proportionsFindDenominator",
+ "keywords": [
+ "is to"
+ ],
+ "prototypeExpressions": [
+ "6 is to 600 as 8 is to what"
+ ]
+ },
+ {
+ "identifier": "makeRandomNumber",
+ "keywords": [
+ "random"
+ ],
+ "prototypeExpressions": [
+ "random number between 1 and 5",
+ "random between 1 and 5"
+ ]
+ }
+ ],
+ "unitRelated": [
+ {
+ "identifier": "unitInUnitExpression",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "__unit in __unit_expression"
+ ]
+ }
+ ],
+ "datetime": [
+ {
+ "identifier": "calendarUnitBetweenDates",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "__unit between __datestamp and __datestamp",
+ "__unit from __datestamp to __datestamp",
+ "__unit in __datestamp to __datestamp"
+ ]
+ },
+ {
+ "identifier": "calendarUnitToDate",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "__unit to __datestamp",
+ "__unit before __datestamp",
+ "__unit until __datestamp",
+ "__unit till __datestamp"
+ ]
+ },
+ {
+ "identifier": "intervalBetweenDates",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "__datestamp to __datestamp"
+ ]
+ },
+ {
+ "prototypeExpressions": [
+ "__timestamp to __timestamp"
+ ],
+ "keywords": [
+ ],
+ "identifier": "intervalBetweenTimestamps"
+ },
+ {
+ "prototypeExpressions": [
+ "__unit since __datestamp"
+ ],
+ "keywords": [
+ "since"
+ ],
+ "identifier": "calendarUnitSinceDate"
+ },
+ {
+ "identifier": "calendarUnitExpressionAfterDate",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "__timespan from __datestamp",
+ "__timespan after __datestamp"
+ ]
+ },
+ {
+ "identifier": "generateTimestamp",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "new timestamp"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Base.lproj/LocalizedFixtures.json b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Base.lproj/LocalizedFixtures.json
index 7599e6892..ec87d93cf 100644
--- a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Base.lproj/LocalizedFixtures.json
+++ b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Base.lproj/LocalizedFixtures.json
@@ -1,59 +1,59 @@
{
- "fixtures" : {
- "decimalPlacesTypes" : [
+ "fixtures": {
+ "decimalPlacesTypes": [
"dp",
"digit",
"digits"
],
- "divisionOperators" : [
+ "multiplierTypes": [
+ "multiplier"
+ ],
+ "divisionOperators": [
"÷",
"per"
],
- "roundingConverters" : [
+ "roundingConverters": [
"rounded"
],
- "tomorrowDateAliases" : [
- "tomorrow"
- ],
- "multiplicationOperators" : [
+ "multiplicationOperators": [
"×",
"x"
],
- "numberTypes" : [
+ "tomorrowDateAliases": [
+ "tomorrow"
+ ],
+ "numberTypes": [
"number"
],
- "roundingDownConverters" : [
+ "roundingDownConverters": [
"rounded down"
],
- "yesterdayDateAliases" : [
+ "yesterdayDateAliases": [
"yesterday"
],
- "subtractionOperators" : [
+ "subtractionOperators": [
"−",
"–"
],
- "dateTypes" : [
- "date"
- ],
- "roundingUpConverters" : [
- "rounded up"
+ "todayDateAliases": [
+ "today"
],
- "timestampTypes" : [
+ "timestampTypes": [
"timestamp"
],
- "todayDateAliases" : [
- "today"
+ "roundingUpConverters": [
+ "rounded up"
],
- "additionOperators" : [
- "plus"
+ "dateTypes": [
+ "date"
],
- "piAliases" : [
- "π"
+ "iso8601Types": [
+ "iso8601"
],
- "timespanTypes" : [
- "timespan"
+ "piAliases": [
+ "π"
],
- "monthOfYearDateAliases" : [
+ "monthOfYearDateAliases": [
"jan",
"feb",
"mar",
@@ -79,17 +79,23 @@
"november",
"december"
],
- "nowDateAliases" : [
+ "additionOperators": [
+ "plus"
+ ],
+ "timespanTypes": [
+ "timespan"
+ ],
+ "nowDateAliases": [
"now"
],
- "converterSymbols" : [
+ "converterSymbols": [
"to",
"as"
],
- "fractionTypes" : [
+ "fractionTypes": [
"fraction"
],
- "dayOfWeekDateAliases" : [
+ "dayOfWeekDateAliases": [
"monday",
"tuesday",
"wednesday",
@@ -106,17 +112,17 @@
"sat",
"sun"
],
- "dateIntervalPrepositions" : [
+ "dateIntervalPrepositions": [
"between ",
"until ",
"before ",
"to ",
"from ",
- "after "
+ "after "
],
- "percentTypes" : [
+ "percentTypes": [
"percent",
"percentage"
]
}
-}
+}
\ No newline at end of file
diff --git a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Base.lproj/TimeZoneAbbrieviations.json b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Base.lproj/TimeZoneAbbrieviations.json
new file mode 100644
index 000000000..1bde26bad
--- /dev/null
+++ b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Base.lproj/TimeZoneAbbrieviations.json
@@ -0,0 +1,63 @@
+{
+ "ACDT": "Australia/Adelaide",
+ "ACST": "Australia/Darwin",
+ "ADT": "America/Halifax",
+ "AEDT": "Australia/Sydney",
+ "AEST": "Australia/Brisbane",
+ "AKDT": "America/Juneau",
+ "AKST": "America/Juneau",
+ "ART": "America/Argentina/Buenos_Aires",
+ "AST": "America/Halifax",
+ "AWST": "Australia/Perth",
+ "BDT": "Asia/Dhaka",
+ "BRST": "America/Sao_Paulo",
+ "BRT": "America/Sao_Paulo",
+ "BST": "Europe/London",
+ "CAT": "Africa/Harare",
+ "CDT": "America/Chicago",
+ "CEST": "Europe/Paris",
+ "CET": "Europe/Paris",
+ "CLST": "America/Santiago",
+ "CLT": "America/Santiago",
+ "COT": "America/Bogota",
+ "CST": "America/Chicago",
+ "EAT": "Africa/Addis_Ababa",
+ "EDT": "America/New_York",
+ "EEST": "Europe/Athens",
+ "EET": "Europe/Athens",
+ "EST": "America/New_York",
+ "GMT": "GMT",
+ "GST": "Asia/Dubai",
+ "HKT": "Asia/Hong_Kong",
+ "HST": "Pacific/Honolulu",
+ "ICT": "Asia/Bangkok",
+ "IRST": "Asia/Tehran",
+ "IST": "Asia/Kolkata",
+ "JST": "Asia/Tokyo",
+ "KST": "Asia/Seoul",
+ "MDT": "America/Denver",
+ "MSD": "Europe/Moscow",
+ "MSK": "Europe/Moscow",
+ "MST": "America/Phoenix",
+ "NDT": "America/St_Johns",
+ "NST": "America/St_Johns",
+ "NZDT": "Pacific/Auckland",
+ "NZST": "Pacific/Auckland",
+ "PDT": "America/Los_Angeles",
+ "PET": "America/Lima",
+ "PHT": "Asia/Manila",
+ "PKT": "Asia/Karachi",
+ "PST": "America/Los_Angeles",
+ "SAST": "Africa/Johannesburg",
+ "SGT": "Asia/Singapore",
+ "SST": "Pacific/Midway",
+ "TRT": "Europe/Istanbul",
+ "UTC": "UTC",
+ "WAT": "Africa/Lagos",
+ "WEST": "Europe/Lisbon",
+ "WET": "Europe/Lisbon",
+ "WIB": "Asia/Jakarta",
+ "WIT": "Asia/Jakarta",
+ "WITA": "Asia/Makassar"
+
+}
\ No newline at end of file
diff --git a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Headers/SoulverCore-Swift.h b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Headers/SoulverCore-Swift.h
index 01e915d68..7ae3cb3fd 100644
--- a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Headers/SoulverCore-Swift.h
+++ b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Headers/SoulverCore-Swift.h
@@ -1,4 +1,4 @@
-// Generated by Apple Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9)
+// Generated by Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"
@@ -239,6 +239,7 @@ SWIFT_CLASS("_TtC11SoulverCore21AsynchronousOperation")
SWIFT_CLASS("_TtC11SoulverCore8NullUnit")
@interface NullUnit : NSDimension
++ (nonnull instancetype)baseUnit SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithSymbol:(NSString * _Nonnull)symbol converter:(NSUnitConverter * _Nonnull)converter OBJC_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder OBJC_DESIGNATED_INITIALIZER;
@end
diff --git a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Info.plist b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Info.plist
index 99a50a6f2..17576ad77 100644
Binary files a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Info.plist and b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Info.plist differ
diff --git a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Modules/SoulverCore.swiftmodule/arm64-apple-ios.swiftdoc b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Modules/SoulverCore.swiftmodule/arm64-apple-ios.swiftdoc
index 056818aa2..e2ac2dad6 100644
Binary files a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Modules/SoulverCore.swiftmodule/arm64-apple-ios.swiftdoc and b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Modules/SoulverCore.swiftmodule/arm64-apple-ios.swiftdoc differ
diff --git a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Modules/SoulverCore.swiftmodule/arm64-apple-ios.swiftinterface b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Modules/SoulverCore.swiftmodule/arm64-apple-ios.swiftinterface
index c9700fbaa..0e9e9538e 100644
--- a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Modules/SoulverCore.swiftmodule/arm64-apple-ios.swiftinterface
+++ b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Modules/SoulverCore.swiftmodule/arm64-apple-ios.swiftinterface
@@ -1,5 +1,5 @@
// swift-interface-format-version: 1.0
-// swift-compiler-version: Apple Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9)
+// swift-compiler-version: Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15)
// swift-module-flags: -target arm64-apple-ios12.2 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -Osize -module-name SoulverCore
import Foundation
@_exported import SoulverCore
@@ -61,17 +61,21 @@ extension CalculationResult {
public let EmptyResult: SoulverCore.CalculationResult
infix operator ~ : AdditionPrecedence
public typealias CocoaUnit = Foundation.Dimension
-public enum EvaluationResult {
+indirect public enum EvaluationResult {
case rawString(Swift.String)
case decimal(Foundation.Decimal)
case percentage(SoulverCore.Percentage)
case fraction(SoulverCore.Fraction)
+ case multiplier(SoulverCore.Multiplier)
+ case boolean(Swift.Bool)
case unitExpression(SoulverCore.UnitExpression)
case rate(SoulverCore.UnitRate)
case date(SoulverCore.Datestamp)
+ case iso8601(SoulverCore.iso8601)
case timestamp(SoulverCore.Timestamp)
case timespan(SoulverCore.Timespan)
case error(SoulverCore.EvaluationError)
+ case variable(SoulverCore.Variable)
case none
}
public class LineSection : Swift.Codable {
@@ -134,7 +138,6 @@ public class Line : Swift.Codable {
public var apparentLineType: SoulverCore.ApparentLineType?
public var lineIndex: SoulverCore.LineIndex?
public var explicitDependencies: Foundation.IndexSet?
- public var declaredVariable: SoulverCore.Variable?
public var variableEnvironment: SoulverCore.VariableList?
public var rawResult: Swift.String {
get
@@ -156,6 +159,11 @@ extension Line {
get
}
}
+extension Line {
+ public var declaredVariable: SoulverCore.Variable? {
+ get
+ }
+}
extension Line : Swift.Equatable, Swift.Hashable {
public static func == (lhs: SoulverCore.Line, rhs: SoulverCore.Line) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
@@ -182,9 +190,10 @@ public struct EngineFeatureFlags : Swift.Equatable, Swift.Hashable, Swift.Codabl
public var wordFunctions: Swift.Bool
public var variableDeclarations: Swift.Bool
public var bracketComments: Swift.Bool
+ public var inAmbiguityPreferSomethingToNothing: Swift.Bool
public var leftToRightOperatorEvaluation: Swift.Bool
public init()
- public init(units: Swift.Bool, wordFunctions: Swift.Bool, variableDeclarations: Swift.Bool, bracketComments: Swift.Bool, calendarCalculations: Swift.Bool, leftToRightOperatorEvaluation: Swift.Bool)
+ public init(units: Swift.Bool, wordFunctions: Swift.Bool, variableDeclarations: Swift.Bool, bracketComments: Swift.Bool, calendarCalculations: Swift.Bool, leftToRightOperatorEvaluation: Swift.Bool, inAmbiguityPreferSomethingToNothing: Swift.Bool)
public init(from decoder: Swift.Decoder) throws
public static func == (a: SoulverCore.EngineFeatureFlags, b: SoulverCore.EngineFeatureFlags) -> Swift.Bool
public var hashValue: Swift.Int {
@@ -238,6 +247,7 @@ public enum TokenType : Swift.CaseIterable {
case variableDeclarationSymbol
case pi
case typeName
+ case conditionalKeyword
case colon
case function
case timezone
@@ -248,15 +258,20 @@ public enum TokenType : Swift.CaseIterable {
case converter
case timestamp
case datestamp
+ case iso8601
case timespan
case dateWord
case unitExpression
case compoundUnitExpression
+ case conditionalExpression
case percentage
+ case multiplier
+ case boolean
case rate
case functionExpression
case wordFunction
case declaredVariable
+ case variableDeclaration
case subexpression
case comment
case wordComment
@@ -288,14 +303,24 @@ public enum TokenSubType {
case modOperator
case lesserOf
case greaterOf
+ case greaterThan
+ case greaterThanOrEqualTo
+ case lessThan
+ case lessThanOrEqualTo
+ case equalTo
+ case notEqualTo
+ case `false`
+ case `true`
case openBracket
case closeBracket
case numberConverter
case fractionConverter
+ case multiplierConveter
case percentageConverter
case unitConverter
case rateConverter
case dateConverter
+ case iso8601Converter
case timestampConverter
case timespanConverter
case timezoneConverter
@@ -303,26 +328,32 @@ public enum TokenSubType {
case roundingUpConverter
case roundingConverter
case roundingDownConverter
+ case binaryConverter
+ case hexConverter
case dateWordToday
case dateWordNow
case dateWordTomorrow
case dateWordYesterday
case dateWordDayOfWeek
case dateWordMonthOfYear
- case multiplierConveter
- case binaryConverter
- case hexConverter
case numberTypeName
case fractionTypeName
+ case multiplierTypeName
case percentageTypeName
case rateTypeName
case timestampTypeName
case timespanTypeName
case dateTypeName
+ case iso8601TypeName
case decimalPlacesTypeName
- case binaryType
- case hexType
- case multiplierType
+ case binaryTypeName
+ case hexTypeName
+ case conditionalKeywordIf
+ case conditionalKeywordThen
+ case conditionalKeywordElse
+ case conditionalKeywordUnless
+ case conditionalKeywordAnd
+ case conditionalKeywordOr
case unitMismatchError
case infinityError
case divideByZeroError
@@ -685,6 +716,9 @@ public struct ExpressionBeautificationOptions {
}
public init()
}
+public struct iso8601 {
+ public let datestamp: SoulverCore.Datestamp
+}
public class LineCollectionCompletions {
public class func completionsFor(textFragment: Swift.String, onLineAtIndex lineIndex: SoulverCore.LineIndex, in lineCollection: SoulverCore.LineCollection) -> [Swift.String]
@objc deinit
@@ -696,7 +730,7 @@ public struct Variable : Swift.Codable {
public let value: SoulverCore.VariableValue
public init(name: SoulverCore.VariableName, value: SoulverCore.VariableValue)
public var declaringLineIndex: SoulverCore.LineIndex?
- public var definition: SoulverCore.CalculationResult?
+ public var definition: SoulverCore.EvaluationResult?
public init(from decoder: Swift.Decoder) throws
public func encode(to encoder: Swift.Encoder) throws
}
@@ -755,6 +789,9 @@ public struct TokenIndexPath : Swift.Equatable {
public struct Timespan {
public let dateComponents: Foundation.DateComponents
}
+public struct Multiplier {
+ public let decimalValue: Foundation.Decimal
+}
public typealias Scalar = Swift.String
extension UnitLength {
public static let pixel: Foundation.UnitLength
@@ -856,6 +893,7 @@ extension UnitLength {
@objc deinit
}
@objc final public class NullUnit : Foundation.Dimension {
+ @objc override final public class func baseUnit() -> Self
@objc override dynamic public init(symbol: Swift.String, converter: Foundation.UnitConverter)
@objc required dynamic public init?(coder: Foundation.NSCoder)
@objc deinit
@@ -865,6 +903,10 @@ public struct UnitRate {
public let ofUnit: SoulverCore.CocoaUnit?
public let perUnit: SoulverCore.CocoaUnit
}
+extension UnitRate : Swift.Comparable {
+ public static func < (lhs: SoulverCore.UnitRate, rhs: SoulverCore.UnitRate) -> Swift.Bool
+ public static func == (a: SoulverCore.UnitRate, b: SoulverCore.UnitRate) -> Swift.Bool
+}
extension UnitRate : Swift.CustomDebugStringConvertible {
public var debugDescription: Swift.String {
get
@@ -1204,6 +1246,7 @@ public enum UnitType : Swift.String, Swift.CaseIterable, Swift.Codable {
}
public func cocoaUnitFor(identifier: SoulverCore.UnitIdentifier) -> SoulverCore.CocoaUnit
public func unitIdentifierFor(cocoaUnit: SoulverCore.CocoaUnit) -> SoulverCore.UnitIdentifier?
+public func motherUnitIdentifierFor(identifier: SoulverCore.UnitIdentifier) -> SoulverCore.UnitIdentifier
public struct Token : Swift.Equatable, Swift.Hashable, Swift.Comparable {
public static func == (lhs: SoulverCore.Token, rhs: SoulverCore.Token) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
@@ -1242,6 +1285,10 @@ public class TokenList {
public var flattenedTokens: [SoulverCore.Token] {
get
}
+ public subscript(index: Swift.Int) -> SoulverCore.Token {
+ get
+ set(newValue)
+ }
public func tokensOfType(_ tokenType: SoulverCore.TokenType) -> [SoulverCore.Token]
@objc deinit
}
@@ -1360,6 +1407,7 @@ extension Array {
public var isNotEmpty: Swift.Bool {
get
}
+ mutating public func trim(where predicate: (Element) throws -> Swift.Bool)
mutating public func move(from oldIndex: Swift.Array.Index, to newIndex: Swift.Array.Index)
}
public class LineCollection {
diff --git a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Modules/SoulverCore.swiftmodule/arm64.swiftdoc b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Modules/SoulverCore.swiftmodule/arm64.swiftdoc
index 056818aa2..e2ac2dad6 100644
Binary files a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Modules/SoulverCore.swiftmodule/arm64.swiftdoc and b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Modules/SoulverCore.swiftmodule/arm64.swiftdoc differ
diff --git a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Modules/SoulverCore.swiftmodule/arm64.swiftinterface b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Modules/SoulverCore.swiftmodule/arm64.swiftinterface
index c9700fbaa..0e9e9538e 100644
--- a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Modules/SoulverCore.swiftmodule/arm64.swiftinterface
+++ b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/Modules/SoulverCore.swiftmodule/arm64.swiftinterface
@@ -1,5 +1,5 @@
// swift-interface-format-version: 1.0
-// swift-compiler-version: Apple Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9)
+// swift-compiler-version: Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15)
// swift-module-flags: -target arm64-apple-ios12.2 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -Osize -module-name SoulverCore
import Foundation
@_exported import SoulverCore
@@ -61,17 +61,21 @@ extension CalculationResult {
public let EmptyResult: SoulverCore.CalculationResult
infix operator ~ : AdditionPrecedence
public typealias CocoaUnit = Foundation.Dimension
-public enum EvaluationResult {
+indirect public enum EvaluationResult {
case rawString(Swift.String)
case decimal(Foundation.Decimal)
case percentage(SoulverCore.Percentage)
case fraction(SoulverCore.Fraction)
+ case multiplier(SoulverCore.Multiplier)
+ case boolean(Swift.Bool)
case unitExpression(SoulverCore.UnitExpression)
case rate(SoulverCore.UnitRate)
case date(SoulverCore.Datestamp)
+ case iso8601(SoulverCore.iso8601)
case timestamp(SoulverCore.Timestamp)
case timespan(SoulverCore.Timespan)
case error(SoulverCore.EvaluationError)
+ case variable(SoulverCore.Variable)
case none
}
public class LineSection : Swift.Codable {
@@ -134,7 +138,6 @@ public class Line : Swift.Codable {
public var apparentLineType: SoulverCore.ApparentLineType?
public var lineIndex: SoulverCore.LineIndex?
public var explicitDependencies: Foundation.IndexSet?
- public var declaredVariable: SoulverCore.Variable?
public var variableEnvironment: SoulverCore.VariableList?
public var rawResult: Swift.String {
get
@@ -156,6 +159,11 @@ extension Line {
get
}
}
+extension Line {
+ public var declaredVariable: SoulverCore.Variable? {
+ get
+ }
+}
extension Line : Swift.Equatable, Swift.Hashable {
public static func == (lhs: SoulverCore.Line, rhs: SoulverCore.Line) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
@@ -182,9 +190,10 @@ public struct EngineFeatureFlags : Swift.Equatable, Swift.Hashable, Swift.Codabl
public var wordFunctions: Swift.Bool
public var variableDeclarations: Swift.Bool
public var bracketComments: Swift.Bool
+ public var inAmbiguityPreferSomethingToNothing: Swift.Bool
public var leftToRightOperatorEvaluation: Swift.Bool
public init()
- public init(units: Swift.Bool, wordFunctions: Swift.Bool, variableDeclarations: Swift.Bool, bracketComments: Swift.Bool, calendarCalculations: Swift.Bool, leftToRightOperatorEvaluation: Swift.Bool)
+ public init(units: Swift.Bool, wordFunctions: Swift.Bool, variableDeclarations: Swift.Bool, bracketComments: Swift.Bool, calendarCalculations: Swift.Bool, leftToRightOperatorEvaluation: Swift.Bool, inAmbiguityPreferSomethingToNothing: Swift.Bool)
public init(from decoder: Swift.Decoder) throws
public static func == (a: SoulverCore.EngineFeatureFlags, b: SoulverCore.EngineFeatureFlags) -> Swift.Bool
public var hashValue: Swift.Int {
@@ -238,6 +247,7 @@ public enum TokenType : Swift.CaseIterable {
case variableDeclarationSymbol
case pi
case typeName
+ case conditionalKeyword
case colon
case function
case timezone
@@ -248,15 +258,20 @@ public enum TokenType : Swift.CaseIterable {
case converter
case timestamp
case datestamp
+ case iso8601
case timespan
case dateWord
case unitExpression
case compoundUnitExpression
+ case conditionalExpression
case percentage
+ case multiplier
+ case boolean
case rate
case functionExpression
case wordFunction
case declaredVariable
+ case variableDeclaration
case subexpression
case comment
case wordComment
@@ -288,14 +303,24 @@ public enum TokenSubType {
case modOperator
case lesserOf
case greaterOf
+ case greaterThan
+ case greaterThanOrEqualTo
+ case lessThan
+ case lessThanOrEqualTo
+ case equalTo
+ case notEqualTo
+ case `false`
+ case `true`
case openBracket
case closeBracket
case numberConverter
case fractionConverter
+ case multiplierConveter
case percentageConverter
case unitConverter
case rateConverter
case dateConverter
+ case iso8601Converter
case timestampConverter
case timespanConverter
case timezoneConverter
@@ -303,26 +328,32 @@ public enum TokenSubType {
case roundingUpConverter
case roundingConverter
case roundingDownConverter
+ case binaryConverter
+ case hexConverter
case dateWordToday
case dateWordNow
case dateWordTomorrow
case dateWordYesterday
case dateWordDayOfWeek
case dateWordMonthOfYear
- case multiplierConveter
- case binaryConverter
- case hexConverter
case numberTypeName
case fractionTypeName
+ case multiplierTypeName
case percentageTypeName
case rateTypeName
case timestampTypeName
case timespanTypeName
case dateTypeName
+ case iso8601TypeName
case decimalPlacesTypeName
- case binaryType
- case hexType
- case multiplierType
+ case binaryTypeName
+ case hexTypeName
+ case conditionalKeywordIf
+ case conditionalKeywordThen
+ case conditionalKeywordElse
+ case conditionalKeywordUnless
+ case conditionalKeywordAnd
+ case conditionalKeywordOr
case unitMismatchError
case infinityError
case divideByZeroError
@@ -685,6 +716,9 @@ public struct ExpressionBeautificationOptions {
}
public init()
}
+public struct iso8601 {
+ public let datestamp: SoulverCore.Datestamp
+}
public class LineCollectionCompletions {
public class func completionsFor(textFragment: Swift.String, onLineAtIndex lineIndex: SoulverCore.LineIndex, in lineCollection: SoulverCore.LineCollection) -> [Swift.String]
@objc deinit
@@ -696,7 +730,7 @@ public struct Variable : Swift.Codable {
public let value: SoulverCore.VariableValue
public init(name: SoulverCore.VariableName, value: SoulverCore.VariableValue)
public var declaringLineIndex: SoulverCore.LineIndex?
- public var definition: SoulverCore.CalculationResult?
+ public var definition: SoulverCore.EvaluationResult?
public init(from decoder: Swift.Decoder) throws
public func encode(to encoder: Swift.Encoder) throws
}
@@ -755,6 +789,9 @@ public struct TokenIndexPath : Swift.Equatable {
public struct Timespan {
public let dateComponents: Foundation.DateComponents
}
+public struct Multiplier {
+ public let decimalValue: Foundation.Decimal
+}
public typealias Scalar = Swift.String
extension UnitLength {
public static let pixel: Foundation.UnitLength
@@ -856,6 +893,7 @@ extension UnitLength {
@objc deinit
}
@objc final public class NullUnit : Foundation.Dimension {
+ @objc override final public class func baseUnit() -> Self
@objc override dynamic public init(symbol: Swift.String, converter: Foundation.UnitConverter)
@objc required dynamic public init?(coder: Foundation.NSCoder)
@objc deinit
@@ -865,6 +903,10 @@ public struct UnitRate {
public let ofUnit: SoulverCore.CocoaUnit?
public let perUnit: SoulverCore.CocoaUnit
}
+extension UnitRate : Swift.Comparable {
+ public static func < (lhs: SoulverCore.UnitRate, rhs: SoulverCore.UnitRate) -> Swift.Bool
+ public static func == (a: SoulverCore.UnitRate, b: SoulverCore.UnitRate) -> Swift.Bool
+}
extension UnitRate : Swift.CustomDebugStringConvertible {
public var debugDescription: Swift.String {
get
@@ -1204,6 +1246,7 @@ public enum UnitType : Swift.String, Swift.CaseIterable, Swift.Codable {
}
public func cocoaUnitFor(identifier: SoulverCore.UnitIdentifier) -> SoulverCore.CocoaUnit
public func unitIdentifierFor(cocoaUnit: SoulverCore.CocoaUnit) -> SoulverCore.UnitIdentifier?
+public func motherUnitIdentifierFor(identifier: SoulverCore.UnitIdentifier) -> SoulverCore.UnitIdentifier
public struct Token : Swift.Equatable, Swift.Hashable, Swift.Comparable {
public static func == (lhs: SoulverCore.Token, rhs: SoulverCore.Token) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
@@ -1242,6 +1285,10 @@ public class TokenList {
public var flattenedTokens: [SoulverCore.Token] {
get
}
+ public subscript(index: Swift.Int) -> SoulverCore.Token {
+ get
+ set(newValue)
+ }
public func tokensOfType(_ tokenType: SoulverCore.TokenType) -> [SoulverCore.Token]
@objc deinit
}
@@ -1360,6 +1407,7 @@ extension Array {
public var isNotEmpty: Swift.Bool {
get
}
+ mutating public func trim(where predicate: (Element) throws -> Swift.Bool)
mutating public func move(from oldIndex: Swift.Array.Index, to newIndex: Swift.Array.Index)
}
public class LineCollection {
diff --git a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/SoulverCore b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/SoulverCore
index 904854f2f..45655bf09 100755
Binary files a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/SoulverCore and b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/SoulverCore differ
diff --git a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/_CodeSignature/CodeResources b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/_CodeSignature/CodeResources
index fee3ad55e..8842132be 100644
--- a/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/_CodeSignature/CodeResources
+++ b/SoulverCore.xcframework/ios-arm64/SoulverCore.framework/_CodeSignature/CodeResources
@@ -6,15 +6,19 @@
Base.lproj/DefaultCurrencyRates.json
- GGQyeKcWhAylO6N3mrTJ0U0BHpQ=
+ bgU0/Y8EJoRmz4uph3ypmABBMLw=
Base.lproj/FunctionDescriptions.json
- g6L9Dgt4FDLJKJJ6yAfg5LpJpwY=
+ lZxNUBBUYjxQDFvccGuTQcOfxw4=
Base.lproj/LocalizedFixtures.json
- OKjIlrX1S4l8wE7wE58Ab++ypmY=
+ D6zXRY1zGn+ViL9vvsB1YWQ4DAw=
+
+ Base.lproj/TimeZoneAbbrieviations.json
+
+ jvQ9kvDAPNdTvzDyAz9BcEGLcyg=
Base.lproj/UnitDescriptions.json
@@ -26,7 +30,7 @@
Headers/SoulverCore-Swift.h
- CUSsMDbWtotBhWV7JNmq1RB+fsY=
+ 8Ia+HUzkzK1QGQJQDp2AyX9eBS8=
Headers/SoulverCore.h
@@ -34,31 +38,31 @@
Info.plist
- Gy00domGqz3lUUQeABO//qdYBAk=
+ fJT1EItpyfUNcUBZN73QIJnJ5Go=
Modules/SoulverCore.swiftmodule/arm64-apple-ios.swiftdoc
- rST/xNSBNCvxzscBJx7Hqtl8xRU=
+ LYeeWsF0SiRVuMyWTSqLu82lZoA=
Modules/SoulverCore.swiftmodule/arm64-apple-ios.swiftinterface
- nwe0SKl3MmbCupxUfrKkkGzNIfA=
+ PFgqEIMlh4svs3+6Wgu08BfIFCk=
Modules/SoulverCore.swiftmodule/arm64-apple-ios.swiftmodule
- Pd5gmYKdQey0Z5iBkTBXlJZ0lPU=
+ XGq8giqL0ITe3eprZXrniOJ1ZRg=
Modules/SoulverCore.swiftmodule/arm64.swiftdoc
- rST/xNSBNCvxzscBJx7Hqtl8xRU=
+ LYeeWsF0SiRVuMyWTSqLu82lZoA=
Modules/SoulverCore.swiftmodule/arm64.swiftinterface
- nwe0SKl3MmbCupxUfrKkkGzNIfA=
+ PFgqEIMlh4svs3+6Wgu08BfIFCk=
Modules/SoulverCore.swiftmodule/arm64.swiftmodule
- Pd5gmYKdQey0Z5iBkTBXlJZ0lPU=
+ XGq8giqL0ITe3eprZXrniOJ1ZRg=
Modules/module.modulemap
@@ -179,21 +183,28 @@
hash2
- aQdbDAWTyWaMHr06FDdkLXJ1KEMLgn2IyNWrDuTVnFY=
+ CSmUHddJPFXMK9xl8Dc7pq5LO8Cjyl3yDWae/SMVpA8=
Base.lproj/FunctionDescriptions.json
hash2
- ScFb5P1Obi2p1xGbpHDhULLi6foVT9XluM/q2NRXLjY=
+ yC5BYOszy/7xLauxPsEccsTx/jfFuBRuJ+LCWq4+nC0=
Base.lproj/LocalizedFixtures.json
hash2
- MXmKvVFLjrrxmeXXEAPsJzSQIHWZurvBVZPvKAaIsOY=
+ O3c+nWUPnmVZpBVEG8lcN4or+z6WZQLR4YlA/gYz/mM=
+
+
+ Base.lproj/TimeZoneAbbrieviations.json
+
+ hash2
+
+ CGcnilnCPFpX3dNk0ISsdzY8sTSVjVd/fntEq5x3Arw=
Base.lproj/UnitDescriptions.json
@@ -214,7 +225,7 @@
hash2
- W+0OmU87opgVH/g4MtbVGdJm4+Mdb5Yo1bSM2VfyRe8=
+ 0uHxGz96qSJF3Bj+YXRBPH2Xm8f4te3AIXbbhOiDHPc=
Headers/SoulverCore.h
@@ -228,42 +239,42 @@
hash2
- ME+NVXSspP+O5hFTTejQnsne36JQZpO/QrSFY3SbmJ4=
+ N5dr7+JCAwb5E4dEsN0Yd1N/R3LuJMas0s+d2Uw5RnA=
Modules/SoulverCore.swiftmodule/arm64-apple-ios.swiftinterface
hash2
- 52NKDVLjAQPWyx4EUounrqoE3Ecl7Mflr1BAk1h6uYM=
+ mkwWwfMpl7XvNR82CT3/dPdmHxt+t22skxnwbjIytL4=
Modules/SoulverCore.swiftmodule/arm64-apple-ios.swiftmodule
hash2
- GdSt+JOCFdJcZcPNOT3XwZqb5vmLjTukbHLz+9TF4AU=
+ ywRNUE947b7UytF+SMz2GpTN46Lq2DtyBWfRFdks6IQ=
Modules/SoulverCore.swiftmodule/arm64.swiftdoc
hash2
- ME+NVXSspP+O5hFTTejQnsne36JQZpO/QrSFY3SbmJ4=
+ N5dr7+JCAwb5E4dEsN0Yd1N/R3LuJMas0s+d2Uw5RnA=
Modules/SoulverCore.swiftmodule/arm64.swiftinterface
hash2
- 52NKDVLjAQPWyx4EUounrqoE3Ecl7Mflr1BAk1h6uYM=
+ mkwWwfMpl7XvNR82CT3/dPdmHxt+t22skxnwbjIytL4=
Modules/SoulverCore.swiftmodule/arm64.swiftmodule
hash2
- GdSt+JOCFdJcZcPNOT3XwZqb5vmLjTukbHLz+9TF4AU=
+ ywRNUE947b7UytF+SMz2GpTN46Lq2DtyBWfRFdks6IQ=
Modules/module.modulemap
diff --git a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Base.lproj/DefaultCurrencyRates.json b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Base.lproj/DefaultCurrencyRates.json
index 9d21884c8..ba0c2dee3 100644
--- a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Base.lproj/DefaultCurrencyRates.json
+++ b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Base.lproj/DefaultCurrencyRates.json
@@ -1,30 +1,30 @@
{
"HRK" : {
- "value" : 0.14595077810008575,
+ "value" : 0.14104046112332522,
"code" : "HRK"
},
"HUF" : {
- "value" : 0.0032135431356240985,
+ "value" : 0.0030455270849261184,
"code" : "HUF"
},
"CDF" : {
- "value" : 0.00058962259318541251,
+ "value" : 0.00058479519783867745,
"code" : "CDF"
},
"XMR" : {
- "value" : 76.734707209999996,
+ "value" : 39.878292340000002,
"code" : "XMR"
},
"ILS" : {
- "value" : 0.29177912320373478,
+ "value" : 0.27719067253386925,
"code" : "ILS"
},
"NGN" : {
- "value" : 0.0027359793173534065,
+ "value" : 0.0027247930862974888,
"code" : "NGN"
},
"GYD" : {
- "value" : 0.0047815368414066556,
+ "value" : 0.004795433289696489,
"code" : "GYD"
},
"BYR" : {
@@ -32,47 +32,47 @@
"code" : "BYR"
},
"BHD" : {
- "value" : 2.6523510439653708,
+ "value" : 2.6594471541256004,
"code" : "BHD"
},
"SZL" : {
- "value" : 0.065702793544805654,
+ "value" : 0.05723977225439416,
"code" : "SZL"
},
"INR" : {
- "value" : 0.013910044327555561,
+ "value" : 0.013223559453202643,
"code" : "INR"
},
"SDG" : {
- "value" : 0.018484230613031911,
+ "value" : 0.018081980008635232,
"code" : "SDG"
},
"PEN" : {
- "value" : 0.29323328995435527,
+ "value" : 0.28542853097927107,
"code" : "PEN"
},
"EUR" : {
- "value" : 1.0883773273588673,
+ "value" : 1.0763497964622535,
"code" : "EUR"
},
"TRX" : {
- "value" : 0.0190759,
+ "value" : 0.01110775,
"code" : "TRX"
},
"PGK" : {
- "value" : 0.29368653250478488,
+ "value" : 0.2932228860462559,
"code" : "PGK"
},
"QAR" : {
- "value" : 0.27464838826713073,
+ "value" : 0.27464695507160319,
"code" : "QAR"
},
"LRD" : {
- "value" : 0.0050639416826753058,
+ "value" : 0.0050729222683882393,
"code" : "LRD"
},
"ISK" : {
- "value" : 0.0078488663117121521,
+ "value" : 0.0071062909108279455,
"code" : "ISK"
},
"SYP" : {
@@ -80,91 +80,91 @@
"code" : "SYP"
},
"TRY" : {
- "value" : 0.16273920017914331,
+ "value" : 0.1526134131318348,
"code" : "TRY"
},
"UAH" : {
- "value" : 0.040753552752091492,
+ "value" : 0.036539083756897441,
"code" : "UAH"
},
"SGD" : {
- "value" : 0.71494704029798983,
+ "value" : 0.68979598593919855,
"code" : "SGD"
},
"MMK" : {
- "value" : 0.00068987321992875405,
+ "value" : 0.00070313998918671949,
"code" : "MMK"
},
"NIO" : {
- "value" : 0.02919728914849172,
+ "value" : 0.029282253604403841,
"code" : "NIO"
},
"BIF" : {
- "value" : 0.00052910052910052914,
+ "value" : 0.00052770448548812663,
"code" : "BIF"
},
"AFN" : {
- "value" : 0.012995415282465422,
+ "value" : 0.01314917406618905,
"code" : "AFN"
},
+ "LKR" : {
+ "value" : 0.0053567214936039408,
+ "code" : "LKR"
+ },
"LTC" : {
- "value" : 71.324140209999996,
+ "value" : 37.386027069999997,
"code" : "LTC"
},
"GTQ" : {
- "value" : 0.13075498451076453,
+ "value" : 0.13131838404849325,
"code" : "GTQ"
},
- "LKR" : {
- "value" : 0.0055015208404211261,
- "code" : "LKR"
- },
"XRP" : {
- "value" : 0.25512463000000002,
+ "value" : 0.15588341,
"code" : "XRP"
},
"CHF" : {
- "value" : 1.024642655873764,
+ "value" : 1.0139252493749151,
"code" : "CHF"
},
"THB" : {
- "value" : 0.031509975018261603,
+ "value" : 0.030671409734363199,
"code" : "THB"
},
"AMD" : {
- "value" : 0.002090605015070419,
+ "value" : 0.002026012365811047,
"code" : "AMD"
},
"AOA" : {
- "value" : 0.0020284407638936717,
+ "value" : 0.0019282033334532417,
"code" : "AOA"
},
"SEK" : {
- "value" : 0.10295713482648633,
+ "value" : 0.096334426889635907,
"code" : "SEK"
},
"DASH" : {
- "value" : 96.853203140000005,
+ "value" : 70.651361420000001,
"code" : "DASH"
},
"SAR" : {
- "value" : 0.26651528598422763,
+ "value" : 0.26610330822293815,
"code" : "SAR"
},
"KWD" : {
- "value" : 3.266927585283145,
+ "value" : 3.2126449706042988,
"code" : "KWD"
},
"IRR" : {
- "value" : 2.3750148435043321e-05,
+ "value" : 2.3750148239875258e-05,
"code" : "IRR"
},
"WST" : {
- "value" : 0.37188891678055763,
+ "value" : 0.34640216321222883,
"code" : "WST"
},
"BNB" : {
- "value" : 20.485580339999999,
+ "value" : 11.775446219999999,
"code" : "BNB"
},
"BMD" : {
@@ -172,99 +172,99 @@
"code" : "BMD"
},
"BGN" : {
- "value" : 0.55563334422374688,
+ "value" : 0.54648183193825628,
"code" : "BGN"
},
"PHP" : {
- "value" : 0.019575026947960848,
+ "value" : 0.019616311999168582,
"code" : "PHP"
},
"ZMW" : {
- "value" : 0.067886459624731804,
+ "value" : 0.058983113429540691,
"code" : "ZMW"
},
"XAF" : {
- "value" : 0.0016514878146375363,
+ "value" : 0.0016360828518246062,
"code" : "XAF"
},
"BDT" : {
- "value" : 0.011767930295253842,
+ "value" : 0.011810162503111978,
"code" : "BDT"
},
"NOK" : {
- "value" : 0.1068136650566999,
+ "value" : 0.087346199719706044,
"code" : "NOK"
},
"BOB" : {
- "value" : 0.1445582422989849,
+ "value" : 0.14520865176380593,
"code" : "BOB"
},
"TZS" : {
- "value" : 0.00043292944517055035,
+ "value" : 0.00043381997443251612,
"code" : "TZS"
},
"XAG" : {
- "value" : 17.995968902965735,
+ "value" : 12.582573136206353,
"code" : "XAG"
},
- "VEF" : {
- "value" : 0.10012517649565486,
- "code" : "VEF"
+ "VUV" : {
+ "value" : 0.0078507628393907347,
+ "code" : "VUV"
},
"ANG" : {
- "value" : 0.55846235209822681,
+ "value" : 0.55975120178583027,
"code" : "ANG"
},
- "VUV" : {
- "value" : 0.0083791690639469351,
- "code" : "VUV"
- },
"BND" : {
- "value" : 0.71415716599583501,
+ "value" : 0.69261046963838113,
"code" : "BND"
},
"XCD" : {
"value" : 0.37002090618119926,
"code" : "XCD"
},
+ "VEF" : {
+ "value" : 0.10012511634538519,
+ "code" : "VEF"
+ },
"SCR" : {
- "value" : 0.072965746011637592,
+ "value" : 0.073255817445916874,
"code" : "SCR"
},
"KYD" : {
- "value" : 1.1995398565110424,
+ "value" : 1.2023074684935329,
"code" : "KYD"
},
"DJF" : {
- "value" : 0.0056268222604561047,
+ "value" : 0.005626816244848073,
"code" : "DJF"
},
"CLF" : {
- "value" : 33.935116058096916,
+ "value" : 31.962156806341291,
"code" : "CLF"
},
"LSL" : {
- "value" : 0.065661645148579501,
+ "value" : 0.057239732937722825,
"code" : "LSL"
},
"MOP" : {
- "value" : 0.12457938883843422,
+ "value" : 0.12540460227366068,
"code" : "MOP"
},
"ALL" : {
- "value" : 0.0088893254535389408,
+ "value" : 0.0087069785902274977,
"code" : "ALL"
},
"UZS" : {
- "value" : 0.00010503098243043774,
+ "value" : 0.00010509721122358741,
"code" : "UZS"
},
"UYU" : {
- "value" : 0.026035353093541484,
+ "value" : 0.021802889192419021,
"code" : "UYU"
},
"PLN" : {
- "value" : 0.25272296357099572,
+ "value" : 0.23574063814990748,
"code" : "PLN"
},
"LTL" : {
@@ -272,19 +272,19 @@
"code" : "LTL"
},
"LYD" : {
- "value" : 0.71174123935502009,
+ "value" : 0.70902826966613985,
"code" : "LYD"
},
- "JPY" : {
- "value" : 0.009077169804173767,
- "code" : "JPY"
- },
"MNT" : {
- "value" : 0.00036300093050751028,
+ "value" : 0.00036022874978058379,
"code" : "MNT"
},
+ "JPY" : {
+ "value" : 0.009011766122319945,
+ "code" : "JPY"
+ },
"FJD" : {
- "value" : 0.45108013393471336,
+ "value" : 0.42300468689193071,
"code" : "FJD"
},
"ZWL" : {
@@ -292,23 +292,23 @@
"code" : "ZWL"
},
"KPW" : {
- "value" : 0.0011110213047901087,
+ "value" : 0.0011111110777777787,
"code" : "KPW"
},
"PKR" : {
- "value" : 0.0064809950587986333,
+ "value" : 0.0063002032483369125,
"code" : "PKR"
},
"MRO" : {
- "value" : 0.0028011201735596465,
+ "value" : 0.0028011180393746832,
"code" : "MRO"
},
"OMR" : {
- "value" : 2.5972272002410226,
+ "value" : 2.6073511658770738,
"code" : "OMR"
},
"GBP" : {
- "value" : 1.3002007509959537,
+ "value" : 1.1650001339750153,
"code" : "GBP"
},
"LVL" : {
@@ -316,99 +316,99 @@
"code" : "LVL"
},
"SHP" : {
- "value" : 1.3003360068241632,
+ "value" : 1.1659509670980297,
"code" : "SHP"
},
"GEL" : {
- "value" : 0.35906423551454086,
+ "value" : 0.31200858647629987,
"code" : "GEL"
},
"TND" : {
- "value" : 0.3496019432274412,
+ "value" : 0.34182144341624554,
"code" : "TND"
},
"DKK" : {
- "value" : 0.1456971975144058,
+ "value" : 0.14321714985268685,
"code" : "DKK"
},
"NPR" : {
- "value" : 0.0087003367378331014,
+ "value" : 0.0083551067415016875,
"code" : "NPR"
},
"KRW" : {
- "value" : 0.00082254450239665274,
+ "value" : 0.00079684425197163811,
"code" : "KRW"
},
"BSD" : {
- "value" : 0.99963513317639063,
+ "value" : 1.0019046206839202,
"code" : "BSD"
},
"CRC" : {
- "value" : 0.0017460833081489916,
+ "value" : 0.0017717644250681136,
"code" : "CRC"
},
"EGP" : {
- "value" : 0.06415609743078568,
+ "value" : 0.063897302211172541,
"code" : "EGP"
},
"MAD" : {
- "value" : 0.10328975813876813,
+ "value" : 0.10182904308906142,
"code" : "MAD"
},
- "BTC" : {
- "value" : 9345.7943925233649,
- "code" : "BTC"
- },
"AUD" : {
- "value" : 0.66019761034872959,
+ "value" : 0.57930580626623507,
"code" : "AUD"
},
+ "BTC" : {
+ "value" : 6211.1801242236024,
+ "code" : "BTC"
+ },
"SLL" : {
- "value" : 0.0001029336096135646,
+ "value" : 0.0001030927799022214,
"code" : "SLL"
},
"MWK" : {
- "value" : 0.001355938147454957,
+ "value" : 0.0013605435790645785,
"code" : "MWK"
},
"RSD" : {
- "value" : 0.0092584198291947445,
+ "value" : 0.0091053917959946426,
"code" : "RSD"
},
"NZD" : {
- "value" : 0.63199979270406803,
+ "value" : 0.56965288201634334,
"code" : "NZD"
},
"SRD" : {
- "value" : 0.13408472626133838,
+ "value" : 0.13408352169833407,
"code" : "SRD"
},
"CLP" : {
- "value" : 0.0012298621631488707,
+ "value" : 0.0011583406331187806,
"code" : "CLP"
},
"RUB" : {
- "value" : 0.015304115033196997,
+ "value" : 0.012503531622506775,
"code" : "RUB"
},
"NAD" : {
- "value" : 0.065660567303361866,
+ "value" : 0.05723974931966265,
"code" : "NAD"
},
"HKD" : {
- "value" : 0.12836558518661145,
+ "value" : 0.12883526478867796,
"code" : "HKD"
},
"GMD" : {
- "value" : 0.019607800845919746,
+ "value" : 0.019650075387514225,
"code" : "GMD"
},
"VND" : {
- "value" : 4.3035741183052525e-05,
+ "value" : 4.3019078961519434e-05,
"code" : "VND"
},
"LAK" : {
- "value" : 0.00011229646146342911,
+ "value" : 0.00011185681889954924,
"code" : "LAK"
},
"CUC" : {
@@ -416,179 +416,179 @@
"code" : "CUC"
},
"RON" : {
- "value" : 0.22636720699764418,
+ "value" : 0.2205539521283236,
"code" : "RON"
},
"MUR" : {
- "value" : 0.026699166315861871,
+ "value" : 0.025621068142843293,
"code" : "MUR"
},
"XAU" : {
- "value" : 1633.9869281045751,
+ "value" : 1497.0059880239521,
"code" : "XAU"
},
"GGP" : {
- "value" : 1.3003360068241632,
+ "value" : 1.1659509670980297,
"code" : "GGP"
},
+ "MXN" : {
+ "value" : 0.040944668848526183,
+ "code" : "MXN"
+ },
"BRL" : {
- "value" : 0.22787364042040861,
+ "value" : 0.19747609749315942,
"code" : "BRL"
},
"STD" : {
- "value" : 4.5685510254460443e-05,
+ "value" : 4.5345772756215923e-05,
"code" : "STD"
},
- "MXN" : {
- "value" : 0.052422303593286805,
- "code" : "MXN"
- },
"AWG" : {
- "value" : 0.5554012774229381,
+ "value" : 0.55555555555555558,
"code" : "AWG"
},
"MVR" : {
- "value" : 0.064724311648855073,
+ "value" : 0.06489133491728756,
"code" : "MVR"
},
"PAB" : {
- "value" : 0.99963513317639063,
+ "value" : 1.0019046206839202,
"code" : "PAB"
},
"TJS" : {
- "value" : 0.10316107188067483,
+ "value" : 0.10280197050817071,
"code" : "TJS"
},
"GNF" : {
- "value" : 0.00010624170451756518,
+ "value" : 0.00010624165639982802,
"code" : "GNF"
},
"MGA" : {
- "value" : 0.00026917901381942578,
+ "value" : 0.00026652449560660981,
"code" : "MGA"
},
"XDR" : {
- "value" : 1.3626484435148154,
+ "value" : 1.3504461874203235,
"code" : "XDR"
},
"ETB" : {
- "value" : 0.030969578211687721,
+ "value" : 0.030671199951809412,
"code" : "ETB"
},
"ZAR" : {
- "value" : 0.065733984687005337,
+ "value" : 0.056678707113347777,
"code" : "ZAR"
},
"COP" : {
- "value" : 0.00029099374363451185,
+ "value" : 0.00024268899405411964,
"code" : "COP"
},
"IDR" : {
- "value" : 7.1702577707668594e-05,
+ "value" : 6.3373854153186512e-05,
"code" : "IDR"
},
"SVC" : {
- "value" : 0.11424858023289346,
+ "value" : 0.11450918386556438,
"code" : "SVC"
},
"CVE" : {
- "value" : 0.0098376559518098868,
+ "value" : 0.00969895444398188,
"code" : "CVE"
},
"ETC" : {
- "value" : 9.2414770100000005,
+ "value" : 4.8471909000000002,
"code" : "ETC"
},
"TTD" : {
- "value" : 0.14783698961312094,
+ "value" : 0.1482872525753047,
"code" : "TTD"
},
- "DOGE" : {
- "value" : 0.0025008600000000001,
- "code" : "DOGE"
+ "GIP" : {
+ "value" : 1.1659509670980297,
+ "code" : "GIP"
},
"PYG" : {
- "value" : 0.00015260611179847446,
+ "value" : 0.00015102166981185603,
"code" : "PYG"
},
- "GIP" : {
- "value" : 1.3003360068241632,
- "code" : "GIP"
+ "DOGE" : {
+ "value" : 0.0017667799999999999,
+ "code" : "DOGE"
},
"MZN" : {
- "value" : 0.015378693404678168,
+ "value" : 0.01507044551657938,
"code" : "MZN"
},
"FKP" : {
- "value" : 1.3003360068241632,
+ "value" : 1.1659509670980297,
"code" : "FKP"
},
"KZT" : {
- "value" : 0.0026468799333706208,
+ "value" : 0.0022358015367513568,
"code" : "KZT"
},
+ "UGX" : {
+ "value" : 0.00026195567645827576,
+ "code" : "UGX"
+ },
"USD" : {
"value" : 1,
"code" : "USD"
},
- "UGX" : {
- "value" : 0.00027163687561171894,
- "code" : "UGX"
- },
"RWF" : {
"value" : 0.0010695187165775401,
"code" : "RWF"
},
"GHS" : {
- "value" : 0.18709119404780591,
+ "value" : 0.17792359604938446,
"code" : "GHS"
},
"ARS" : {
- "value" : 0.016188774318594657,
+ "value" : 0.015781795342403961,
"code" : "ARS"
},
"JEP" : {
- "value" : 1.3003360068241632,
+ "value" : 1.1659509670980297,
"code" : "JEP"
},
"DOP" : {
- "value" : 0.018658447894026584,
+ "value" : 0.018518395405482394,
"code" : "DOP"
},
"LBP" : {
- "value" : 0.0006605020835914713,
+ "value" : 0.00066135545154280214,
"code" : "LBP"
},
"BZD" : {
- "value" : 0.4959279357198047,
+ "value" : 0.49709571826603072,
"code" : "BZD"
},
"BTN" : {
- "value" : 0.013920560096519595,
+ "value" : 0.0133681457673309,
"code" : "BTN"
},
"ADA" : {
- "value" : 0.05665137,
+ "value" : 0.028973720000000001,
"code" : "ADA"
},
- "YER" : {
- "value" : 0.003996004554885752,
- "code" : "YER"
- },
"MYR" : {
- "value" : 0.23615555755500595,
+ "value" : 0.22755696661102137,
"code" : "MYR"
},
+ "YER" : {
+ "value" : 0.0039944020213208073,
+ "code" : "YER"
+ },
"JMD" : {
- "value" : 0.0072263691946240433,
+ "value" : 0.0074044889418030122,
"code" : "JMD"
},
"TOP" : {
- "value" : 0.43108093544562992,
+ "value" : 0.41702287370462271,
"code" : "TOP"
},
"SOS" : {
- "value" : 0.0017094014230404455,
+ "value" : 0.0017064836573524296,
"code" : "SOS"
},
"TMT" : {
@@ -596,43 +596,43 @@
"code" : "TMT"
},
"MDL" : {
- "value" : 0.056002056843543743,
+ "value" : 0.055662867379099416,
"code" : "MDL"
},
"XOF" : {
- "value" : 0.0016501659695678042,
+ "value" : 0.001640679393392658,
"code" : "XOF"
},
"ETH" : {
- "value" : 253.23130087000001,
+ "value" : 131.32626894000001,
"code" : "ETH"
},
"TWD" : {
- "value" : 0.032894195819147709,
+ "value" : 0.033036550582394741,
"code" : "TWD"
},
"BBD" : {
- "value" : 0.49508945523821973,
+ "value" : 0.50064859024866715,
"code" : "BBD"
},
"CAD" : {
- "value" : 0.75270314517009207,
+ "value" : 0.69606375944036469,
"code" : "CAD"
},
"CNY" : {
- "value" : 0.14209787332059851,
+ "value" : 0.1409283570966729,
"code" : "CNY"
},
- "JOD" : {
- "value" : 1.4104073961763857,
- "code" : "JOD"
- },
"XPF" : {
- "value" : 0.0090457003253557496,
+ "value" : 0.0089565314807213709,
"code" : "XPF"
},
+ "JOD" : {
+ "value" : 1.4103576667042761,
+ "code" : "JOD"
+ },
"XLM" : {
- "value" : 0.064830589999999994,
+ "value" : 0.039567440000000002,
"code" : "XLM"
},
"IQD" : {
@@ -640,91 +640,91 @@
"code" : "IQD"
},
"HNL" : {
- "value" : 0.040164394473154404,
+ "value" : 0.04009560556573516,
"code" : "HNL"
},
"AED" : {
- "value" : 0.27225441630695052,
+ "value" : 0.27225389745066897,
"code" : "AED"
},
"EOS" : {
- "value" : 4.0654144399999996,
+ "value" : 2.1972275300000002,
"code" : "EOS"
},
- "KES" : {
- "value" : 0.0098808349566392398,
- "code" : "KES"
- },
"ERN" : {
- "value" : 0.066664208979495626,
+ "value" : 0.066665075593529161,
"code" : "ERN"
},
+ "KES" : {
+ "value" : 0.0094321483552431921,
+ "code" : "KES"
+ },
"KMF" : {
- "value" : 0.0022105554069313188,
+ "value" : 0.0021810070248578705,
"code" : "KMF"
},
- "MKD" : {
- "value" : 0.017615996847159348,
- "code" : "MKD"
- },
"DZD" : {
- "value" : 0.0082945988699222838,
+ "value" : 0.0080988028025745125,
"code" : "DZD"
},
+ "MKD" : {
+ "value" : 0.017395114936830335,
+ "code" : "MKD"
+ },
"BSV" : {
- "value" : 261.34168437,
+ "value" : 164.85426050999999,
"code" : "BSV"
},
"BWP" : {
- "value" : 0.090066843107612315,
+ "value" : 0.088471562629859668,
"code" : "BWP"
},
- "SBD" : {
- "value" : 0.12114843384756402,
- "code" : "SBD"
- },
"AZN" : {
- "value" : 0.58922658118953064,
+ "value" : 0.58686479222052035,
"code" : "AZN"
},
+ "SBD" : {
+ "value" : 0.12094835118369733,
+ "code" : "SBD"
+ },
"BCH" : {
- "value" : 355.60714253999998,
+ "value" : 215.75744254,
"code" : "BCH"
},
"KGS" : {
- "value" : 0.014316402722069275,
+ "value" : 0.011972161754823921,
"code" : "KGS"
},
"BYN" : {
- "value" : 0.44742889460007013,
+ "value" : 0.3887025923741993,
"code" : "BYN"
},
"KHR" : {
- "value" : 0.00024479803526350263,
+ "value" : 0.00024721876717582515,
"code" : "KHR"
},
"NEO" : {
- "value" : 12.6220079,
+ "value" : 6.0888002800000001,
"code" : "NEO"
},
"ZMK" : {
- "value" : 0.000111096211627849,
+ "value" : 0.00011109625392516104,
"code" : "ZMK"
},
"HTG" : {
- "value" : 0.01108319746256844,
+ "value" : 0.010517724026785531,
"code" : "HTG"
},
- "CZK" : {
- "value" : 0.043086767011151113,
- "code" : "CZK"
+ "IMP" : {
+ "value" : 1.1659509670980297,
+ "code" : "IMP"
},
"BAM" : {
- "value" : 0.55389019237714165,
+ "value" : 0.54868781309498338,
"code" : "BAM"
},
- "IMP" : {
- "value" : 1.3003360068241632,
- "code" : "IMP"
+ "CZK" : {
+ "value" : 0.039221777185790417,
+ "code" : "CZK"
}
}
\ No newline at end of file
diff --git a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Base.lproj/FunctionDescriptions.json b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Base.lproj/FunctionDescriptions.json
index 93dcc8bd0..05504e9d5 100644
--- a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Base.lproj/FunctionDescriptions.json
+++ b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Base.lproj/FunctionDescriptions.json
@@ -1 +1,267 @@
-{"percentage":[{"prototypeExpressions":["10% of 100"],"keywords":[],"identifier":"percentOf"},{"prototypeExpressions":["10% off 100"],"keywords":[],"identifier":"percentOff"},{"prototypeExpressions":["10% on 100"],"keywords":[],"identifier":"percentOn"},{"prototypeExpressions":["30 is 20% of what"],"keywords":["what"],"identifier":"isPercentOfWhat"},{"prototypeExpressions":["20% of what is 30"],"keywords":["what"],"identifier":"isPercentOfWhatClassic"},{"prototypeExpressions":["30 is 20% off what"],"keywords":["what"],"identifier":"isPercentOffWhat"},{"prototypeExpressions":["20% off what is 30"],"keywords":["what"],"identifier":"isPercentOffWhatClassic"},{"prototypeExpressions":["30 is 20% on what"],"keywords":["what"],"identifier":"isPercentOnWhat"},{"prototypeExpressions":["20% on what is 30"],"keywords":["what"],"identifier":"isPercentOnWhatClassic"},{"prototypeExpressions":["10 is what % of 20","10 as a % of 20","10 as % of 20"],"keywords":["of"],"identifier":"isWhatPercentOf"},{"prototypeExpressions":["10 is what % off 20","10 as a % off 20","10 as % off 20"],"keywords":[],"identifier":"isWhatPercentOff"},{"prototypeExpressions":["20 is what % on 10","20 as a % on 10","20 as % on 10"],"keywords":[],"identifier":"isWhatPercentOn"}],"general":[{"prototypeExpressions":["remainder of 20 divided by 3"],"keywords":["remainder"],"identifier":"remainder"},{"prototypeExpressions":["half of 20"],"keywords":["half"],"identifier":"halfOf"},{"prototypeExpressions":["smaller of 2 and 30","lesser of 2 and 30"],"keywords":["and","of"],"identifier":"lesserOf"},{"prototypeExpressions":["larger of 2 and 30","greater of 2 and 30"],"keywords":["and","of"],"identifier":"greaterOf"},{"prototypeExpressions":["midpoint between 2 and 32"],"keywords":["midpoint"],"identifier":"midpoint"},{"prototypeExpressions":["6 is to 600 as what is to 8"],"keywords":["is to"],"identifier":"proportionsFindNumerator"},{"prototypeExpressions":["6 is to 600 as 8 is to what"],"keywords":["is to"],"identifier":"proportionsFindDenominator"}],"unitRelated":[{"prototypeExpressions":["__unit in __unit_expression"],"keywords":[],"identifier":"unitInUnitExpression"}],"datetime":[{"prototypeExpressions":["__unit between __datestamp and __datestamp","__unit from __datestamp to __datestamp","__unit in __datestamp to __datestamp"],"keywords":[],"identifier":"calendarUnitBetweenDates"},{"prototypeExpressions":["__unit to __datestamp","__unit before __datestamp","__unit until __datestamp","__unit till __datestamp"],"keywords":[],"identifier":"calendarUnitToDate"},{"prototypeExpressions":["__datestamp to __datestamp"],"keywords":[],"identifier":"intervalBetweenDates"},{"identifier":"intervalBetweenTimestamps","keywords":[],"prototypeExpressions":["__timestamp to __timestamp"]},{"identifier":"calendarUnitSinceDate","keywords":["since"],"prototypeExpressions":["__unit since __datestamp"]},{"prototypeExpressions":["__timespan from __datestamp","__timespan after __datestamp"],"keywords":[],"identifier":"calendarUnitExpressionAfterDate"},{"prototypeExpressions":["new timestamp"],"keywords":[],"identifier":"generateTimestamp"}]}
+{
+ "percentage": [
+ {
+ "identifier": "percentOf",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "10% of 100"
+ ]
+ },
+ {
+ "identifier": "percentOff",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "10% off 100"
+ ]
+ },
+ {
+ "identifier": "percentOn",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "10% on 100"
+ ]
+ },
+ {
+ "identifier": "isPercentOfWhat",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "30 is 20% of what"
+ ]
+ },
+ {
+ "identifier": "isPercentOfWhatClassic",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "20% of what is 30"
+ ]
+ },
+ {
+ "identifier": "isPercentOffWhat",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "30 is 20% off what"
+ ]
+ },
+ {
+ "identifier": "isPercentOffWhatClassic",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "20% off what is 30"
+ ]
+ },
+ {
+ "identifier": "isPercentOnWhat",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "30 is 20% on what"
+ ]
+ },
+ {
+ "identifier": "isPercentOnWhatClassic",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "20% on what is 30"
+ ]
+ },
+ {
+ "identifier": "isWhatPercentOf",
+ "keywords": [
+ "of"
+ ],
+ "prototypeExpressions": [
+ "10 is what % of 20",
+ "10 as a % of 20",
+ "10 as % of 20"
+ ]
+ },
+ {
+ "identifier": "isWhatPercentOff",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "10 is what % off 20",
+ "10 as a % off 20",
+ "10 as % off 20"
+ ]
+ },
+ {
+ "identifier": "isWhatPercentOn",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "20 is what % on 10",
+ "20 as a % on 10",
+ "20 as % on 10"
+ ]
+ }
+ ],
+ "general": [
+ {
+ "identifier": "remainder",
+ "keywords": [
+ "remainder"
+ ],
+ "prototypeExpressions": [
+ "remainder of 20 divided by 3"
+ ]
+ },
+ {
+ "identifier": "halfOf",
+ "keywords": [
+ "half"
+ ],
+ "prototypeExpressions": [
+ "half of 20"
+ ]
+ },
+ {
+ "identifier": "lesserOf",
+ "keywords": [
+ "and",
+ "of"
+ ],
+ "prototypeExpressions": [
+ "smaller of 2 and 30",
+ "lesser of 2 and 30"
+ ]
+ },
+ {
+ "identifier": "greaterOf",
+ "keywords": [
+ "and",
+ "of"
+ ],
+ "prototypeExpressions": [
+ "larger of 2 and 30",
+ "greater of 2 and 30"
+ ]
+ },
+ {
+ "identifier": "midpoint",
+ "keywords": [
+ "midpoint"
+ ],
+ "prototypeExpressions": [
+ "midpoint between 2 and 32"
+ ]
+ },
+ {
+ "identifier": "proportionsFindNumerator",
+ "keywords": [
+ "is to"
+ ],
+ "prototypeExpressions": [
+ "6 is to 600 as what is to 8"
+ ]
+ },
+ {
+ "identifier": "proportionsFindDenominator",
+ "keywords": [
+ "is to"
+ ],
+ "prototypeExpressions": [
+ "6 is to 600 as 8 is to what"
+ ]
+ },
+ {
+ "identifier": "makeRandomNumber",
+ "keywords": [
+ "random"
+ ],
+ "prototypeExpressions": [
+ "random number between 1 and 5",
+ "random between 1 and 5"
+ ]
+ }
+ ],
+ "unitRelated": [
+ {
+ "identifier": "unitInUnitExpression",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "__unit in __unit_expression"
+ ]
+ }
+ ],
+ "datetime": [
+ {
+ "identifier": "calendarUnitBetweenDates",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "__unit between __datestamp and __datestamp",
+ "__unit from __datestamp to __datestamp",
+ "__unit in __datestamp to __datestamp"
+ ]
+ },
+ {
+ "identifier": "calendarUnitToDate",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "__unit to __datestamp",
+ "__unit before __datestamp",
+ "__unit until __datestamp",
+ "__unit till __datestamp"
+ ]
+ },
+ {
+ "identifier": "intervalBetweenDates",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "__datestamp to __datestamp"
+ ]
+ },
+ {
+ "prototypeExpressions": [
+ "__timestamp to __timestamp"
+ ],
+ "keywords": [
+ ],
+ "identifier": "intervalBetweenTimestamps"
+ },
+ {
+ "prototypeExpressions": [
+ "__unit since __datestamp"
+ ],
+ "keywords": [
+ "since"
+ ],
+ "identifier": "calendarUnitSinceDate"
+ },
+ {
+ "identifier": "calendarUnitExpressionAfterDate",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "__timespan from __datestamp",
+ "__timespan after __datestamp"
+ ]
+ },
+ {
+ "identifier": "generateTimestamp",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "new timestamp"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Base.lproj/LocalizedFixtures.json b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Base.lproj/LocalizedFixtures.json
index 7599e6892..ec87d93cf 100644
--- a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Base.lproj/LocalizedFixtures.json
+++ b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Base.lproj/LocalizedFixtures.json
@@ -1,59 +1,59 @@
{
- "fixtures" : {
- "decimalPlacesTypes" : [
+ "fixtures": {
+ "decimalPlacesTypes": [
"dp",
"digit",
"digits"
],
- "divisionOperators" : [
+ "multiplierTypes": [
+ "multiplier"
+ ],
+ "divisionOperators": [
"÷",
"per"
],
- "roundingConverters" : [
+ "roundingConverters": [
"rounded"
],
- "tomorrowDateAliases" : [
- "tomorrow"
- ],
- "multiplicationOperators" : [
+ "multiplicationOperators": [
"×",
"x"
],
- "numberTypes" : [
+ "tomorrowDateAliases": [
+ "tomorrow"
+ ],
+ "numberTypes": [
"number"
],
- "roundingDownConverters" : [
+ "roundingDownConverters": [
"rounded down"
],
- "yesterdayDateAliases" : [
+ "yesterdayDateAliases": [
"yesterday"
],
- "subtractionOperators" : [
+ "subtractionOperators": [
"−",
"–"
],
- "dateTypes" : [
- "date"
- ],
- "roundingUpConverters" : [
- "rounded up"
+ "todayDateAliases": [
+ "today"
],
- "timestampTypes" : [
+ "timestampTypes": [
"timestamp"
],
- "todayDateAliases" : [
- "today"
+ "roundingUpConverters": [
+ "rounded up"
],
- "additionOperators" : [
- "plus"
+ "dateTypes": [
+ "date"
],
- "piAliases" : [
- "π"
+ "iso8601Types": [
+ "iso8601"
],
- "timespanTypes" : [
- "timespan"
+ "piAliases": [
+ "π"
],
- "monthOfYearDateAliases" : [
+ "monthOfYearDateAliases": [
"jan",
"feb",
"mar",
@@ -79,17 +79,23 @@
"november",
"december"
],
- "nowDateAliases" : [
+ "additionOperators": [
+ "plus"
+ ],
+ "timespanTypes": [
+ "timespan"
+ ],
+ "nowDateAliases": [
"now"
],
- "converterSymbols" : [
+ "converterSymbols": [
"to",
"as"
],
- "fractionTypes" : [
+ "fractionTypes": [
"fraction"
],
- "dayOfWeekDateAliases" : [
+ "dayOfWeekDateAliases": [
"monday",
"tuesday",
"wednesday",
@@ -106,17 +112,17 @@
"sat",
"sun"
],
- "dateIntervalPrepositions" : [
+ "dateIntervalPrepositions": [
"between ",
"until ",
"before ",
"to ",
"from ",
- "after "
+ "after "
],
- "percentTypes" : [
+ "percentTypes": [
"percent",
"percentage"
]
}
-}
+}
\ No newline at end of file
diff --git a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Base.lproj/TimeZoneAbbrieviations.json b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Base.lproj/TimeZoneAbbrieviations.json
new file mode 100644
index 000000000..1bde26bad
--- /dev/null
+++ b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Base.lproj/TimeZoneAbbrieviations.json
@@ -0,0 +1,63 @@
+{
+ "ACDT": "Australia/Adelaide",
+ "ACST": "Australia/Darwin",
+ "ADT": "America/Halifax",
+ "AEDT": "Australia/Sydney",
+ "AEST": "Australia/Brisbane",
+ "AKDT": "America/Juneau",
+ "AKST": "America/Juneau",
+ "ART": "America/Argentina/Buenos_Aires",
+ "AST": "America/Halifax",
+ "AWST": "Australia/Perth",
+ "BDT": "Asia/Dhaka",
+ "BRST": "America/Sao_Paulo",
+ "BRT": "America/Sao_Paulo",
+ "BST": "Europe/London",
+ "CAT": "Africa/Harare",
+ "CDT": "America/Chicago",
+ "CEST": "Europe/Paris",
+ "CET": "Europe/Paris",
+ "CLST": "America/Santiago",
+ "CLT": "America/Santiago",
+ "COT": "America/Bogota",
+ "CST": "America/Chicago",
+ "EAT": "Africa/Addis_Ababa",
+ "EDT": "America/New_York",
+ "EEST": "Europe/Athens",
+ "EET": "Europe/Athens",
+ "EST": "America/New_York",
+ "GMT": "GMT",
+ "GST": "Asia/Dubai",
+ "HKT": "Asia/Hong_Kong",
+ "HST": "Pacific/Honolulu",
+ "ICT": "Asia/Bangkok",
+ "IRST": "Asia/Tehran",
+ "IST": "Asia/Kolkata",
+ "JST": "Asia/Tokyo",
+ "KST": "Asia/Seoul",
+ "MDT": "America/Denver",
+ "MSD": "Europe/Moscow",
+ "MSK": "Europe/Moscow",
+ "MST": "America/Phoenix",
+ "NDT": "America/St_Johns",
+ "NST": "America/St_Johns",
+ "NZDT": "Pacific/Auckland",
+ "NZST": "Pacific/Auckland",
+ "PDT": "America/Los_Angeles",
+ "PET": "America/Lima",
+ "PHT": "Asia/Manila",
+ "PKT": "Asia/Karachi",
+ "PST": "America/Los_Angeles",
+ "SAST": "Africa/Johannesburg",
+ "SGT": "Asia/Singapore",
+ "SST": "Pacific/Midway",
+ "TRT": "Europe/Istanbul",
+ "UTC": "UTC",
+ "WAT": "Africa/Lagos",
+ "WEST": "Europe/Lisbon",
+ "WET": "Europe/Lisbon",
+ "WIB": "Asia/Jakarta",
+ "WIT": "Asia/Jakarta",
+ "WITA": "Asia/Makassar"
+
+}
\ No newline at end of file
diff --git a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Headers/SoulverCore-Swift.h b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Headers/SoulverCore-Swift.h
index 01e915d68..7ae3cb3fd 100644
--- a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Headers/SoulverCore-Swift.h
+++ b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Headers/SoulverCore-Swift.h
@@ -1,4 +1,4 @@
-// Generated by Apple Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9)
+// Generated by Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"
@@ -239,6 +239,7 @@ SWIFT_CLASS("_TtC11SoulverCore21AsynchronousOperation")
SWIFT_CLASS("_TtC11SoulverCore8NullUnit")
@interface NullUnit : NSDimension
++ (nonnull instancetype)baseUnit SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithSymbol:(NSString * _Nonnull)symbol converter:(NSUnitConverter * _Nonnull)converter OBJC_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder OBJC_DESIGNATED_INITIALIZER;
@end
diff --git a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Info.plist b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Info.plist
index f6c2f055d..e63c26f26 100644
Binary files a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Info.plist and b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Info.plist differ
diff --git a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Modules/SoulverCore.swiftmodule/x86_64-apple-ios-simulator.swiftdoc b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Modules/SoulverCore.swiftmodule/x86_64-apple-ios-simulator.swiftdoc
index ec3bb4837..dad106f6e 100644
Binary files a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Modules/SoulverCore.swiftmodule/x86_64-apple-ios-simulator.swiftdoc and b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Modules/SoulverCore.swiftmodule/x86_64-apple-ios-simulator.swiftdoc differ
diff --git a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Modules/SoulverCore.swiftmodule/x86_64-apple-ios-simulator.swiftinterface b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Modules/SoulverCore.swiftmodule/x86_64-apple-ios-simulator.swiftinterface
index 7a9d58f5b..8dcc8fffa 100644
--- a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Modules/SoulverCore.swiftmodule/x86_64-apple-ios-simulator.swiftinterface
+++ b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Modules/SoulverCore.swiftmodule/x86_64-apple-ios-simulator.swiftinterface
@@ -1,5 +1,5 @@
// swift-interface-format-version: 1.0
-// swift-compiler-version: Apple Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9)
+// swift-compiler-version: Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15)
// swift-module-flags: -target x86_64-apple-ios12.2-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -Osize -module-name SoulverCore
import Foundation
@_exported import SoulverCore
@@ -61,17 +61,21 @@ extension CalculationResult {
public let EmptyResult: SoulverCore.CalculationResult
infix operator ~ : AdditionPrecedence
public typealias CocoaUnit = Foundation.Dimension
-public enum EvaluationResult {
+indirect public enum EvaluationResult {
case rawString(Swift.String)
case decimal(Foundation.Decimal)
case percentage(SoulverCore.Percentage)
case fraction(SoulverCore.Fraction)
+ case multiplier(SoulverCore.Multiplier)
+ case boolean(Swift.Bool)
case unitExpression(SoulverCore.UnitExpression)
case rate(SoulverCore.UnitRate)
case date(SoulverCore.Datestamp)
+ case iso8601(SoulverCore.iso8601)
case timestamp(SoulverCore.Timestamp)
case timespan(SoulverCore.Timespan)
case error(SoulverCore.EvaluationError)
+ case variable(SoulverCore.Variable)
case none
}
public class LineSection : Swift.Codable {
@@ -134,7 +138,6 @@ public class Line : Swift.Codable {
public var apparentLineType: SoulverCore.ApparentLineType?
public var lineIndex: SoulverCore.LineIndex?
public var explicitDependencies: Foundation.IndexSet?
- public var declaredVariable: SoulverCore.Variable?
public var variableEnvironment: SoulverCore.VariableList?
public var rawResult: Swift.String {
get
@@ -156,6 +159,11 @@ extension Line {
get
}
}
+extension Line {
+ public var declaredVariable: SoulverCore.Variable? {
+ get
+ }
+}
extension Line : Swift.Equatable, Swift.Hashable {
public static func == (lhs: SoulverCore.Line, rhs: SoulverCore.Line) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
@@ -182,9 +190,10 @@ public struct EngineFeatureFlags : Swift.Equatable, Swift.Hashable, Swift.Codabl
public var wordFunctions: Swift.Bool
public var variableDeclarations: Swift.Bool
public var bracketComments: Swift.Bool
+ public var inAmbiguityPreferSomethingToNothing: Swift.Bool
public var leftToRightOperatorEvaluation: Swift.Bool
public init()
- public init(units: Swift.Bool, wordFunctions: Swift.Bool, variableDeclarations: Swift.Bool, bracketComments: Swift.Bool, calendarCalculations: Swift.Bool, leftToRightOperatorEvaluation: Swift.Bool)
+ public init(units: Swift.Bool, wordFunctions: Swift.Bool, variableDeclarations: Swift.Bool, bracketComments: Swift.Bool, calendarCalculations: Swift.Bool, leftToRightOperatorEvaluation: Swift.Bool, inAmbiguityPreferSomethingToNothing: Swift.Bool)
public init(from decoder: Swift.Decoder) throws
public static func == (a: SoulverCore.EngineFeatureFlags, b: SoulverCore.EngineFeatureFlags) -> Swift.Bool
public var hashValue: Swift.Int {
@@ -238,6 +247,7 @@ public enum TokenType : Swift.CaseIterable {
case variableDeclarationSymbol
case pi
case typeName
+ case conditionalKeyword
case colon
case function
case timezone
@@ -248,15 +258,20 @@ public enum TokenType : Swift.CaseIterable {
case converter
case timestamp
case datestamp
+ case iso8601
case timespan
case dateWord
case unitExpression
case compoundUnitExpression
+ case conditionalExpression
case percentage
+ case multiplier
+ case boolean
case rate
case functionExpression
case wordFunction
case declaredVariable
+ case variableDeclaration
case subexpression
case comment
case wordComment
@@ -288,14 +303,24 @@ public enum TokenSubType {
case modOperator
case lesserOf
case greaterOf
+ case greaterThan
+ case greaterThanOrEqualTo
+ case lessThan
+ case lessThanOrEqualTo
+ case equalTo
+ case notEqualTo
+ case `false`
+ case `true`
case openBracket
case closeBracket
case numberConverter
case fractionConverter
+ case multiplierConveter
case percentageConverter
case unitConverter
case rateConverter
case dateConverter
+ case iso8601Converter
case timestampConverter
case timespanConverter
case timezoneConverter
@@ -303,26 +328,32 @@ public enum TokenSubType {
case roundingUpConverter
case roundingConverter
case roundingDownConverter
+ case binaryConverter
+ case hexConverter
case dateWordToday
case dateWordNow
case dateWordTomorrow
case dateWordYesterday
case dateWordDayOfWeek
case dateWordMonthOfYear
- case multiplierConveter
- case binaryConverter
- case hexConverter
case numberTypeName
case fractionTypeName
+ case multiplierTypeName
case percentageTypeName
case rateTypeName
case timestampTypeName
case timespanTypeName
case dateTypeName
+ case iso8601TypeName
case decimalPlacesTypeName
- case binaryType
- case hexType
- case multiplierType
+ case binaryTypeName
+ case hexTypeName
+ case conditionalKeywordIf
+ case conditionalKeywordThen
+ case conditionalKeywordElse
+ case conditionalKeywordUnless
+ case conditionalKeywordAnd
+ case conditionalKeywordOr
case unitMismatchError
case infinityError
case divideByZeroError
@@ -685,6 +716,9 @@ public struct ExpressionBeautificationOptions {
}
public init()
}
+public struct iso8601 {
+ public let datestamp: SoulverCore.Datestamp
+}
public class LineCollectionCompletions {
public class func completionsFor(textFragment: Swift.String, onLineAtIndex lineIndex: SoulverCore.LineIndex, in lineCollection: SoulverCore.LineCollection) -> [Swift.String]
@objc deinit
@@ -696,7 +730,7 @@ public struct Variable : Swift.Codable {
public let value: SoulverCore.VariableValue
public init(name: SoulverCore.VariableName, value: SoulverCore.VariableValue)
public var declaringLineIndex: SoulverCore.LineIndex?
- public var definition: SoulverCore.CalculationResult?
+ public var definition: SoulverCore.EvaluationResult?
public init(from decoder: Swift.Decoder) throws
public func encode(to encoder: Swift.Encoder) throws
}
@@ -755,6 +789,9 @@ public struct TokenIndexPath : Swift.Equatable {
public struct Timespan {
public let dateComponents: Foundation.DateComponents
}
+public struct Multiplier {
+ public let decimalValue: Foundation.Decimal
+}
public typealias Scalar = Swift.String
extension UnitLength {
public static let pixel: Foundation.UnitLength
@@ -856,6 +893,7 @@ extension UnitLength {
@objc deinit
}
@objc final public class NullUnit : Foundation.Dimension {
+ @objc override final public class func baseUnit() -> Self
@objc override dynamic public init(symbol: Swift.String, converter: Foundation.UnitConverter)
@objc required dynamic public init?(coder: Foundation.NSCoder)
@objc deinit
@@ -865,6 +903,10 @@ public struct UnitRate {
public let ofUnit: SoulverCore.CocoaUnit?
public let perUnit: SoulverCore.CocoaUnit
}
+extension UnitRate : Swift.Comparable {
+ public static func < (lhs: SoulverCore.UnitRate, rhs: SoulverCore.UnitRate) -> Swift.Bool
+ public static func == (a: SoulverCore.UnitRate, b: SoulverCore.UnitRate) -> Swift.Bool
+}
extension UnitRate : Swift.CustomDebugStringConvertible {
public var debugDescription: Swift.String {
get
@@ -1204,6 +1246,7 @@ public enum UnitType : Swift.String, Swift.CaseIterable, Swift.Codable {
}
public func cocoaUnitFor(identifier: SoulverCore.UnitIdentifier) -> SoulverCore.CocoaUnit
public func unitIdentifierFor(cocoaUnit: SoulverCore.CocoaUnit) -> SoulverCore.UnitIdentifier?
+public func motherUnitIdentifierFor(identifier: SoulverCore.UnitIdentifier) -> SoulverCore.UnitIdentifier
public struct Token : Swift.Equatable, Swift.Hashable, Swift.Comparable {
public static func == (lhs: SoulverCore.Token, rhs: SoulverCore.Token) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
@@ -1242,6 +1285,10 @@ public class TokenList {
public var flattenedTokens: [SoulverCore.Token] {
get
}
+ public subscript(index: Swift.Int) -> SoulverCore.Token {
+ get
+ set(newValue)
+ }
public func tokensOfType(_ tokenType: SoulverCore.TokenType) -> [SoulverCore.Token]
@objc deinit
}
@@ -1360,6 +1407,7 @@ extension Array {
public var isNotEmpty: Swift.Bool {
get
}
+ mutating public func trim(where predicate: (Element) throws -> Swift.Bool)
mutating public func move(from oldIndex: Swift.Array.Index, to newIndex: Swift.Array.Index)
}
public class LineCollection {
diff --git a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Modules/SoulverCore.swiftmodule/x86_64.swiftdoc b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Modules/SoulverCore.swiftmodule/x86_64.swiftdoc
index ec3bb4837..dad106f6e 100644
Binary files a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Modules/SoulverCore.swiftmodule/x86_64.swiftdoc and b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Modules/SoulverCore.swiftmodule/x86_64.swiftdoc differ
diff --git a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Modules/SoulverCore.swiftmodule/x86_64.swiftinterface b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Modules/SoulverCore.swiftmodule/x86_64.swiftinterface
index 7a9d58f5b..8dcc8fffa 100644
--- a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Modules/SoulverCore.swiftmodule/x86_64.swiftinterface
+++ b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/Modules/SoulverCore.swiftmodule/x86_64.swiftinterface
@@ -1,5 +1,5 @@
// swift-interface-format-version: 1.0
-// swift-compiler-version: Apple Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9)
+// swift-compiler-version: Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15)
// swift-module-flags: -target x86_64-apple-ios12.2-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -Osize -module-name SoulverCore
import Foundation
@_exported import SoulverCore
@@ -61,17 +61,21 @@ extension CalculationResult {
public let EmptyResult: SoulverCore.CalculationResult
infix operator ~ : AdditionPrecedence
public typealias CocoaUnit = Foundation.Dimension
-public enum EvaluationResult {
+indirect public enum EvaluationResult {
case rawString(Swift.String)
case decimal(Foundation.Decimal)
case percentage(SoulverCore.Percentage)
case fraction(SoulverCore.Fraction)
+ case multiplier(SoulverCore.Multiplier)
+ case boolean(Swift.Bool)
case unitExpression(SoulverCore.UnitExpression)
case rate(SoulverCore.UnitRate)
case date(SoulverCore.Datestamp)
+ case iso8601(SoulverCore.iso8601)
case timestamp(SoulverCore.Timestamp)
case timespan(SoulverCore.Timespan)
case error(SoulverCore.EvaluationError)
+ case variable(SoulverCore.Variable)
case none
}
public class LineSection : Swift.Codable {
@@ -134,7 +138,6 @@ public class Line : Swift.Codable {
public var apparentLineType: SoulverCore.ApparentLineType?
public var lineIndex: SoulverCore.LineIndex?
public var explicitDependencies: Foundation.IndexSet?
- public var declaredVariable: SoulverCore.Variable?
public var variableEnvironment: SoulverCore.VariableList?
public var rawResult: Swift.String {
get
@@ -156,6 +159,11 @@ extension Line {
get
}
}
+extension Line {
+ public var declaredVariable: SoulverCore.Variable? {
+ get
+ }
+}
extension Line : Swift.Equatable, Swift.Hashable {
public static func == (lhs: SoulverCore.Line, rhs: SoulverCore.Line) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
@@ -182,9 +190,10 @@ public struct EngineFeatureFlags : Swift.Equatable, Swift.Hashable, Swift.Codabl
public var wordFunctions: Swift.Bool
public var variableDeclarations: Swift.Bool
public var bracketComments: Swift.Bool
+ public var inAmbiguityPreferSomethingToNothing: Swift.Bool
public var leftToRightOperatorEvaluation: Swift.Bool
public init()
- public init(units: Swift.Bool, wordFunctions: Swift.Bool, variableDeclarations: Swift.Bool, bracketComments: Swift.Bool, calendarCalculations: Swift.Bool, leftToRightOperatorEvaluation: Swift.Bool)
+ public init(units: Swift.Bool, wordFunctions: Swift.Bool, variableDeclarations: Swift.Bool, bracketComments: Swift.Bool, calendarCalculations: Swift.Bool, leftToRightOperatorEvaluation: Swift.Bool, inAmbiguityPreferSomethingToNothing: Swift.Bool)
public init(from decoder: Swift.Decoder) throws
public static func == (a: SoulverCore.EngineFeatureFlags, b: SoulverCore.EngineFeatureFlags) -> Swift.Bool
public var hashValue: Swift.Int {
@@ -238,6 +247,7 @@ public enum TokenType : Swift.CaseIterable {
case variableDeclarationSymbol
case pi
case typeName
+ case conditionalKeyword
case colon
case function
case timezone
@@ -248,15 +258,20 @@ public enum TokenType : Swift.CaseIterable {
case converter
case timestamp
case datestamp
+ case iso8601
case timespan
case dateWord
case unitExpression
case compoundUnitExpression
+ case conditionalExpression
case percentage
+ case multiplier
+ case boolean
case rate
case functionExpression
case wordFunction
case declaredVariable
+ case variableDeclaration
case subexpression
case comment
case wordComment
@@ -288,14 +303,24 @@ public enum TokenSubType {
case modOperator
case lesserOf
case greaterOf
+ case greaterThan
+ case greaterThanOrEqualTo
+ case lessThan
+ case lessThanOrEqualTo
+ case equalTo
+ case notEqualTo
+ case `false`
+ case `true`
case openBracket
case closeBracket
case numberConverter
case fractionConverter
+ case multiplierConveter
case percentageConverter
case unitConverter
case rateConverter
case dateConverter
+ case iso8601Converter
case timestampConverter
case timespanConverter
case timezoneConverter
@@ -303,26 +328,32 @@ public enum TokenSubType {
case roundingUpConverter
case roundingConverter
case roundingDownConverter
+ case binaryConverter
+ case hexConverter
case dateWordToday
case dateWordNow
case dateWordTomorrow
case dateWordYesterday
case dateWordDayOfWeek
case dateWordMonthOfYear
- case multiplierConveter
- case binaryConverter
- case hexConverter
case numberTypeName
case fractionTypeName
+ case multiplierTypeName
case percentageTypeName
case rateTypeName
case timestampTypeName
case timespanTypeName
case dateTypeName
+ case iso8601TypeName
case decimalPlacesTypeName
- case binaryType
- case hexType
- case multiplierType
+ case binaryTypeName
+ case hexTypeName
+ case conditionalKeywordIf
+ case conditionalKeywordThen
+ case conditionalKeywordElse
+ case conditionalKeywordUnless
+ case conditionalKeywordAnd
+ case conditionalKeywordOr
case unitMismatchError
case infinityError
case divideByZeroError
@@ -685,6 +716,9 @@ public struct ExpressionBeautificationOptions {
}
public init()
}
+public struct iso8601 {
+ public let datestamp: SoulverCore.Datestamp
+}
public class LineCollectionCompletions {
public class func completionsFor(textFragment: Swift.String, onLineAtIndex lineIndex: SoulverCore.LineIndex, in lineCollection: SoulverCore.LineCollection) -> [Swift.String]
@objc deinit
@@ -696,7 +730,7 @@ public struct Variable : Swift.Codable {
public let value: SoulverCore.VariableValue
public init(name: SoulverCore.VariableName, value: SoulverCore.VariableValue)
public var declaringLineIndex: SoulverCore.LineIndex?
- public var definition: SoulverCore.CalculationResult?
+ public var definition: SoulverCore.EvaluationResult?
public init(from decoder: Swift.Decoder) throws
public func encode(to encoder: Swift.Encoder) throws
}
@@ -755,6 +789,9 @@ public struct TokenIndexPath : Swift.Equatable {
public struct Timespan {
public let dateComponents: Foundation.DateComponents
}
+public struct Multiplier {
+ public let decimalValue: Foundation.Decimal
+}
public typealias Scalar = Swift.String
extension UnitLength {
public static let pixel: Foundation.UnitLength
@@ -856,6 +893,7 @@ extension UnitLength {
@objc deinit
}
@objc final public class NullUnit : Foundation.Dimension {
+ @objc override final public class func baseUnit() -> Self
@objc override dynamic public init(symbol: Swift.String, converter: Foundation.UnitConverter)
@objc required dynamic public init?(coder: Foundation.NSCoder)
@objc deinit
@@ -865,6 +903,10 @@ public struct UnitRate {
public let ofUnit: SoulverCore.CocoaUnit?
public let perUnit: SoulverCore.CocoaUnit
}
+extension UnitRate : Swift.Comparable {
+ public static func < (lhs: SoulverCore.UnitRate, rhs: SoulverCore.UnitRate) -> Swift.Bool
+ public static func == (a: SoulverCore.UnitRate, b: SoulverCore.UnitRate) -> Swift.Bool
+}
extension UnitRate : Swift.CustomDebugStringConvertible {
public var debugDescription: Swift.String {
get
@@ -1204,6 +1246,7 @@ public enum UnitType : Swift.String, Swift.CaseIterable, Swift.Codable {
}
public func cocoaUnitFor(identifier: SoulverCore.UnitIdentifier) -> SoulverCore.CocoaUnit
public func unitIdentifierFor(cocoaUnit: SoulverCore.CocoaUnit) -> SoulverCore.UnitIdentifier?
+public func motherUnitIdentifierFor(identifier: SoulverCore.UnitIdentifier) -> SoulverCore.UnitIdentifier
public struct Token : Swift.Equatable, Swift.Hashable, Swift.Comparable {
public static func == (lhs: SoulverCore.Token, rhs: SoulverCore.Token) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
@@ -1242,6 +1285,10 @@ public class TokenList {
public var flattenedTokens: [SoulverCore.Token] {
get
}
+ public subscript(index: Swift.Int) -> SoulverCore.Token {
+ get
+ set(newValue)
+ }
public func tokensOfType(_ tokenType: SoulverCore.TokenType) -> [SoulverCore.Token]
@objc deinit
}
@@ -1360,6 +1407,7 @@ extension Array {
public var isNotEmpty: Swift.Bool {
get
}
+ mutating public func trim(where predicate: (Element) throws -> Swift.Bool)
mutating public func move(from oldIndex: Swift.Array.Index, to newIndex: Swift.Array.Index)
}
public class LineCollection {
diff --git a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/SoulverCore b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/SoulverCore
index 717f1a729..a7c3dd839 100755
Binary files a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/SoulverCore and b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/SoulverCore differ
diff --git a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/_CodeSignature/CodeResources b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/_CodeSignature/CodeResources
index b7582a00b..bec1bddb5 100644
--- a/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/_CodeSignature/CodeResources
+++ b/SoulverCore.xcframework/ios-x86_64-simulator/SoulverCore.framework/_CodeSignature/CodeResources
@@ -6,15 +6,19 @@
Base.lproj/DefaultCurrencyRates.json
- GGQyeKcWhAylO6N3mrTJ0U0BHpQ=
+ bgU0/Y8EJoRmz4uph3ypmABBMLw=
Base.lproj/FunctionDescriptions.json
- g6L9Dgt4FDLJKJJ6yAfg5LpJpwY=
+ lZxNUBBUYjxQDFvccGuTQcOfxw4=
Base.lproj/LocalizedFixtures.json
- OKjIlrX1S4l8wE7wE58Ab++ypmY=
+ D6zXRY1zGn+ViL9vvsB1YWQ4DAw=
+
+ Base.lproj/TimeZoneAbbrieviations.json
+
+ jvQ9kvDAPNdTvzDyAz9BcEGLcyg=
Base.lproj/UnitDescriptions.json
@@ -26,7 +30,7 @@
Headers/SoulverCore-Swift.h
- CUSsMDbWtotBhWV7JNmq1RB+fsY=
+ 8Ia+HUzkzK1QGQJQDp2AyX9eBS8=
Headers/SoulverCore.h
@@ -34,31 +38,31 @@
Info.plist
- EQLKSjeS95FNUifFwQ+jxaTg8po=
+ EbHmzaSR4+HU6NY7SeekKHbsFAQ=
Modules/SoulverCore.swiftmodule/x86_64-apple-ios-simulator.swiftdoc
- Gz4Gg87UwgnM2bFq9U2ERmhyhNg=
+ O9C8+8J3Z4b3QcA2LM+r8kqGPsw=
Modules/SoulverCore.swiftmodule/x86_64-apple-ios-simulator.swiftinterface
- X+uSw6+ijPfaTZ/EV563gXFf+IY=
+ gGeIEA0OEbCIS/ApadtdQ5b3ZTE=
Modules/SoulverCore.swiftmodule/x86_64-apple-ios-simulator.swiftmodule
- 3AxoajSLYC0kFC1G7s0R/XXJuNA=
+ 3brLFsYzJ+NhVkZ6xA1t398blBU=
Modules/SoulverCore.swiftmodule/x86_64.swiftdoc
- Gz4Gg87UwgnM2bFq9U2ERmhyhNg=
+ O9C8+8J3Z4b3QcA2LM+r8kqGPsw=
Modules/SoulverCore.swiftmodule/x86_64.swiftinterface
- X+uSw6+ijPfaTZ/EV563gXFf+IY=
+ gGeIEA0OEbCIS/ApadtdQ5b3ZTE=
Modules/SoulverCore.swiftmodule/x86_64.swiftmodule
- 3AxoajSLYC0kFC1G7s0R/XXJuNA=
+ 3brLFsYzJ+NhVkZ6xA1t398blBU=
Modules/module.modulemap
@@ -179,21 +183,28 @@
hash2
- aQdbDAWTyWaMHr06FDdkLXJ1KEMLgn2IyNWrDuTVnFY=
+ CSmUHddJPFXMK9xl8Dc7pq5LO8Cjyl3yDWae/SMVpA8=
Base.lproj/FunctionDescriptions.json
hash2
- ScFb5P1Obi2p1xGbpHDhULLi6foVT9XluM/q2NRXLjY=
+ yC5BYOszy/7xLauxPsEccsTx/jfFuBRuJ+LCWq4+nC0=
Base.lproj/LocalizedFixtures.json
hash2
- MXmKvVFLjrrxmeXXEAPsJzSQIHWZurvBVZPvKAaIsOY=
+ O3c+nWUPnmVZpBVEG8lcN4or+z6WZQLR4YlA/gYz/mM=
+
+
+ Base.lproj/TimeZoneAbbrieviations.json
+
+ hash2
+
+ CGcnilnCPFpX3dNk0ISsdzY8sTSVjVd/fntEq5x3Arw=
Base.lproj/UnitDescriptions.json
@@ -214,7 +225,7 @@
hash2
- W+0OmU87opgVH/g4MtbVGdJm4+Mdb5Yo1bSM2VfyRe8=
+ 0uHxGz96qSJF3Bj+YXRBPH2Xm8f4te3AIXbbhOiDHPc=
Headers/SoulverCore.h
@@ -228,42 +239,42 @@
hash2
- ZyPG9PwNQEMnP+v4oGEHR3JILbR2hjIwTxkze42PJ9s=
+ nE8ga8jbbNjoygTJ9+QP2U1vqDUDdVANcru2eIpBApM=
Modules/SoulverCore.swiftmodule/x86_64-apple-ios-simulator.swiftinterface
hash2
- fS1I25dyrvoXwZZSMwtu8xP4ppevjtM5t0kAMD+Xpd4=
+ H5VyzxiaPWsDwakEPCAqpJSyo/u+2rPbvweG5lhWooI=
Modules/SoulverCore.swiftmodule/x86_64-apple-ios-simulator.swiftmodule
hash2
- j0iB/ZCNCz+O6Yv7p3ZC3xD3Cw77jEC0p4c0vseFI5c=
+ Zi2bHCirAPG0Yo8gklyDT1crbGbEE8V+J5ydbWvviYw=
Modules/SoulverCore.swiftmodule/x86_64.swiftdoc
hash2
- ZyPG9PwNQEMnP+v4oGEHR3JILbR2hjIwTxkze42PJ9s=
+ nE8ga8jbbNjoygTJ9+QP2U1vqDUDdVANcru2eIpBApM=
Modules/SoulverCore.swiftmodule/x86_64.swiftinterface
hash2
- fS1I25dyrvoXwZZSMwtu8xP4ppevjtM5t0kAMD+Xpd4=
+ H5VyzxiaPWsDwakEPCAqpJSyo/u+2rPbvweG5lhWooI=
Modules/SoulverCore.swiftmodule/x86_64.swiftmodule
hash2
- j0iB/ZCNCz+O6Yv7p3ZC3xD3Cw77jEC0p4c0vseFI5c=
+ Zi2bHCirAPG0Yo8gklyDT1crbGbEE8V+J5ydbWvviYw=
Modules/module.modulemap
diff --git a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Headers/SoulverCore-Swift.h b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Headers/SoulverCore-Swift.h
index 01e915d68..7ae3cb3fd 100644
--- a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Headers/SoulverCore-Swift.h
+++ b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Headers/SoulverCore-Swift.h
@@ -1,4 +1,4 @@
-// Generated by Apple Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9)
+// Generated by Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"
@@ -239,6 +239,7 @@ SWIFT_CLASS("_TtC11SoulverCore21AsynchronousOperation")
SWIFT_CLASS("_TtC11SoulverCore8NullUnit")
@interface NullUnit : NSDimension
++ (nonnull instancetype)baseUnit SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithSymbol:(NSString * _Nonnull)symbol converter:(NSUnitConverter * _Nonnull)converter OBJC_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder OBJC_DESIGNATED_INITIALIZER;
@end
diff --git a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Modules/SoulverCore.swiftmodule/x86_64-apple-macos.swiftdoc b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Modules/SoulverCore.swiftmodule/x86_64-apple-macos.swiftdoc
index da23e2dc9..7508c2fcb 100644
Binary files a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Modules/SoulverCore.swiftmodule/x86_64-apple-macos.swiftdoc and b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Modules/SoulverCore.swiftmodule/x86_64-apple-macos.swiftdoc differ
diff --git a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Modules/SoulverCore.swiftmodule/x86_64-apple-macos.swiftinterface b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Modules/SoulverCore.swiftmodule/x86_64-apple-macos.swiftinterface
index 2a77d3579..45916d5d7 100644
--- a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Modules/SoulverCore.swiftmodule/x86_64-apple-macos.swiftinterface
+++ b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Modules/SoulverCore.swiftmodule/x86_64-apple-macos.swiftinterface
@@ -1,5 +1,5 @@
// swift-interface-format-version: 1.0
-// swift-compiler-version: Apple Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9)
+// swift-compiler-version: Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15)
// swift-module-flags: -target x86_64-apple-macos10.14.4 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -Osize -module-name SoulverCore
import Foundation
@_exported import SoulverCore
@@ -61,17 +61,21 @@ extension CalculationResult {
public let EmptyResult: SoulverCore.CalculationResult
infix operator ~ : AdditionPrecedence
public typealias CocoaUnit = Foundation.Dimension
-public enum EvaluationResult {
+indirect public enum EvaluationResult {
case rawString(Swift.String)
case decimal(Foundation.Decimal)
case percentage(SoulverCore.Percentage)
case fraction(SoulverCore.Fraction)
+ case multiplier(SoulverCore.Multiplier)
+ case boolean(Swift.Bool)
case unitExpression(SoulverCore.UnitExpression)
case rate(SoulverCore.UnitRate)
case date(SoulverCore.Datestamp)
+ case iso8601(SoulverCore.iso8601)
case timestamp(SoulverCore.Timestamp)
case timespan(SoulverCore.Timespan)
case error(SoulverCore.EvaluationError)
+ case variable(SoulverCore.Variable)
case none
}
public class LineSection : Swift.Codable {
@@ -134,7 +138,6 @@ public class Line : Swift.Codable {
public var apparentLineType: SoulverCore.ApparentLineType?
public var lineIndex: SoulverCore.LineIndex?
public var explicitDependencies: Foundation.IndexSet?
- public var declaredVariable: SoulverCore.Variable?
public var variableEnvironment: SoulverCore.VariableList?
public var rawResult: Swift.String {
get
@@ -156,6 +159,11 @@ extension Line {
get
}
}
+extension Line {
+ public var declaredVariable: SoulverCore.Variable? {
+ get
+ }
+}
extension Line : Swift.Equatable, Swift.Hashable {
public static func == (lhs: SoulverCore.Line, rhs: SoulverCore.Line) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
@@ -182,9 +190,10 @@ public struct EngineFeatureFlags : Swift.Equatable, Swift.Hashable, Swift.Codabl
public var wordFunctions: Swift.Bool
public var variableDeclarations: Swift.Bool
public var bracketComments: Swift.Bool
+ public var inAmbiguityPreferSomethingToNothing: Swift.Bool
public var leftToRightOperatorEvaluation: Swift.Bool
public init()
- public init(units: Swift.Bool, wordFunctions: Swift.Bool, variableDeclarations: Swift.Bool, bracketComments: Swift.Bool, calendarCalculations: Swift.Bool, leftToRightOperatorEvaluation: Swift.Bool)
+ public init(units: Swift.Bool, wordFunctions: Swift.Bool, variableDeclarations: Swift.Bool, bracketComments: Swift.Bool, calendarCalculations: Swift.Bool, leftToRightOperatorEvaluation: Swift.Bool, inAmbiguityPreferSomethingToNothing: Swift.Bool)
public init(from decoder: Swift.Decoder) throws
public static func == (a: SoulverCore.EngineFeatureFlags, b: SoulverCore.EngineFeatureFlags) -> Swift.Bool
public var hashValue: Swift.Int {
@@ -238,6 +247,7 @@ public enum TokenType : Swift.CaseIterable {
case variableDeclarationSymbol
case pi
case typeName
+ case conditionalKeyword
case colon
case function
case timezone
@@ -248,15 +258,20 @@ public enum TokenType : Swift.CaseIterable {
case converter
case timestamp
case datestamp
+ case iso8601
case timespan
case dateWord
case unitExpression
case compoundUnitExpression
+ case conditionalExpression
case percentage
+ case multiplier
+ case boolean
case rate
case functionExpression
case wordFunction
case declaredVariable
+ case variableDeclaration
case subexpression
case comment
case wordComment
@@ -288,14 +303,24 @@ public enum TokenSubType {
case modOperator
case lesserOf
case greaterOf
+ case greaterThan
+ case greaterThanOrEqualTo
+ case lessThan
+ case lessThanOrEqualTo
+ case equalTo
+ case notEqualTo
+ case `false`
+ case `true`
case openBracket
case closeBracket
case numberConverter
case fractionConverter
+ case multiplierConveter
case percentageConverter
case unitConverter
case rateConverter
case dateConverter
+ case iso8601Converter
case timestampConverter
case timespanConverter
case timezoneConverter
@@ -303,26 +328,32 @@ public enum TokenSubType {
case roundingUpConverter
case roundingConverter
case roundingDownConverter
+ case binaryConverter
+ case hexConverter
case dateWordToday
case dateWordNow
case dateWordTomorrow
case dateWordYesterday
case dateWordDayOfWeek
case dateWordMonthOfYear
- case multiplierConveter
- case binaryConverter
- case hexConverter
case numberTypeName
case fractionTypeName
+ case multiplierTypeName
case percentageTypeName
case rateTypeName
case timestampTypeName
case timespanTypeName
case dateTypeName
+ case iso8601TypeName
case decimalPlacesTypeName
- case binaryType
- case hexType
- case multiplierType
+ case binaryTypeName
+ case hexTypeName
+ case conditionalKeywordIf
+ case conditionalKeywordThen
+ case conditionalKeywordElse
+ case conditionalKeywordUnless
+ case conditionalKeywordAnd
+ case conditionalKeywordOr
case unitMismatchError
case infinityError
case divideByZeroError
@@ -685,6 +716,9 @@ public struct ExpressionBeautificationOptions {
}
public init()
}
+public struct iso8601 {
+ public let datestamp: SoulverCore.Datestamp
+}
public class LineCollectionCompletions {
public class func completionsFor(textFragment: Swift.String, onLineAtIndex lineIndex: SoulverCore.LineIndex, in lineCollection: SoulverCore.LineCollection) -> [Swift.String]
@objc deinit
@@ -696,7 +730,7 @@ public struct Variable : Swift.Codable {
public let value: SoulverCore.VariableValue
public init(name: SoulverCore.VariableName, value: SoulverCore.VariableValue)
public var declaringLineIndex: SoulverCore.LineIndex?
- public var definition: SoulverCore.CalculationResult?
+ public var definition: SoulverCore.EvaluationResult?
public init(from decoder: Swift.Decoder) throws
public func encode(to encoder: Swift.Encoder) throws
}
@@ -755,6 +789,9 @@ public struct TokenIndexPath : Swift.Equatable {
public struct Timespan {
public let dateComponents: Foundation.DateComponents
}
+public struct Multiplier {
+ public let decimalValue: Foundation.Decimal
+}
public typealias Scalar = Swift.String
extension UnitLength {
public static let pixel: Foundation.UnitLength
@@ -856,6 +893,7 @@ extension UnitLength {
@objc deinit
}
@objc final public class NullUnit : Foundation.Dimension {
+ @objc override final public class func baseUnit() -> Self
@objc override dynamic public init(symbol: Swift.String, converter: Foundation.UnitConverter)
@objc required dynamic public init?(coder: Foundation.NSCoder)
@objc deinit
@@ -865,6 +903,10 @@ public struct UnitRate {
public let ofUnit: SoulverCore.CocoaUnit?
public let perUnit: SoulverCore.CocoaUnit
}
+extension UnitRate : Swift.Comparable {
+ public static func < (lhs: SoulverCore.UnitRate, rhs: SoulverCore.UnitRate) -> Swift.Bool
+ public static func == (a: SoulverCore.UnitRate, b: SoulverCore.UnitRate) -> Swift.Bool
+}
extension UnitRate : Swift.CustomDebugStringConvertible {
public var debugDescription: Swift.String {
get
@@ -1204,6 +1246,7 @@ public enum UnitType : Swift.String, Swift.CaseIterable, Swift.Codable {
}
public func cocoaUnitFor(identifier: SoulverCore.UnitIdentifier) -> SoulverCore.CocoaUnit
public func unitIdentifierFor(cocoaUnit: SoulverCore.CocoaUnit) -> SoulverCore.UnitIdentifier?
+public func motherUnitIdentifierFor(identifier: SoulverCore.UnitIdentifier) -> SoulverCore.UnitIdentifier
public struct Token : Swift.Equatable, Swift.Hashable, Swift.Comparable {
public static func == (lhs: SoulverCore.Token, rhs: SoulverCore.Token) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
@@ -1242,6 +1285,10 @@ public class TokenList {
public var flattenedTokens: [SoulverCore.Token] {
get
}
+ public subscript(index: Swift.Int) -> SoulverCore.Token {
+ get
+ set(newValue)
+ }
public func tokensOfType(_ tokenType: SoulverCore.TokenType) -> [SoulverCore.Token]
@objc deinit
}
@@ -1360,6 +1407,7 @@ extension Array {
public var isNotEmpty: Swift.Bool {
get
}
+ mutating public func trim(where predicate: (Element) throws -> Swift.Bool)
mutating public func move(from oldIndex: Swift.Array.Index, to newIndex: Swift.Array.Index)
}
public class LineCollection {
diff --git a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Modules/SoulverCore.swiftmodule/x86_64.swiftdoc b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Modules/SoulverCore.swiftmodule/x86_64.swiftdoc
index da23e2dc9..7508c2fcb 100644
Binary files a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Modules/SoulverCore.swiftmodule/x86_64.swiftdoc and b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Modules/SoulverCore.swiftmodule/x86_64.swiftdoc differ
diff --git a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Modules/SoulverCore.swiftmodule/x86_64.swiftinterface b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Modules/SoulverCore.swiftmodule/x86_64.swiftinterface
index 2a77d3579..45916d5d7 100644
--- a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Modules/SoulverCore.swiftmodule/x86_64.swiftinterface
+++ b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Modules/SoulverCore.swiftmodule/x86_64.swiftinterface
@@ -1,5 +1,5 @@
// swift-interface-format-version: 1.0
-// swift-compiler-version: Apple Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9)
+// swift-compiler-version: Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15)
// swift-module-flags: -target x86_64-apple-macos10.14.4 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -Osize -module-name SoulverCore
import Foundation
@_exported import SoulverCore
@@ -61,17 +61,21 @@ extension CalculationResult {
public let EmptyResult: SoulverCore.CalculationResult
infix operator ~ : AdditionPrecedence
public typealias CocoaUnit = Foundation.Dimension
-public enum EvaluationResult {
+indirect public enum EvaluationResult {
case rawString(Swift.String)
case decimal(Foundation.Decimal)
case percentage(SoulverCore.Percentage)
case fraction(SoulverCore.Fraction)
+ case multiplier(SoulverCore.Multiplier)
+ case boolean(Swift.Bool)
case unitExpression(SoulverCore.UnitExpression)
case rate(SoulverCore.UnitRate)
case date(SoulverCore.Datestamp)
+ case iso8601(SoulverCore.iso8601)
case timestamp(SoulverCore.Timestamp)
case timespan(SoulverCore.Timespan)
case error(SoulverCore.EvaluationError)
+ case variable(SoulverCore.Variable)
case none
}
public class LineSection : Swift.Codable {
@@ -134,7 +138,6 @@ public class Line : Swift.Codable {
public var apparentLineType: SoulverCore.ApparentLineType?
public var lineIndex: SoulverCore.LineIndex?
public var explicitDependencies: Foundation.IndexSet?
- public var declaredVariable: SoulverCore.Variable?
public var variableEnvironment: SoulverCore.VariableList?
public var rawResult: Swift.String {
get
@@ -156,6 +159,11 @@ extension Line {
get
}
}
+extension Line {
+ public var declaredVariable: SoulverCore.Variable? {
+ get
+ }
+}
extension Line : Swift.Equatable, Swift.Hashable {
public static func == (lhs: SoulverCore.Line, rhs: SoulverCore.Line) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
@@ -182,9 +190,10 @@ public struct EngineFeatureFlags : Swift.Equatable, Swift.Hashable, Swift.Codabl
public var wordFunctions: Swift.Bool
public var variableDeclarations: Swift.Bool
public var bracketComments: Swift.Bool
+ public var inAmbiguityPreferSomethingToNothing: Swift.Bool
public var leftToRightOperatorEvaluation: Swift.Bool
public init()
- public init(units: Swift.Bool, wordFunctions: Swift.Bool, variableDeclarations: Swift.Bool, bracketComments: Swift.Bool, calendarCalculations: Swift.Bool, leftToRightOperatorEvaluation: Swift.Bool)
+ public init(units: Swift.Bool, wordFunctions: Swift.Bool, variableDeclarations: Swift.Bool, bracketComments: Swift.Bool, calendarCalculations: Swift.Bool, leftToRightOperatorEvaluation: Swift.Bool, inAmbiguityPreferSomethingToNothing: Swift.Bool)
public init(from decoder: Swift.Decoder) throws
public static func == (a: SoulverCore.EngineFeatureFlags, b: SoulverCore.EngineFeatureFlags) -> Swift.Bool
public var hashValue: Swift.Int {
@@ -238,6 +247,7 @@ public enum TokenType : Swift.CaseIterable {
case variableDeclarationSymbol
case pi
case typeName
+ case conditionalKeyword
case colon
case function
case timezone
@@ -248,15 +258,20 @@ public enum TokenType : Swift.CaseIterable {
case converter
case timestamp
case datestamp
+ case iso8601
case timespan
case dateWord
case unitExpression
case compoundUnitExpression
+ case conditionalExpression
case percentage
+ case multiplier
+ case boolean
case rate
case functionExpression
case wordFunction
case declaredVariable
+ case variableDeclaration
case subexpression
case comment
case wordComment
@@ -288,14 +303,24 @@ public enum TokenSubType {
case modOperator
case lesserOf
case greaterOf
+ case greaterThan
+ case greaterThanOrEqualTo
+ case lessThan
+ case lessThanOrEqualTo
+ case equalTo
+ case notEqualTo
+ case `false`
+ case `true`
case openBracket
case closeBracket
case numberConverter
case fractionConverter
+ case multiplierConveter
case percentageConverter
case unitConverter
case rateConverter
case dateConverter
+ case iso8601Converter
case timestampConverter
case timespanConverter
case timezoneConverter
@@ -303,26 +328,32 @@ public enum TokenSubType {
case roundingUpConverter
case roundingConverter
case roundingDownConverter
+ case binaryConverter
+ case hexConverter
case dateWordToday
case dateWordNow
case dateWordTomorrow
case dateWordYesterday
case dateWordDayOfWeek
case dateWordMonthOfYear
- case multiplierConveter
- case binaryConverter
- case hexConverter
case numberTypeName
case fractionTypeName
+ case multiplierTypeName
case percentageTypeName
case rateTypeName
case timestampTypeName
case timespanTypeName
case dateTypeName
+ case iso8601TypeName
case decimalPlacesTypeName
- case binaryType
- case hexType
- case multiplierType
+ case binaryTypeName
+ case hexTypeName
+ case conditionalKeywordIf
+ case conditionalKeywordThen
+ case conditionalKeywordElse
+ case conditionalKeywordUnless
+ case conditionalKeywordAnd
+ case conditionalKeywordOr
case unitMismatchError
case infinityError
case divideByZeroError
@@ -685,6 +716,9 @@ public struct ExpressionBeautificationOptions {
}
public init()
}
+public struct iso8601 {
+ public let datestamp: SoulverCore.Datestamp
+}
public class LineCollectionCompletions {
public class func completionsFor(textFragment: Swift.String, onLineAtIndex lineIndex: SoulverCore.LineIndex, in lineCollection: SoulverCore.LineCollection) -> [Swift.String]
@objc deinit
@@ -696,7 +730,7 @@ public struct Variable : Swift.Codable {
public let value: SoulverCore.VariableValue
public init(name: SoulverCore.VariableName, value: SoulverCore.VariableValue)
public var declaringLineIndex: SoulverCore.LineIndex?
- public var definition: SoulverCore.CalculationResult?
+ public var definition: SoulverCore.EvaluationResult?
public init(from decoder: Swift.Decoder) throws
public func encode(to encoder: Swift.Encoder) throws
}
@@ -755,6 +789,9 @@ public struct TokenIndexPath : Swift.Equatable {
public struct Timespan {
public let dateComponents: Foundation.DateComponents
}
+public struct Multiplier {
+ public let decimalValue: Foundation.Decimal
+}
public typealias Scalar = Swift.String
extension UnitLength {
public static let pixel: Foundation.UnitLength
@@ -856,6 +893,7 @@ extension UnitLength {
@objc deinit
}
@objc final public class NullUnit : Foundation.Dimension {
+ @objc override final public class func baseUnit() -> Self
@objc override dynamic public init(symbol: Swift.String, converter: Foundation.UnitConverter)
@objc required dynamic public init?(coder: Foundation.NSCoder)
@objc deinit
@@ -865,6 +903,10 @@ public struct UnitRate {
public let ofUnit: SoulverCore.CocoaUnit?
public let perUnit: SoulverCore.CocoaUnit
}
+extension UnitRate : Swift.Comparable {
+ public static func < (lhs: SoulverCore.UnitRate, rhs: SoulverCore.UnitRate) -> Swift.Bool
+ public static func == (a: SoulverCore.UnitRate, b: SoulverCore.UnitRate) -> Swift.Bool
+}
extension UnitRate : Swift.CustomDebugStringConvertible {
public var debugDescription: Swift.String {
get
@@ -1204,6 +1246,7 @@ public enum UnitType : Swift.String, Swift.CaseIterable, Swift.Codable {
}
public func cocoaUnitFor(identifier: SoulverCore.UnitIdentifier) -> SoulverCore.CocoaUnit
public func unitIdentifierFor(cocoaUnit: SoulverCore.CocoaUnit) -> SoulverCore.UnitIdentifier?
+public func motherUnitIdentifierFor(identifier: SoulverCore.UnitIdentifier) -> SoulverCore.UnitIdentifier
public struct Token : Swift.Equatable, Swift.Hashable, Swift.Comparable {
public static func == (lhs: SoulverCore.Token, rhs: SoulverCore.Token) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
@@ -1242,6 +1285,10 @@ public class TokenList {
public var flattenedTokens: [SoulverCore.Token] {
get
}
+ public subscript(index: Swift.Int) -> SoulverCore.Token {
+ get
+ set(newValue)
+ }
public func tokensOfType(_ tokenType: SoulverCore.TokenType) -> [SoulverCore.Token]
@objc deinit
}
@@ -1360,6 +1407,7 @@ extension Array {
public var isNotEmpty: Swift.Bool {
get
}
+ mutating public func trim(where predicate: (Element) throws -> Swift.Bool)
mutating public func move(from oldIndex: Swift.Array.Index, to newIndex: Swift.Array.Index)
}
public class LineCollection {
diff --git a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Base.lproj/DefaultCurrencyRates.json b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Base.lproj/DefaultCurrencyRates.json
index 9d21884c8..ba0c2dee3 100644
--- a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Base.lproj/DefaultCurrencyRates.json
+++ b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Base.lproj/DefaultCurrencyRates.json
@@ -1,30 +1,30 @@
{
"HRK" : {
- "value" : 0.14595077810008575,
+ "value" : 0.14104046112332522,
"code" : "HRK"
},
"HUF" : {
- "value" : 0.0032135431356240985,
+ "value" : 0.0030455270849261184,
"code" : "HUF"
},
"CDF" : {
- "value" : 0.00058962259318541251,
+ "value" : 0.00058479519783867745,
"code" : "CDF"
},
"XMR" : {
- "value" : 76.734707209999996,
+ "value" : 39.878292340000002,
"code" : "XMR"
},
"ILS" : {
- "value" : 0.29177912320373478,
+ "value" : 0.27719067253386925,
"code" : "ILS"
},
"NGN" : {
- "value" : 0.0027359793173534065,
+ "value" : 0.0027247930862974888,
"code" : "NGN"
},
"GYD" : {
- "value" : 0.0047815368414066556,
+ "value" : 0.004795433289696489,
"code" : "GYD"
},
"BYR" : {
@@ -32,47 +32,47 @@
"code" : "BYR"
},
"BHD" : {
- "value" : 2.6523510439653708,
+ "value" : 2.6594471541256004,
"code" : "BHD"
},
"SZL" : {
- "value" : 0.065702793544805654,
+ "value" : 0.05723977225439416,
"code" : "SZL"
},
"INR" : {
- "value" : 0.013910044327555561,
+ "value" : 0.013223559453202643,
"code" : "INR"
},
"SDG" : {
- "value" : 0.018484230613031911,
+ "value" : 0.018081980008635232,
"code" : "SDG"
},
"PEN" : {
- "value" : 0.29323328995435527,
+ "value" : 0.28542853097927107,
"code" : "PEN"
},
"EUR" : {
- "value" : 1.0883773273588673,
+ "value" : 1.0763497964622535,
"code" : "EUR"
},
"TRX" : {
- "value" : 0.0190759,
+ "value" : 0.01110775,
"code" : "TRX"
},
"PGK" : {
- "value" : 0.29368653250478488,
+ "value" : 0.2932228860462559,
"code" : "PGK"
},
"QAR" : {
- "value" : 0.27464838826713073,
+ "value" : 0.27464695507160319,
"code" : "QAR"
},
"LRD" : {
- "value" : 0.0050639416826753058,
+ "value" : 0.0050729222683882393,
"code" : "LRD"
},
"ISK" : {
- "value" : 0.0078488663117121521,
+ "value" : 0.0071062909108279455,
"code" : "ISK"
},
"SYP" : {
@@ -80,91 +80,91 @@
"code" : "SYP"
},
"TRY" : {
- "value" : 0.16273920017914331,
+ "value" : 0.1526134131318348,
"code" : "TRY"
},
"UAH" : {
- "value" : 0.040753552752091492,
+ "value" : 0.036539083756897441,
"code" : "UAH"
},
"SGD" : {
- "value" : 0.71494704029798983,
+ "value" : 0.68979598593919855,
"code" : "SGD"
},
"MMK" : {
- "value" : 0.00068987321992875405,
+ "value" : 0.00070313998918671949,
"code" : "MMK"
},
"NIO" : {
- "value" : 0.02919728914849172,
+ "value" : 0.029282253604403841,
"code" : "NIO"
},
"BIF" : {
- "value" : 0.00052910052910052914,
+ "value" : 0.00052770448548812663,
"code" : "BIF"
},
"AFN" : {
- "value" : 0.012995415282465422,
+ "value" : 0.01314917406618905,
"code" : "AFN"
},
+ "LKR" : {
+ "value" : 0.0053567214936039408,
+ "code" : "LKR"
+ },
"LTC" : {
- "value" : 71.324140209999996,
+ "value" : 37.386027069999997,
"code" : "LTC"
},
"GTQ" : {
- "value" : 0.13075498451076453,
+ "value" : 0.13131838404849325,
"code" : "GTQ"
},
- "LKR" : {
- "value" : 0.0055015208404211261,
- "code" : "LKR"
- },
"XRP" : {
- "value" : 0.25512463000000002,
+ "value" : 0.15588341,
"code" : "XRP"
},
"CHF" : {
- "value" : 1.024642655873764,
+ "value" : 1.0139252493749151,
"code" : "CHF"
},
"THB" : {
- "value" : 0.031509975018261603,
+ "value" : 0.030671409734363199,
"code" : "THB"
},
"AMD" : {
- "value" : 0.002090605015070419,
+ "value" : 0.002026012365811047,
"code" : "AMD"
},
"AOA" : {
- "value" : 0.0020284407638936717,
+ "value" : 0.0019282033334532417,
"code" : "AOA"
},
"SEK" : {
- "value" : 0.10295713482648633,
+ "value" : 0.096334426889635907,
"code" : "SEK"
},
"DASH" : {
- "value" : 96.853203140000005,
+ "value" : 70.651361420000001,
"code" : "DASH"
},
"SAR" : {
- "value" : 0.26651528598422763,
+ "value" : 0.26610330822293815,
"code" : "SAR"
},
"KWD" : {
- "value" : 3.266927585283145,
+ "value" : 3.2126449706042988,
"code" : "KWD"
},
"IRR" : {
- "value" : 2.3750148435043321e-05,
+ "value" : 2.3750148239875258e-05,
"code" : "IRR"
},
"WST" : {
- "value" : 0.37188891678055763,
+ "value" : 0.34640216321222883,
"code" : "WST"
},
"BNB" : {
- "value" : 20.485580339999999,
+ "value" : 11.775446219999999,
"code" : "BNB"
},
"BMD" : {
@@ -172,99 +172,99 @@
"code" : "BMD"
},
"BGN" : {
- "value" : 0.55563334422374688,
+ "value" : 0.54648183193825628,
"code" : "BGN"
},
"PHP" : {
- "value" : 0.019575026947960848,
+ "value" : 0.019616311999168582,
"code" : "PHP"
},
"ZMW" : {
- "value" : 0.067886459624731804,
+ "value" : 0.058983113429540691,
"code" : "ZMW"
},
"XAF" : {
- "value" : 0.0016514878146375363,
+ "value" : 0.0016360828518246062,
"code" : "XAF"
},
"BDT" : {
- "value" : 0.011767930295253842,
+ "value" : 0.011810162503111978,
"code" : "BDT"
},
"NOK" : {
- "value" : 0.1068136650566999,
+ "value" : 0.087346199719706044,
"code" : "NOK"
},
"BOB" : {
- "value" : 0.1445582422989849,
+ "value" : 0.14520865176380593,
"code" : "BOB"
},
"TZS" : {
- "value" : 0.00043292944517055035,
+ "value" : 0.00043381997443251612,
"code" : "TZS"
},
"XAG" : {
- "value" : 17.995968902965735,
+ "value" : 12.582573136206353,
"code" : "XAG"
},
- "VEF" : {
- "value" : 0.10012517649565486,
- "code" : "VEF"
+ "VUV" : {
+ "value" : 0.0078507628393907347,
+ "code" : "VUV"
},
"ANG" : {
- "value" : 0.55846235209822681,
+ "value" : 0.55975120178583027,
"code" : "ANG"
},
- "VUV" : {
- "value" : 0.0083791690639469351,
- "code" : "VUV"
- },
"BND" : {
- "value" : 0.71415716599583501,
+ "value" : 0.69261046963838113,
"code" : "BND"
},
"XCD" : {
"value" : 0.37002090618119926,
"code" : "XCD"
},
+ "VEF" : {
+ "value" : 0.10012511634538519,
+ "code" : "VEF"
+ },
"SCR" : {
- "value" : 0.072965746011637592,
+ "value" : 0.073255817445916874,
"code" : "SCR"
},
"KYD" : {
- "value" : 1.1995398565110424,
+ "value" : 1.2023074684935329,
"code" : "KYD"
},
"DJF" : {
- "value" : 0.0056268222604561047,
+ "value" : 0.005626816244848073,
"code" : "DJF"
},
"CLF" : {
- "value" : 33.935116058096916,
+ "value" : 31.962156806341291,
"code" : "CLF"
},
"LSL" : {
- "value" : 0.065661645148579501,
+ "value" : 0.057239732937722825,
"code" : "LSL"
},
"MOP" : {
- "value" : 0.12457938883843422,
+ "value" : 0.12540460227366068,
"code" : "MOP"
},
"ALL" : {
- "value" : 0.0088893254535389408,
+ "value" : 0.0087069785902274977,
"code" : "ALL"
},
"UZS" : {
- "value" : 0.00010503098243043774,
+ "value" : 0.00010509721122358741,
"code" : "UZS"
},
"UYU" : {
- "value" : 0.026035353093541484,
+ "value" : 0.021802889192419021,
"code" : "UYU"
},
"PLN" : {
- "value" : 0.25272296357099572,
+ "value" : 0.23574063814990748,
"code" : "PLN"
},
"LTL" : {
@@ -272,19 +272,19 @@
"code" : "LTL"
},
"LYD" : {
- "value" : 0.71174123935502009,
+ "value" : 0.70902826966613985,
"code" : "LYD"
},
- "JPY" : {
- "value" : 0.009077169804173767,
- "code" : "JPY"
- },
"MNT" : {
- "value" : 0.00036300093050751028,
+ "value" : 0.00036022874978058379,
"code" : "MNT"
},
+ "JPY" : {
+ "value" : 0.009011766122319945,
+ "code" : "JPY"
+ },
"FJD" : {
- "value" : 0.45108013393471336,
+ "value" : 0.42300468689193071,
"code" : "FJD"
},
"ZWL" : {
@@ -292,23 +292,23 @@
"code" : "ZWL"
},
"KPW" : {
- "value" : 0.0011110213047901087,
+ "value" : 0.0011111110777777787,
"code" : "KPW"
},
"PKR" : {
- "value" : 0.0064809950587986333,
+ "value" : 0.0063002032483369125,
"code" : "PKR"
},
"MRO" : {
- "value" : 0.0028011201735596465,
+ "value" : 0.0028011180393746832,
"code" : "MRO"
},
"OMR" : {
- "value" : 2.5972272002410226,
+ "value" : 2.6073511658770738,
"code" : "OMR"
},
"GBP" : {
- "value" : 1.3002007509959537,
+ "value" : 1.1650001339750153,
"code" : "GBP"
},
"LVL" : {
@@ -316,99 +316,99 @@
"code" : "LVL"
},
"SHP" : {
- "value" : 1.3003360068241632,
+ "value" : 1.1659509670980297,
"code" : "SHP"
},
"GEL" : {
- "value" : 0.35906423551454086,
+ "value" : 0.31200858647629987,
"code" : "GEL"
},
"TND" : {
- "value" : 0.3496019432274412,
+ "value" : 0.34182144341624554,
"code" : "TND"
},
"DKK" : {
- "value" : 0.1456971975144058,
+ "value" : 0.14321714985268685,
"code" : "DKK"
},
"NPR" : {
- "value" : 0.0087003367378331014,
+ "value" : 0.0083551067415016875,
"code" : "NPR"
},
"KRW" : {
- "value" : 0.00082254450239665274,
+ "value" : 0.00079684425197163811,
"code" : "KRW"
},
"BSD" : {
- "value" : 0.99963513317639063,
+ "value" : 1.0019046206839202,
"code" : "BSD"
},
"CRC" : {
- "value" : 0.0017460833081489916,
+ "value" : 0.0017717644250681136,
"code" : "CRC"
},
"EGP" : {
- "value" : 0.06415609743078568,
+ "value" : 0.063897302211172541,
"code" : "EGP"
},
"MAD" : {
- "value" : 0.10328975813876813,
+ "value" : 0.10182904308906142,
"code" : "MAD"
},
- "BTC" : {
- "value" : 9345.7943925233649,
- "code" : "BTC"
- },
"AUD" : {
- "value" : 0.66019761034872959,
+ "value" : 0.57930580626623507,
"code" : "AUD"
},
+ "BTC" : {
+ "value" : 6211.1801242236024,
+ "code" : "BTC"
+ },
"SLL" : {
- "value" : 0.0001029336096135646,
+ "value" : 0.0001030927799022214,
"code" : "SLL"
},
"MWK" : {
- "value" : 0.001355938147454957,
+ "value" : 0.0013605435790645785,
"code" : "MWK"
},
"RSD" : {
- "value" : 0.0092584198291947445,
+ "value" : 0.0091053917959946426,
"code" : "RSD"
},
"NZD" : {
- "value" : 0.63199979270406803,
+ "value" : 0.56965288201634334,
"code" : "NZD"
},
"SRD" : {
- "value" : 0.13408472626133838,
+ "value" : 0.13408352169833407,
"code" : "SRD"
},
"CLP" : {
- "value" : 0.0012298621631488707,
+ "value" : 0.0011583406331187806,
"code" : "CLP"
},
"RUB" : {
- "value" : 0.015304115033196997,
+ "value" : 0.012503531622506775,
"code" : "RUB"
},
"NAD" : {
- "value" : 0.065660567303361866,
+ "value" : 0.05723974931966265,
"code" : "NAD"
},
"HKD" : {
- "value" : 0.12836558518661145,
+ "value" : 0.12883526478867796,
"code" : "HKD"
},
"GMD" : {
- "value" : 0.019607800845919746,
+ "value" : 0.019650075387514225,
"code" : "GMD"
},
"VND" : {
- "value" : 4.3035741183052525e-05,
+ "value" : 4.3019078961519434e-05,
"code" : "VND"
},
"LAK" : {
- "value" : 0.00011229646146342911,
+ "value" : 0.00011185681889954924,
"code" : "LAK"
},
"CUC" : {
@@ -416,179 +416,179 @@
"code" : "CUC"
},
"RON" : {
- "value" : 0.22636720699764418,
+ "value" : 0.2205539521283236,
"code" : "RON"
},
"MUR" : {
- "value" : 0.026699166315861871,
+ "value" : 0.025621068142843293,
"code" : "MUR"
},
"XAU" : {
- "value" : 1633.9869281045751,
+ "value" : 1497.0059880239521,
"code" : "XAU"
},
"GGP" : {
- "value" : 1.3003360068241632,
+ "value" : 1.1659509670980297,
"code" : "GGP"
},
+ "MXN" : {
+ "value" : 0.040944668848526183,
+ "code" : "MXN"
+ },
"BRL" : {
- "value" : 0.22787364042040861,
+ "value" : 0.19747609749315942,
"code" : "BRL"
},
"STD" : {
- "value" : 4.5685510254460443e-05,
+ "value" : 4.5345772756215923e-05,
"code" : "STD"
},
- "MXN" : {
- "value" : 0.052422303593286805,
- "code" : "MXN"
- },
"AWG" : {
- "value" : 0.5554012774229381,
+ "value" : 0.55555555555555558,
"code" : "AWG"
},
"MVR" : {
- "value" : 0.064724311648855073,
+ "value" : 0.06489133491728756,
"code" : "MVR"
},
"PAB" : {
- "value" : 0.99963513317639063,
+ "value" : 1.0019046206839202,
"code" : "PAB"
},
"TJS" : {
- "value" : 0.10316107188067483,
+ "value" : 0.10280197050817071,
"code" : "TJS"
},
"GNF" : {
- "value" : 0.00010624170451756518,
+ "value" : 0.00010624165639982802,
"code" : "GNF"
},
"MGA" : {
- "value" : 0.00026917901381942578,
+ "value" : 0.00026652449560660981,
"code" : "MGA"
},
"XDR" : {
- "value" : 1.3626484435148154,
+ "value" : 1.3504461874203235,
"code" : "XDR"
},
"ETB" : {
- "value" : 0.030969578211687721,
+ "value" : 0.030671199951809412,
"code" : "ETB"
},
"ZAR" : {
- "value" : 0.065733984687005337,
+ "value" : 0.056678707113347777,
"code" : "ZAR"
},
"COP" : {
- "value" : 0.00029099374363451185,
+ "value" : 0.00024268899405411964,
"code" : "COP"
},
"IDR" : {
- "value" : 7.1702577707668594e-05,
+ "value" : 6.3373854153186512e-05,
"code" : "IDR"
},
"SVC" : {
- "value" : 0.11424858023289346,
+ "value" : 0.11450918386556438,
"code" : "SVC"
},
"CVE" : {
- "value" : 0.0098376559518098868,
+ "value" : 0.00969895444398188,
"code" : "CVE"
},
"ETC" : {
- "value" : 9.2414770100000005,
+ "value" : 4.8471909000000002,
"code" : "ETC"
},
"TTD" : {
- "value" : 0.14783698961312094,
+ "value" : 0.1482872525753047,
"code" : "TTD"
},
- "DOGE" : {
- "value" : 0.0025008600000000001,
- "code" : "DOGE"
+ "GIP" : {
+ "value" : 1.1659509670980297,
+ "code" : "GIP"
},
"PYG" : {
- "value" : 0.00015260611179847446,
+ "value" : 0.00015102166981185603,
"code" : "PYG"
},
- "GIP" : {
- "value" : 1.3003360068241632,
- "code" : "GIP"
+ "DOGE" : {
+ "value" : 0.0017667799999999999,
+ "code" : "DOGE"
},
"MZN" : {
- "value" : 0.015378693404678168,
+ "value" : 0.01507044551657938,
"code" : "MZN"
},
"FKP" : {
- "value" : 1.3003360068241632,
+ "value" : 1.1659509670980297,
"code" : "FKP"
},
"KZT" : {
- "value" : 0.0026468799333706208,
+ "value" : 0.0022358015367513568,
"code" : "KZT"
},
+ "UGX" : {
+ "value" : 0.00026195567645827576,
+ "code" : "UGX"
+ },
"USD" : {
"value" : 1,
"code" : "USD"
},
- "UGX" : {
- "value" : 0.00027163687561171894,
- "code" : "UGX"
- },
"RWF" : {
"value" : 0.0010695187165775401,
"code" : "RWF"
},
"GHS" : {
- "value" : 0.18709119404780591,
+ "value" : 0.17792359604938446,
"code" : "GHS"
},
"ARS" : {
- "value" : 0.016188774318594657,
+ "value" : 0.015781795342403961,
"code" : "ARS"
},
"JEP" : {
- "value" : 1.3003360068241632,
+ "value" : 1.1659509670980297,
"code" : "JEP"
},
"DOP" : {
- "value" : 0.018658447894026584,
+ "value" : 0.018518395405482394,
"code" : "DOP"
},
"LBP" : {
- "value" : 0.0006605020835914713,
+ "value" : 0.00066135545154280214,
"code" : "LBP"
},
"BZD" : {
- "value" : 0.4959279357198047,
+ "value" : 0.49709571826603072,
"code" : "BZD"
},
"BTN" : {
- "value" : 0.013920560096519595,
+ "value" : 0.0133681457673309,
"code" : "BTN"
},
"ADA" : {
- "value" : 0.05665137,
+ "value" : 0.028973720000000001,
"code" : "ADA"
},
- "YER" : {
- "value" : 0.003996004554885752,
- "code" : "YER"
- },
"MYR" : {
- "value" : 0.23615555755500595,
+ "value" : 0.22755696661102137,
"code" : "MYR"
},
+ "YER" : {
+ "value" : 0.0039944020213208073,
+ "code" : "YER"
+ },
"JMD" : {
- "value" : 0.0072263691946240433,
+ "value" : 0.0074044889418030122,
"code" : "JMD"
},
"TOP" : {
- "value" : 0.43108093544562992,
+ "value" : 0.41702287370462271,
"code" : "TOP"
},
"SOS" : {
- "value" : 0.0017094014230404455,
+ "value" : 0.0017064836573524296,
"code" : "SOS"
},
"TMT" : {
@@ -596,43 +596,43 @@
"code" : "TMT"
},
"MDL" : {
- "value" : 0.056002056843543743,
+ "value" : 0.055662867379099416,
"code" : "MDL"
},
"XOF" : {
- "value" : 0.0016501659695678042,
+ "value" : 0.001640679393392658,
"code" : "XOF"
},
"ETH" : {
- "value" : 253.23130087000001,
+ "value" : 131.32626894000001,
"code" : "ETH"
},
"TWD" : {
- "value" : 0.032894195819147709,
+ "value" : 0.033036550582394741,
"code" : "TWD"
},
"BBD" : {
- "value" : 0.49508945523821973,
+ "value" : 0.50064859024866715,
"code" : "BBD"
},
"CAD" : {
- "value" : 0.75270314517009207,
+ "value" : 0.69606375944036469,
"code" : "CAD"
},
"CNY" : {
- "value" : 0.14209787332059851,
+ "value" : 0.1409283570966729,
"code" : "CNY"
},
- "JOD" : {
- "value" : 1.4104073961763857,
- "code" : "JOD"
- },
"XPF" : {
- "value" : 0.0090457003253557496,
+ "value" : 0.0089565314807213709,
"code" : "XPF"
},
+ "JOD" : {
+ "value" : 1.4103576667042761,
+ "code" : "JOD"
+ },
"XLM" : {
- "value" : 0.064830589999999994,
+ "value" : 0.039567440000000002,
"code" : "XLM"
},
"IQD" : {
@@ -640,91 +640,91 @@
"code" : "IQD"
},
"HNL" : {
- "value" : 0.040164394473154404,
+ "value" : 0.04009560556573516,
"code" : "HNL"
},
"AED" : {
- "value" : 0.27225441630695052,
+ "value" : 0.27225389745066897,
"code" : "AED"
},
"EOS" : {
- "value" : 4.0654144399999996,
+ "value" : 2.1972275300000002,
"code" : "EOS"
},
- "KES" : {
- "value" : 0.0098808349566392398,
- "code" : "KES"
- },
"ERN" : {
- "value" : 0.066664208979495626,
+ "value" : 0.066665075593529161,
"code" : "ERN"
},
+ "KES" : {
+ "value" : 0.0094321483552431921,
+ "code" : "KES"
+ },
"KMF" : {
- "value" : 0.0022105554069313188,
+ "value" : 0.0021810070248578705,
"code" : "KMF"
},
- "MKD" : {
- "value" : 0.017615996847159348,
- "code" : "MKD"
- },
"DZD" : {
- "value" : 0.0082945988699222838,
+ "value" : 0.0080988028025745125,
"code" : "DZD"
},
+ "MKD" : {
+ "value" : 0.017395114936830335,
+ "code" : "MKD"
+ },
"BSV" : {
- "value" : 261.34168437,
+ "value" : 164.85426050999999,
"code" : "BSV"
},
"BWP" : {
- "value" : 0.090066843107612315,
+ "value" : 0.088471562629859668,
"code" : "BWP"
},
- "SBD" : {
- "value" : 0.12114843384756402,
- "code" : "SBD"
- },
"AZN" : {
- "value" : 0.58922658118953064,
+ "value" : 0.58686479222052035,
"code" : "AZN"
},
+ "SBD" : {
+ "value" : 0.12094835118369733,
+ "code" : "SBD"
+ },
"BCH" : {
- "value" : 355.60714253999998,
+ "value" : 215.75744254,
"code" : "BCH"
},
"KGS" : {
- "value" : 0.014316402722069275,
+ "value" : 0.011972161754823921,
"code" : "KGS"
},
"BYN" : {
- "value" : 0.44742889460007013,
+ "value" : 0.3887025923741993,
"code" : "BYN"
},
"KHR" : {
- "value" : 0.00024479803526350263,
+ "value" : 0.00024721876717582515,
"code" : "KHR"
},
"NEO" : {
- "value" : 12.6220079,
+ "value" : 6.0888002800000001,
"code" : "NEO"
},
"ZMK" : {
- "value" : 0.000111096211627849,
+ "value" : 0.00011109625392516104,
"code" : "ZMK"
},
"HTG" : {
- "value" : 0.01108319746256844,
+ "value" : 0.010517724026785531,
"code" : "HTG"
},
- "CZK" : {
- "value" : 0.043086767011151113,
- "code" : "CZK"
+ "IMP" : {
+ "value" : 1.1659509670980297,
+ "code" : "IMP"
},
"BAM" : {
- "value" : 0.55389019237714165,
+ "value" : 0.54868781309498338,
"code" : "BAM"
},
- "IMP" : {
- "value" : 1.3003360068241632,
- "code" : "IMP"
+ "CZK" : {
+ "value" : 0.039221777185790417,
+ "code" : "CZK"
}
}
\ No newline at end of file
diff --git a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Base.lproj/FunctionDescriptions.json b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Base.lproj/FunctionDescriptions.json
index 93dcc8bd0..05504e9d5 100644
--- a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Base.lproj/FunctionDescriptions.json
+++ b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Base.lproj/FunctionDescriptions.json
@@ -1 +1,267 @@
-{"percentage":[{"prototypeExpressions":["10% of 100"],"keywords":[],"identifier":"percentOf"},{"prototypeExpressions":["10% off 100"],"keywords":[],"identifier":"percentOff"},{"prototypeExpressions":["10% on 100"],"keywords":[],"identifier":"percentOn"},{"prototypeExpressions":["30 is 20% of what"],"keywords":["what"],"identifier":"isPercentOfWhat"},{"prototypeExpressions":["20% of what is 30"],"keywords":["what"],"identifier":"isPercentOfWhatClassic"},{"prototypeExpressions":["30 is 20% off what"],"keywords":["what"],"identifier":"isPercentOffWhat"},{"prototypeExpressions":["20% off what is 30"],"keywords":["what"],"identifier":"isPercentOffWhatClassic"},{"prototypeExpressions":["30 is 20% on what"],"keywords":["what"],"identifier":"isPercentOnWhat"},{"prototypeExpressions":["20% on what is 30"],"keywords":["what"],"identifier":"isPercentOnWhatClassic"},{"prototypeExpressions":["10 is what % of 20","10 as a % of 20","10 as % of 20"],"keywords":["of"],"identifier":"isWhatPercentOf"},{"prototypeExpressions":["10 is what % off 20","10 as a % off 20","10 as % off 20"],"keywords":[],"identifier":"isWhatPercentOff"},{"prototypeExpressions":["20 is what % on 10","20 as a % on 10","20 as % on 10"],"keywords":[],"identifier":"isWhatPercentOn"}],"general":[{"prototypeExpressions":["remainder of 20 divided by 3"],"keywords":["remainder"],"identifier":"remainder"},{"prototypeExpressions":["half of 20"],"keywords":["half"],"identifier":"halfOf"},{"prototypeExpressions":["smaller of 2 and 30","lesser of 2 and 30"],"keywords":["and","of"],"identifier":"lesserOf"},{"prototypeExpressions":["larger of 2 and 30","greater of 2 and 30"],"keywords":["and","of"],"identifier":"greaterOf"},{"prototypeExpressions":["midpoint between 2 and 32"],"keywords":["midpoint"],"identifier":"midpoint"},{"prototypeExpressions":["6 is to 600 as what is to 8"],"keywords":["is to"],"identifier":"proportionsFindNumerator"},{"prototypeExpressions":["6 is to 600 as 8 is to what"],"keywords":["is to"],"identifier":"proportionsFindDenominator"}],"unitRelated":[{"prototypeExpressions":["__unit in __unit_expression"],"keywords":[],"identifier":"unitInUnitExpression"}],"datetime":[{"prototypeExpressions":["__unit between __datestamp and __datestamp","__unit from __datestamp to __datestamp","__unit in __datestamp to __datestamp"],"keywords":[],"identifier":"calendarUnitBetweenDates"},{"prototypeExpressions":["__unit to __datestamp","__unit before __datestamp","__unit until __datestamp","__unit till __datestamp"],"keywords":[],"identifier":"calendarUnitToDate"},{"prototypeExpressions":["__datestamp to __datestamp"],"keywords":[],"identifier":"intervalBetweenDates"},{"identifier":"intervalBetweenTimestamps","keywords":[],"prototypeExpressions":["__timestamp to __timestamp"]},{"identifier":"calendarUnitSinceDate","keywords":["since"],"prototypeExpressions":["__unit since __datestamp"]},{"prototypeExpressions":["__timespan from __datestamp","__timespan after __datestamp"],"keywords":[],"identifier":"calendarUnitExpressionAfterDate"},{"prototypeExpressions":["new timestamp"],"keywords":[],"identifier":"generateTimestamp"}]}
+{
+ "percentage": [
+ {
+ "identifier": "percentOf",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "10% of 100"
+ ]
+ },
+ {
+ "identifier": "percentOff",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "10% off 100"
+ ]
+ },
+ {
+ "identifier": "percentOn",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "10% on 100"
+ ]
+ },
+ {
+ "identifier": "isPercentOfWhat",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "30 is 20% of what"
+ ]
+ },
+ {
+ "identifier": "isPercentOfWhatClassic",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "20% of what is 30"
+ ]
+ },
+ {
+ "identifier": "isPercentOffWhat",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "30 is 20% off what"
+ ]
+ },
+ {
+ "identifier": "isPercentOffWhatClassic",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "20% off what is 30"
+ ]
+ },
+ {
+ "identifier": "isPercentOnWhat",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "30 is 20% on what"
+ ]
+ },
+ {
+ "identifier": "isPercentOnWhatClassic",
+ "keywords": [
+ "what"
+ ],
+ "prototypeExpressions": [
+ "20% on what is 30"
+ ]
+ },
+ {
+ "identifier": "isWhatPercentOf",
+ "keywords": [
+ "of"
+ ],
+ "prototypeExpressions": [
+ "10 is what % of 20",
+ "10 as a % of 20",
+ "10 as % of 20"
+ ]
+ },
+ {
+ "identifier": "isWhatPercentOff",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "10 is what % off 20",
+ "10 as a % off 20",
+ "10 as % off 20"
+ ]
+ },
+ {
+ "identifier": "isWhatPercentOn",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "20 is what % on 10",
+ "20 as a % on 10",
+ "20 as % on 10"
+ ]
+ }
+ ],
+ "general": [
+ {
+ "identifier": "remainder",
+ "keywords": [
+ "remainder"
+ ],
+ "prototypeExpressions": [
+ "remainder of 20 divided by 3"
+ ]
+ },
+ {
+ "identifier": "halfOf",
+ "keywords": [
+ "half"
+ ],
+ "prototypeExpressions": [
+ "half of 20"
+ ]
+ },
+ {
+ "identifier": "lesserOf",
+ "keywords": [
+ "and",
+ "of"
+ ],
+ "prototypeExpressions": [
+ "smaller of 2 and 30",
+ "lesser of 2 and 30"
+ ]
+ },
+ {
+ "identifier": "greaterOf",
+ "keywords": [
+ "and",
+ "of"
+ ],
+ "prototypeExpressions": [
+ "larger of 2 and 30",
+ "greater of 2 and 30"
+ ]
+ },
+ {
+ "identifier": "midpoint",
+ "keywords": [
+ "midpoint"
+ ],
+ "prototypeExpressions": [
+ "midpoint between 2 and 32"
+ ]
+ },
+ {
+ "identifier": "proportionsFindNumerator",
+ "keywords": [
+ "is to"
+ ],
+ "prototypeExpressions": [
+ "6 is to 600 as what is to 8"
+ ]
+ },
+ {
+ "identifier": "proportionsFindDenominator",
+ "keywords": [
+ "is to"
+ ],
+ "prototypeExpressions": [
+ "6 is to 600 as 8 is to what"
+ ]
+ },
+ {
+ "identifier": "makeRandomNumber",
+ "keywords": [
+ "random"
+ ],
+ "prototypeExpressions": [
+ "random number between 1 and 5",
+ "random between 1 and 5"
+ ]
+ }
+ ],
+ "unitRelated": [
+ {
+ "identifier": "unitInUnitExpression",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "__unit in __unit_expression"
+ ]
+ }
+ ],
+ "datetime": [
+ {
+ "identifier": "calendarUnitBetweenDates",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "__unit between __datestamp and __datestamp",
+ "__unit from __datestamp to __datestamp",
+ "__unit in __datestamp to __datestamp"
+ ]
+ },
+ {
+ "identifier": "calendarUnitToDate",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "__unit to __datestamp",
+ "__unit before __datestamp",
+ "__unit until __datestamp",
+ "__unit till __datestamp"
+ ]
+ },
+ {
+ "identifier": "intervalBetweenDates",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "__datestamp to __datestamp"
+ ]
+ },
+ {
+ "prototypeExpressions": [
+ "__timestamp to __timestamp"
+ ],
+ "keywords": [
+ ],
+ "identifier": "intervalBetweenTimestamps"
+ },
+ {
+ "prototypeExpressions": [
+ "__unit since __datestamp"
+ ],
+ "keywords": [
+ "since"
+ ],
+ "identifier": "calendarUnitSinceDate"
+ },
+ {
+ "identifier": "calendarUnitExpressionAfterDate",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "__timespan from __datestamp",
+ "__timespan after __datestamp"
+ ]
+ },
+ {
+ "identifier": "generateTimestamp",
+ "keywords": [
+ ],
+ "prototypeExpressions": [
+ "new timestamp"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Base.lproj/LocalizedFixtures.json b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Base.lproj/LocalizedFixtures.json
index 7599e6892..ec87d93cf 100644
--- a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Base.lproj/LocalizedFixtures.json
+++ b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Base.lproj/LocalizedFixtures.json
@@ -1,59 +1,59 @@
{
- "fixtures" : {
- "decimalPlacesTypes" : [
+ "fixtures": {
+ "decimalPlacesTypes": [
"dp",
"digit",
"digits"
],
- "divisionOperators" : [
+ "multiplierTypes": [
+ "multiplier"
+ ],
+ "divisionOperators": [
"÷",
"per"
],
- "roundingConverters" : [
+ "roundingConverters": [
"rounded"
],
- "tomorrowDateAliases" : [
- "tomorrow"
- ],
- "multiplicationOperators" : [
+ "multiplicationOperators": [
"×",
"x"
],
- "numberTypes" : [
+ "tomorrowDateAliases": [
+ "tomorrow"
+ ],
+ "numberTypes": [
"number"
],
- "roundingDownConverters" : [
+ "roundingDownConverters": [
"rounded down"
],
- "yesterdayDateAliases" : [
+ "yesterdayDateAliases": [
"yesterday"
],
- "subtractionOperators" : [
+ "subtractionOperators": [
"−",
"–"
],
- "dateTypes" : [
- "date"
- ],
- "roundingUpConverters" : [
- "rounded up"
+ "todayDateAliases": [
+ "today"
],
- "timestampTypes" : [
+ "timestampTypes": [
"timestamp"
],
- "todayDateAliases" : [
- "today"
+ "roundingUpConverters": [
+ "rounded up"
],
- "additionOperators" : [
- "plus"
+ "dateTypes": [
+ "date"
],
- "piAliases" : [
- "π"
+ "iso8601Types": [
+ "iso8601"
],
- "timespanTypes" : [
- "timespan"
+ "piAliases": [
+ "π"
],
- "monthOfYearDateAliases" : [
+ "monthOfYearDateAliases": [
"jan",
"feb",
"mar",
@@ -79,17 +79,23 @@
"november",
"december"
],
- "nowDateAliases" : [
+ "additionOperators": [
+ "plus"
+ ],
+ "timespanTypes": [
+ "timespan"
+ ],
+ "nowDateAliases": [
"now"
],
- "converterSymbols" : [
+ "converterSymbols": [
"to",
"as"
],
- "fractionTypes" : [
+ "fractionTypes": [
"fraction"
],
- "dayOfWeekDateAliases" : [
+ "dayOfWeekDateAliases": [
"monday",
"tuesday",
"wednesday",
@@ -106,17 +112,17 @@
"sat",
"sun"
],
- "dateIntervalPrepositions" : [
+ "dateIntervalPrepositions": [
"between ",
"until ",
"before ",
"to ",
"from ",
- "after "
+ "after "
],
- "percentTypes" : [
+ "percentTypes": [
"percent",
"percentage"
]
}
-}
+}
\ No newline at end of file
diff --git a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Base.lproj/TimeZoneAbbrieviations.json b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Base.lproj/TimeZoneAbbrieviations.json
new file mode 100644
index 000000000..1bde26bad
--- /dev/null
+++ b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Base.lproj/TimeZoneAbbrieviations.json
@@ -0,0 +1,63 @@
+{
+ "ACDT": "Australia/Adelaide",
+ "ACST": "Australia/Darwin",
+ "ADT": "America/Halifax",
+ "AEDT": "Australia/Sydney",
+ "AEST": "Australia/Brisbane",
+ "AKDT": "America/Juneau",
+ "AKST": "America/Juneau",
+ "ART": "America/Argentina/Buenos_Aires",
+ "AST": "America/Halifax",
+ "AWST": "Australia/Perth",
+ "BDT": "Asia/Dhaka",
+ "BRST": "America/Sao_Paulo",
+ "BRT": "America/Sao_Paulo",
+ "BST": "Europe/London",
+ "CAT": "Africa/Harare",
+ "CDT": "America/Chicago",
+ "CEST": "Europe/Paris",
+ "CET": "Europe/Paris",
+ "CLST": "America/Santiago",
+ "CLT": "America/Santiago",
+ "COT": "America/Bogota",
+ "CST": "America/Chicago",
+ "EAT": "Africa/Addis_Ababa",
+ "EDT": "America/New_York",
+ "EEST": "Europe/Athens",
+ "EET": "Europe/Athens",
+ "EST": "America/New_York",
+ "GMT": "GMT",
+ "GST": "Asia/Dubai",
+ "HKT": "Asia/Hong_Kong",
+ "HST": "Pacific/Honolulu",
+ "ICT": "Asia/Bangkok",
+ "IRST": "Asia/Tehran",
+ "IST": "Asia/Kolkata",
+ "JST": "Asia/Tokyo",
+ "KST": "Asia/Seoul",
+ "MDT": "America/Denver",
+ "MSD": "Europe/Moscow",
+ "MSK": "Europe/Moscow",
+ "MST": "America/Phoenix",
+ "NDT": "America/St_Johns",
+ "NST": "America/St_Johns",
+ "NZDT": "Pacific/Auckland",
+ "NZST": "Pacific/Auckland",
+ "PDT": "America/Los_Angeles",
+ "PET": "America/Lima",
+ "PHT": "Asia/Manila",
+ "PKT": "Asia/Karachi",
+ "PST": "America/Los_Angeles",
+ "SAST": "Africa/Johannesburg",
+ "SGT": "Asia/Singapore",
+ "SST": "Pacific/Midway",
+ "TRT": "Europe/Istanbul",
+ "UTC": "UTC",
+ "WAT": "Africa/Lagos",
+ "WEST": "Europe/Lisbon",
+ "WET": "Europe/Lisbon",
+ "WIB": "Asia/Jakarta",
+ "WIT": "Asia/Jakarta",
+ "WITA": "Asia/Makassar"
+
+}
\ No newline at end of file
diff --git a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Info.plist b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Info.plist
index 9ec25a090..c01b18fbb 100644
--- a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Info.plist
+++ b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/Info.plist
@@ -17,27 +17,27 @@
CFBundlePackageType
FMWK
CFBundleShortVersionString
- 1.0
+ 1.0.1
CFBundleSupportedPlatforms
MacOSX
CFBundleVersion
- 1
+ 2
DTCompiler
com.apple.compilers.llvm.clang.1_0
DTPlatformBuild
- 11B53
+ 11C504
DTPlatformVersion
GM
DTSDKBuild
- 19B89
+ 19B90
DTSDKName
macosx10.15
DTXcode
- 1120
+ 1130
DTXcodeBuild
- 11B53
+ 11C504
LSMinimumSystemVersion
10.14.4
NSHumanReadableCopyright
diff --git a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/de.lproj/Localizable.strings b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/de.lproj/Localizable.strings
index a4505f8aa..64b9262d2 100644
Binary files a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/de.lproj/Localizable.strings and b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/de.lproj/Localizable.strings differ
diff --git a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/en.lproj/Localizable.strings b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/en.lproj/Localizable.strings
index f3f39c3a1..862a28015 100644
Binary files a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/en.lproj/Localizable.strings and b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/en.lproj/Localizable.strings differ
diff --git a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/ru.lproj/Localizable.strings b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/ru.lproj/Localizable.strings
index e57a6446e..4e8e9025b 100644
Binary files a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/ru.lproj/Localizable.strings and b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/Resources/ru.lproj/Localizable.strings differ
diff --git a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/SoulverCore b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/SoulverCore
index 3a4581870..cded01c81 100755
Binary files a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/SoulverCore and b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/SoulverCore differ
diff --git a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/_CodeSignature/CodeResources b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/_CodeSignature/CodeResources
index 65bb3bce3..7d95fb292 100644
--- a/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/_CodeSignature/CodeResources
+++ b/SoulverCore.xcframework/macos-x86_64/SoulverCore.framework/Versions/A/_CodeSignature/CodeResources
@@ -6,15 +6,19 @@
Resources/Base.lproj/DefaultCurrencyRates.json
- GGQyeKcWhAylO6N3mrTJ0U0BHpQ=
+ bgU0/Y8EJoRmz4uph3ypmABBMLw=
Resources/Base.lproj/FunctionDescriptions.json
- g6L9Dgt4FDLJKJJ6yAfg5LpJpwY=
+ lZxNUBBUYjxQDFvccGuTQcOfxw4=
Resources/Base.lproj/LocalizedFixtures.json
- OKjIlrX1S4l8wE7wE58Ab++ypmY=
+ D6zXRY1zGn+ViL9vvsB1YWQ4DAw=
+
+ Resources/Base.lproj/TimeZoneAbbrieviations.json
+
+ jvQ9kvDAPNdTvzDyAz9BcEGLcyg=
Resources/Base.lproj/UnitDescriptions.json
@@ -22,7 +26,7 @@
Resources/Info.plist
- ElW8mSgOHibg7yGCz0+1kng5+4c=
+ jkob/3uv8bXL3BswimTw3pu+eZc=
Resources/de.lproj/FunctionDescriptions.json
@@ -37,7 +41,7 @@
hash
- H+XHQocCSfJdFLQxAQgwFHNvqkw=
+ ncIpcokr8qt14Wy4reevW8K18Ig=
optional
@@ -73,7 +77,7 @@
hash
- LQdAaicVvqJLLxsz1Fvh+Njd4R0=
+ pyX2HLmuHj2fRTpu3L2D42fy5QM=
optional
@@ -100,7 +104,7 @@
hash
- /CHaiRtPcDVA/7DhXnVisMzleeQ=
+ a03/nl/us+WbxknZfP121rjr3K8=
optional
@@ -146,7 +150,7 @@
hash2
- W+0OmU87opgVH/g4MtbVGdJm4+Mdb5Yo1bSM2VfyRe8=
+ 0uHxGz96qSJF3Bj+YXRBPH2Xm8f4te3AIXbbhOiDHPc=
Headers/SoulverCore.h
@@ -160,42 +164,42 @@
hash2
- Zuht07ASVcViFby1MgIAdXkwtUWE372VZZ4cIOUG0LY=
+ 2dFeEptrmlwPk7aEfUOLk6JYAD1Tdh/IAXef04aVcfA=
Modules/SoulverCore.swiftmodule/x86_64-apple-macos.swiftinterface
hash2
- ikzeYBPNa8FeBSuMmjDRCBOthHOPozu/rrC7GbrwMmk=
+ Ql6BxPsU3Yuk0UIZ8N1bMdmHJ6ow4WxgeXYBUN+MXyQ=
Modules/SoulverCore.swiftmodule/x86_64-apple-macos.swiftmodule
hash2
- Ls3rT9cbjLSq+KRHf65W2Nzv2plvFyfdc03WUe1E5mI=
+ mRb87nlq2z3v2c5Xib2q3j2vnHvf4+vdhdEFi83tX3Y=
Modules/SoulverCore.swiftmodule/x86_64.swiftdoc
hash2
- Zuht07ASVcViFby1MgIAdXkwtUWE372VZZ4cIOUG0LY=
+ 2dFeEptrmlwPk7aEfUOLk6JYAD1Tdh/IAXef04aVcfA=
Modules/SoulverCore.swiftmodule/x86_64.swiftinterface
hash2
- ikzeYBPNa8FeBSuMmjDRCBOthHOPozu/rrC7GbrwMmk=
+ Ql6BxPsU3Yuk0UIZ8N1bMdmHJ6ow4WxgeXYBUN+MXyQ=
Modules/SoulverCore.swiftmodule/x86_64.swiftmodule
hash2
- Ls3rT9cbjLSq+KRHf65W2Nzv2plvFyfdc03WUe1E5mI=
+ mRb87nlq2z3v2c5Xib2q3j2vnHvf4+vdhdEFi83tX3Y=
Modules/module.modulemap
@@ -209,21 +213,28 @@
hash2
- aQdbDAWTyWaMHr06FDdkLXJ1KEMLgn2IyNWrDuTVnFY=
+ CSmUHddJPFXMK9xl8Dc7pq5LO8Cjyl3yDWae/SMVpA8=
Resources/Base.lproj/FunctionDescriptions.json
hash2
- ScFb5P1Obi2p1xGbpHDhULLi6foVT9XluM/q2NRXLjY=
+ yC5BYOszy/7xLauxPsEccsTx/jfFuBRuJ+LCWq4+nC0=
Resources/Base.lproj/LocalizedFixtures.json
hash2
- MXmKvVFLjrrxmeXXEAPsJzSQIHWZurvBVZPvKAaIsOY=
+ O3c+nWUPnmVZpBVEG8lcN4or+z6WZQLR4YlA/gYz/mM=
+
+
+ Resources/Base.lproj/TimeZoneAbbrieviations.json
+
+ hash2
+
+ CGcnilnCPFpX3dNk0ISsdzY8sTSVjVd/fntEq5x3Arw=
Resources/Base.lproj/UnitDescriptions.json
@@ -237,7 +248,7 @@
hash2
- 6rl0p1dt6RZzZv+RJqi66GscOM8wpW8RF3EOl2M3db8=
+ KjAHK/LQb8ZILHRF4m+ChTGX7TlMSLett47zNGlyYqw=
Resources/de.lproj/FunctionDescriptions.json
@@ -253,7 +264,7 @@
hash2
- 0/E4VvdOz5w/eCD3I7eadUhS0sGceMCAqiYF104SBgc=
+ E9bUpw02i3xZCgjRdqbA8IY3WECdEbY25W5awNSCO8s=
optional
@@ -289,7 +300,7 @@
hash2
- ZxvuI2+tPUrLBji6Jd6o0T/CilYOZHpc4VXt9Qim/44=
+ P6SVoEEUuydvZK7nGjZ9qsblGWuvrGDQJX7yWS8g7fY=
optional
@@ -316,7 +327,7 @@
hash2
- AR/tiv2n8txef/qm54OHxy5tsQVKvqstslPaUZXdUGE=
+ e+H80xVUJ0DsiGPfhcQDPZqJYkLSO4xDBBsX07PgyzY=
optional