diff --git a/src/ts/plugins/metrica.ts b/src/ts/plugins/metrica.ts index 428b43eb..20e522c1 100644 --- a/src/ts/plugins/metrica.ts +++ b/src/ts/plugins/metrica.ts @@ -1,15 +1,15 @@ -const convertion:[string,string,number][] = [ - ['kg', 'lbs', 2.20462], - ['m', 'ft', 3.28084], - ['cm', 'in', 0.393701], - ['mm', 'in', 0.0393701], - ['km', 'mi', 0.621371], - ['killogram', 'pound', 2.20462], - ['meter', 'foot', 3.28084], - ['centimeter', 'inch', 0.393701], - ['millimeter', 'inch', 0.0393701], - ['kilometer', 'mile', 0.621371], +const convertion:[string,string,number, boolean][] = [ + ['kg', 'lbs', 2.20462, true], + ['m', 'ft', 3.28084, true], + ['cm', 'inch', 0.393701, false], + ['mm', 'inch', 0.0393701, false], + ['km', 'mi', 0.621371, true], + ['killogram', 'pound', 2.20462, true], + ['meter', 'foot', 3.28084, true], + ['centimeter', 'inch', 0.393701, true], + ['millimeter', 'inch', 0.0393701, true], + ['kilometer', 'mile', 0.621371, true], ] export function metricaPlugin(data:string, toSystem:'metrics'|'imperial'){ @@ -20,12 +20,23 @@ export function metricaPlugin(data:string, toSystem:'metrics'|'imperial'){ [from, to] = [to, from]; ratio = 1 / ratio; } + if(!c[i][3]){ + if(toSystem === 'metrics'){ + continue; + } + } const reg = new RegExp(`(\\d+(?:\\.\\d+)?)\\s*${from}`, 'g'); data = data.replace(reg, (_, value) => { const result = parseFloat(value) * ratio; return `${result.toFixed(2)} ${to}`; }); } + //convert height like 5' 11'' to 180 cm + const reg = /(\d+)'?\s*(\d+)"?/g; + data = data.replace(reg, (_, feet, inch) => { + const result = parseFloat(feet) * 30.48 + parseFloat(inch) * 2.54; + return `${result.toFixed(2)} cm`; + }); return data } \ No newline at end of file