| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | var minus = "-".charCodeAt(0);var plus = "+".charCodeAt(0);var dot = ".".charCodeAt(0);var exp = "e".charCodeAt(0);var EXP = "E".charCodeAt(0);// Check if three code points would start a number// https://www.w3.org/TR/css-syntax-3/#starts-with-a-numberfunction likeNumber(value) {  var code = value.charCodeAt(0);  var nextCode;  if (code === plus || code === minus) {    nextCode = value.charCodeAt(1);    if (nextCode >= 48 && nextCode <= 57) {      return true;    }    var nextNextCode = value.charCodeAt(2);    if (nextCode === dot && nextNextCode >= 48 && nextNextCode <= 57) {      return true;    }    return false;  }  if (code === dot) {    nextCode = value.charCodeAt(1);    if (nextCode >= 48 && nextCode <= 57) {      return true;    }    return false;  }  if (code >= 48 && code <= 57) {    return true;  }  return false;}// Consume a number// https://www.w3.org/TR/css-syntax-3/#consume-numbermodule.exports = function(value) {  var pos = 0;  var length = value.length;  var code;  var nextCode;  var nextNextCode;  if (length === 0 || !likeNumber(value)) {    return false;  }  code = value.charCodeAt(pos);  if (code === plus || code === minus) {    pos++;  }  while (pos < length) {    code = value.charCodeAt(pos);    if (code < 48 || code > 57) {      break;    }    pos += 1;  }  code = value.charCodeAt(pos);  nextCode = value.charCodeAt(pos + 1);  if (code === dot && nextCode >= 48 && nextCode <= 57) {    pos += 2;    while (pos < length) {      code = value.charCodeAt(pos);      if (code < 48 || code > 57) {        break;      }      pos += 1;    }  }  code = value.charCodeAt(pos);  nextCode = value.charCodeAt(pos + 1);  nextNextCode = value.charCodeAt(pos + 2);  if (    (code === exp || code === EXP) &&    ((nextCode >= 48 && nextCode <= 57) ||      ((nextCode === plus || nextCode === minus) &&        nextNextCode >= 48 &&        nextNextCode <= 57))  ) {    pos += nextCode === plus || nextCode === minus ? 3 : 2;    while (pos < length) {      code = value.charCodeAt(pos);      if (code < 48 || code > 57) {        break;      }      pos += 1;    }  }  return {    number: value.slice(0, pos),    unit: value.slice(pos)  };};
 |