cssx-framework
Advanced tools
Comparing version
{ | ||
"name": "cssx-framework", | ||
"version": "0.0.18", | ||
"version": "0.0.19", | ||
"description": "A CSS driven web framework that compiles semi-standard CSS into HTML content + styles at runtime", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -8,4 +8,16 @@ import { ariaAttributes } from 'aria-attributes' | ||
const GET_PROPERTY_VALUE_REGEX = /\:\s*(.*)\s*\;/ | ||
const GET_PROPERTY_VALUE_REGEX_TEXT = /\:\s*(.*)\s*\;/ | ||
const GET_PROPERTY_VALUE_REGEX = /[^:\s][^:\n]*$/ | ||
const getRegex = (text) => | ||
text.split(CHARS.COLON).length - 1 > 1 || !text.includes(CHARS.DOUBLE_QUOTE) | ||
? { | ||
string: GET_PROPERTY_VALUE_REGEX_TEXT, | ||
index: 1 | ||
} | ||
: { | ||
string: GET_PROPERTY_VALUE_REGEX, | ||
index: 0 | ||
} | ||
/** | ||
@@ -19,3 +31,3 @@ * Used to unescape strings that are wrapped in double quotes. | ||
const parseAttributeValue = (text) => | ||
JSON.parse(text.startsWith(CHARS.DOUBLE_QUOTE) ? text : `${CHARS.DOUBLE_QUOTE}${text}${CHARS.DOUBLE_QUOTE}`) | ||
JSON.parse(text.startsWith(CHARS.DOUBLE_QUOTE) ? text.substring(0, text.lastIndexOf(CHARS.DOUBLE_QUOTE) + 1) : `${CHARS.DOUBLE_QUOTE}${text}${CHARS.DOUBLE_QUOTE}`) | ||
@@ -68,7 +80,9 @@ /** | ||
.forEach(attribute => { | ||
var value = text.match(GET_PROPERTY_VALUE_REGEX)[1] | ||
var regex = getRegex(text) | ||
var value = (text.match(regex.string) ?? [])[regex.index] ?? '' | ||
html = { | ||
name: attribute, | ||
value: parseAttributeValue(value), | ||
type: 'attribute' | ||
type: 'attribute', | ||
isEndMultiline: value.trim().endsWith(`${CHARS.DOUBLE_QUOTE}${CHARS.SEMICOLON}`) | ||
} | ||
@@ -102,3 +116,4 @@ }) | ||
if (obj.name.includes(`${CHARS.DOUBLE_HYPHEN}text`)) { | ||
var value = obj.name.match(GET_PROPERTY_VALUE_REGEX)[1] | ||
var regex = getRegex(obj.name) | ||
var value = obj.name.match(regex.string)[regex.index] | ||
returnText = parseAttributeValue(value) | ||
@@ -105,0 +120,0 @@ } |
@@ -25,2 +25,3 @@ import { readFileSync } from 'fs' | ||
var mixins = [] | ||
var trackedMultilineAttribute = null | ||
@@ -40,2 +41,8 @@ var recursion = function(input) { | ||
if (trackedMultilineAttribute) | ||
treeNode = { | ||
...treeNode, | ||
name: `${CHARS.DOUBLE_HYPHEN}${trackedMultilineAttribute.name}${CHARS.COLON} ${treeNode.name}` | ||
} | ||
// If the current line is an import statement, process the file to retrieve any relevant mixins into memory | ||
@@ -57,2 +64,10 @@ // This block doesn't return anything because the import statement is not a part of the final tree, it's just providing code references | ||
if (trackedMultilineAttribute && treeNode.isEndMultiline) | ||
trackedMultilineAttribute = null | ||
if (treeNode.type === 'attribute' && treeNode.value === '') { | ||
trackedMultilineAttribute = treeNode | ||
return | ||
} | ||
// Add or remove parents from tracked hierarchy based on braces | ||
@@ -59,0 +74,0 @@ // If a mixin was the most recent parent being dropped from the list, add it to the list of known mixins |
28135
4.15%469
5.87%