From 3110820ce2335091bf7c1a03ed32c9b60c15f759 Mon Sep 17 00:00:00 2001 From: ache Date: Wed, 18 Sep 2019 01:35:26 +0200 Subject: Space a little the code --- dist/index.js | 16 +++++++++------- src/index.js | 14 +++++++++++++- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/dist/index.js b/dist/index.js index ab96cab..804591b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,7 +1,9 @@ 'use strict'; // A valid output which means nothing has been parsed. // Used as error return / invalid output -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } @@ -21,7 +23,7 @@ function parse(value, indexNext, userConfig) { var stopOnBrace = false; var errorDetected = false; - var config = _objectSpread({}, defaultConfig, userConfig); // Make defaultValue a function if it isn't + var config = _objectSpread({}, defaultConfig, {}, userConfig); // Make defaultValue a function if it isn't if (typeof config.defaultValue !== 'function') { @@ -173,12 +175,12 @@ function parse(value, indexNext, userConfig) { break; case 'class': - if (!prop.class) { - prop.class = []; + if (!prop["class"]) { + prop["class"] = []; } - if (prop.class.indexOf(labelFirst) < 0) { - prop.class.push(labelFirst); + if (prop["class"].indexOf(labelFirst) < 0) { + prop["class"].push(labelFirst); } break; @@ -201,7 +203,7 @@ function parse(value, indexNext, userConfig) { idSetByKey = true; } } else if (labelFirst === 'class' && Boolean(labelSecond)) { - prop.class.push(labelSecond); + prop["class"].push(labelSecond); } break; diff --git a/src/index.js b/src/index.js index 3983260..b78947c 100644 --- a/src/index.js +++ b/src/index.js @@ -11,8 +11,8 @@ const defaultConfig = { defaultValue: () => undefined, // Its a function }; -// Main function function parse(value, indexNext, userConfig) { +// Main function let letsEat = ''; let stopOnBrace = false; let errorDetected = false; @@ -52,8 +52,10 @@ function parse(value, indexNext, userConfig) { if (stopOnBrace && value[indexNext] !== '}') { errorDetected = true; } + return true; } + return value[indexNext] === '}' && stopOnBrace; }; @@ -73,6 +75,7 @@ function parse(value, indexNext, userConfig) { return shouldStop(); }; + const eatUntil = chars => { eaten = ''; @@ -111,6 +114,7 @@ function parse(value, indexNext, userConfig) { eaten += value.charAt(indexNext); indexNext++; } + // If we encounter an EOL, there is an error // We are waiting for a quote if (value[indexNext] === '\n' || value[indexNext] === '\r' || indexNext >= value.length) { @@ -145,6 +149,7 @@ function parse(value, indexNext, userConfig) { if (value.charAt(indexNext) !== q) { return nothingHappend; } + if (eatOne(q)) { return -1; } @@ -160,6 +165,7 @@ function parse(value, indexNext, userConfig) { } else { prop.id = prop.id || labelFirst; } + break; case 'class': if (!prop.class) { @@ -175,6 +181,7 @@ function parse(value, indexNext, userConfig) { if (!labelFirst) { return nothingHappend; } + if (!(labelFirst in prop)) { if (labelSecond === undefined) { // Here, we have an attribute without value // so it's user defined @@ -182,15 +189,18 @@ function parse(value, indexNext, userConfig) { } else { prop[labelFirst] = labelFirst === 'class' ? [labelSecond] : labelSecond; } + if (labelFirst === 'id') { idSetByKey = true; } } else if (labelFirst === 'class' && Boolean(labelSecond)) { prop.class.push(labelSecond); } + break; default: } + type = undefined; labelFirst = ''; labelSecond = undefined; @@ -231,6 +241,7 @@ function parse(value, indexNext, userConfig) { if (eatUntil('=\t\b\v  ') || !labelFirst) { break; } + if (value.charAt(indexNext) === '=' && type === 'key') { // Set labelSecond if (eatOne('=')) { break; @@ -258,6 +269,7 @@ function parse(value, indexNext, userConfig) { // Add the parsed attribute to the output prop with the ad hoc type addAttribute(); } + addAttribute(); if (stopOnBrace) { if (indexNext < value.length && value[indexNext] === '}') { -- cgit v1.2.3