{"version":3,"file":"properties-parser.min.js","sources":["../src/parseNumbersUnit.js","../src/parseBP.js","../src/parseMP.js"],"sourcesContent":["const Qty = require('js-quantities');\n\n/**\n * Parse a string that may contain min / max and unit values\n * @param {string} string\n * @param {object} [options={}]\n * @param {number} [options.defaultValue]\n * @param {string} [options.defaultUnit]\n * @param {string} [options.targetUnit]\n */\nexport function parseNumbersUnit(string = '', options = {}) {\n  const {\n    defaultUnit = undefined,\n    targetUnit = undefined,\n    defaultValue = undefined,\n  } = options;\n  let normalized = String(string).replace(/ /g, '').replace(/,/g, '.');\n  let splitter = /^([0-9.Ee-]*)([a-zA-Z °]*)$/;\n  if (!normalized.match(splitter)) {\n    throw Error(`Can not parseNumbersUnit of: ${string}`);\n  }\n\n  let numbers = normalized.replace(splitter, '$1');\n  let unit = normalized.replace(splitter, '$2').trim();\n\n  let low;\n  let high;\n\n  if (numbers === '') {\n    if (defaultValue) {\n      numbers = String(defaultValue).replace(/ /g, '');\n    } else {\n      throw Error(`Can not parseNumbersUnit of: ${string}`);\n    }\n  }\n\n  if (numbers.includes('--')) {\n    // -5--4\n    low = Number(numbers.split('--')[0]);\n    high = Number(`-${numbers.split('--')[1]}`);\n  } else if (numbers.startsWith('-')) {\n    // -5 or -1-1 (minus 1 to plus 1)\n    let subparts = numbers.split('-');\n    switch (subparts.length) {\n      case 2:\n        low = Number(numbers);\n        break;\n      case 3:\n        low = Number(`-${subparts[1]}`);\n        high = Number(+subparts[2]);\n        break;\n      default:\n        throw new Error(`Can not parse: ${string}`);\n    }\n  } else {\n    let subparts = numbers.split('-');\n    low = subparts[0] !== '' ? Number(subparts[0]) : undefined;\n    high = subparts[1] !== undefined ? Number(subparts[1]) : undefined;\n  }\n\n  if (!unit) unit = defaultUnit;\n\n  // Should we convert the unit\n  if (targetUnit) {\n    let convert = Qty.swiftConverter(\n      unit.replace(/°/g, 'temp'),\n      targetUnit.replace(/°/g, 'temp'),\n    );\n\n    if (low !== undefined) {\n      low = convert(low);\n    }\n    if (high !== undefined) {\n      high = convert(high);\n    }\n    unit = targetUnit;\n  }\n\n  return {\n    low,\n    high,\n    unit,\n  };\n}\n","import { parseNumbersUnit } from './parseNumbersUnit';\n\n/**\n *\n * @param {String} string\n * @param {object} [options={}]\n * @param {object} [options.temperature={}]\n * @param {string} [options.temperature.defaultUnit]\n * @param {string} [options.temperature.targetUnit]\n * @param {object} [options.pressure={}]\n * @param {number} [options.pressure.defaultValue]\n * @param {string} [options.pressure.defaultUnit]\n * @param {string} [options.pressure.targetUnit]\n */\nexport function parseBP(string, options = {}) {\n  let parts = String(string).replace(/ /g, '').replace(/,/g, '.').split(/[@/]/);\n\n  return {\n    temperature: parseNumbersUnit(parts[0], options.temperature),\n    pressure: parseNumbersUnit(parts[1], options.pressure),\n  };\n}\n","import { parseNumbersUnit } from './parseNumbersUnit';\n\n/**\n *\n * @param {String} string\n * @param {object} [options={}]\n * @param {string} [options.defaultUnit]\n * @param {string} [options.targetUnit]\n */\nexport function parseMP(string, options = {}) {\n  string = String(string).replace(/ /g, '').replace(/,/g, '.');\n\n  return parseNumbersUnit(string, options.temperature);\n}\n"],"names":["Qty","require","parseNumbersUnit","string","options","defaultUnit","targetUnit","defaultValue","normalized","String","replace","splitter","match","Error","low","high","numbers","unit","trim","includes","Number","split","startsWith","subparts","length","undefined","convert","swiftConverter","parts","temperature","pressure"],"mappings":"wPAAA,MAAMA,EAAMC,QAAQ,iBAUb,SAASC,EAAiBC,EAAS,GAAIC,EAAU,UAChDC,YACJA,EADIC,WAEJA,EAFIC,aAGJA,GACEH,MACAI,EAAaC,OAAON,GAAQO,QAAQ,KAAM,IAAIA,QAAQ,KAAM,KAC5DC,EAAW,kCACVH,EAAWI,MAAMD,SACdE,MAAO,gCAA+BV,SAM1CW,EACAC,EAJAC,EAAUR,EAAWE,QAAQC,EAAU,MACvCM,EAAOT,EAAWE,QAAQC,EAAU,MAAMO,UAK9B,KAAZF,EAAgB,KACdT,QAGIM,MAAO,gCAA+BV,KAF5Ca,EAAUP,OAAOF,GAAcG,QAAQ,KAAM,OAM7CM,EAAQG,SAAS,MAEnBL,EAAMM,OAAOJ,EAAQK,MAAM,MAAM,IACjCN,EAAOK,OAAQ,IAAGJ,EAAQK,MAAM,MAAM,WACjC,GAAIL,EAAQM,WAAW,KAAM,KAE9BC,EAAWP,EAAQK,MAAM,YACrBE,EAASC,aACV,EACHV,EAAMM,OAAOJ,cAEV,EACHF,EAAMM,OAAQ,IAAGG,EAAS,MAC1BR,EAAOK,QAAQG,EAAS,wBAGlB,IAAIV,MAAO,kBAAiBV,UAEjC,KACDoB,EAAWP,EAAQK,MAAM,KAC7BP,EAAsB,KAAhBS,EAAS,GAAYH,OAAOG,EAAS,SAAME,EACjDV,OAAuBU,IAAhBF,EAAS,GAAmBH,OAAOG,EAAS,SAAME,KAGtDR,IAAMA,EAAOZ,GAGdC,EAAY,KACVoB,EAAU1B,EAAI2B,eAChBV,EAAKP,QAAQ,KAAM,QACnBJ,EAAWI,QAAQ,KAAM,cAGfe,IAARX,IACFA,EAAMY,EAAQZ,SAEHW,IAATV,IACFA,EAAOW,EAAQX,IAEjBE,EAAOX,QAGF,CACLQ,IAAAA,EACAC,KAAAA,EACAE,KAAAA,aCnEG,SAAiBd,EAAQC,EAAU,QACpCwB,EAAQnB,OAAON,GAAQO,QAAQ,KAAM,IAAIA,QAAQ,KAAM,KAAKW,MAAM,cAE/D,CACLQ,YAAa3B,EAAiB0B,EAAM,GAAIxB,EAAQyB,aAChDC,SAAU5B,EAAiB0B,EAAM,GAAIxB,EAAQ0B,sBCV1C,SAAiB3B,EAAQC,EAAU,WAGjCF,EAFPC,EAASM,OAAON,GAAQO,QAAQ,KAAM,IAAIA,QAAQ,KAAM,KAExBN,EAAQyB"}