summaryrefslogtreecommitdiff
path: root/node_modules/tailwindcss/lib/value-parser/unit.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/tailwindcss/lib/value-parser/unit.js')
-rw-r--r--node_modules/tailwindcss/lib/value-parser/unit.js86
1 files changed, 86 insertions, 0 deletions
diff --git a/node_modules/tailwindcss/lib/value-parser/unit.js b/node_modules/tailwindcss/lib/value-parser/unit.js
new file mode 100644
index 0000000..72c0976
--- /dev/null
+++ b/node_modules/tailwindcss/lib/value-parser/unit.js
@@ -0,0 +1,86 @@
+"use strict";
+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-number
+function 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-number
+module.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)
+ };
+};