mirror of
https://github.com/snachodog/just-the-docs.git
synced 2025-09-13 05:13:33 -06:00
Initial commit
This commit is contained in:
28
node_modules/postcss-value-parser/lib/index.js
generated
vendored
Normal file
28
node_modules/postcss-value-parser/lib/index.js
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
var parse = require('./parse');
|
||||
var walk = require('./walk');
|
||||
var stringify = require('./stringify');
|
||||
|
||||
function ValueParser(value) {
|
||||
if (this instanceof ValueParser) {
|
||||
this.nodes = parse(value);
|
||||
return this;
|
||||
}
|
||||
return new ValueParser(value);
|
||||
}
|
||||
|
||||
ValueParser.prototype.toString = function () {
|
||||
return Array.isArray(this.nodes) ? stringify(this.nodes) : '';
|
||||
};
|
||||
|
||||
ValueParser.prototype.walk = function (cb, bubble) {
|
||||
walk(this.nodes, cb, bubble);
|
||||
return this;
|
||||
};
|
||||
|
||||
ValueParser.unit = require('./unit');
|
||||
|
||||
ValueParser.walk = walk;
|
||||
|
||||
ValueParser.stringify = stringify;
|
||||
|
||||
module.exports = ValueParser;
|
242
node_modules/postcss-value-parser/lib/parse.js
generated
vendored
Normal file
242
node_modules/postcss-value-parser/lib/parse.js
generated
vendored
Normal file
@@ -0,0 +1,242 @@
|
||||
var openParentheses = '('.charCodeAt(0);
|
||||
var closeParentheses = ')'.charCodeAt(0);
|
||||
var singleQuote = '\''.charCodeAt(0);
|
||||
var doubleQuote = '"'.charCodeAt(0);
|
||||
var backslash = '\\'.charCodeAt(0);
|
||||
var slash = '/'.charCodeAt(0);
|
||||
var comma = ','.charCodeAt(0);
|
||||
var colon = ':'.charCodeAt(0);
|
||||
var star = '*'.charCodeAt(0);
|
||||
|
||||
module.exports = function (input) {
|
||||
var tokens = [];
|
||||
var value = input;
|
||||
|
||||
var next, quote, prev, token, escape, escapePos, whitespacePos;
|
||||
var pos = 0;
|
||||
var code = value.charCodeAt(pos);
|
||||
var max = value.length;
|
||||
var stack = [{ nodes: tokens }];
|
||||
var balanced = 0;
|
||||
var parent;
|
||||
|
||||
var name = '';
|
||||
var before = '';
|
||||
var after = '';
|
||||
|
||||
while (pos < max) {
|
||||
// Whitespaces
|
||||
if (code <= 32) {
|
||||
next = pos;
|
||||
do {
|
||||
next += 1;
|
||||
code = value.charCodeAt(next);
|
||||
} while (code <= 32);
|
||||
token = value.slice(pos, next);
|
||||
|
||||
prev = tokens[tokens.length - 1];
|
||||
if (code === closeParentheses && balanced) {
|
||||
after = token;
|
||||
} else if (prev && prev.type === 'div') {
|
||||
prev.after = token;
|
||||
} else if (code === comma || code === colon || code === slash && value.charCodeAt(next + 1) !== star) {
|
||||
before = token;
|
||||
} else {
|
||||
tokens.push({
|
||||
type: 'space',
|
||||
sourceIndex: pos,
|
||||
value: token
|
||||
});
|
||||
}
|
||||
|
||||
pos = next;
|
||||
|
||||
// Quotes
|
||||
} else if (code === singleQuote || code === doubleQuote) {
|
||||
next = pos;
|
||||
quote = code === singleQuote ? '\'' : '"';
|
||||
token = {
|
||||
type: 'string',
|
||||
sourceIndex: pos,
|
||||
quote: quote
|
||||
};
|
||||
do {
|
||||
escape = false;
|
||||
next = value.indexOf(quote, next + 1);
|
||||
if (~next) {
|
||||
escapePos = next;
|
||||
while (value.charCodeAt(escapePos - 1) === backslash) {
|
||||
escapePos -= 1;
|
||||
escape = !escape;
|
||||
}
|
||||
} else {
|
||||
value += quote;
|
||||
next = value.length - 1;
|
||||
token.unclosed = true;
|
||||
}
|
||||
} while (escape);
|
||||
token.value = value.slice(pos + 1, next);
|
||||
|
||||
tokens.push(token);
|
||||
pos = next + 1;
|
||||
code = value.charCodeAt(pos);
|
||||
|
||||
// Comments
|
||||
} else if (code === slash && value.charCodeAt(pos + 1) === star) {
|
||||
token = {
|
||||
type: 'comment',
|
||||
sourceIndex: pos
|
||||
};
|
||||
|
||||
next = value.indexOf('*/', pos);
|
||||
if (next === -1) {
|
||||
token.unclosed = true;
|
||||
next = value.length;
|
||||
}
|
||||
|
||||
token.value = value.slice(pos + 2, next);
|
||||
tokens.push(token);
|
||||
|
||||
pos = next + 2;
|
||||
code = value.charCodeAt(pos);
|
||||
|
||||
// Dividers
|
||||
} else if (code === slash || code === comma || code === colon) {
|
||||
token = value[pos];
|
||||
|
||||
tokens.push({
|
||||
type: 'div',
|
||||
sourceIndex: pos - before.length,
|
||||
value: token,
|
||||
before: before,
|
||||
after: ''
|
||||
});
|
||||
before = '';
|
||||
|
||||
pos += 1;
|
||||
code = value.charCodeAt(pos);
|
||||
|
||||
// Open parentheses
|
||||
} else if (openParentheses === code) {
|
||||
// Whitespaces after open parentheses
|
||||
next = pos;
|
||||
do {
|
||||
next += 1;
|
||||
code = value.charCodeAt(next);
|
||||
} while (code <= 32);
|
||||
token = {
|
||||
type: 'function',
|
||||
sourceIndex: pos - name.length,
|
||||
value: name,
|
||||
before: value.slice(pos + 1, next)
|
||||
};
|
||||
pos = next;
|
||||
|
||||
if (name === 'url' && code !== singleQuote && code !== doubleQuote) {
|
||||
next -= 1;
|
||||
do {
|
||||
escape = false;
|
||||
next = value.indexOf(')', next + 1);
|
||||
if (~next) {
|
||||
escapePos = next;
|
||||
while (value.charCodeAt(escapePos - 1) === backslash) {
|
||||
escapePos -= 1;
|
||||
escape = !escape;
|
||||
}
|
||||
} else {
|
||||
value += ')';
|
||||
next = value.length - 1;
|
||||
token.unclosed = true;
|
||||
}
|
||||
} while (escape);
|
||||
// Whitespaces before closed
|
||||
whitespacePos = next;
|
||||
do {
|
||||
whitespacePos -= 1;
|
||||
code = value.charCodeAt(whitespacePos);
|
||||
} while (code <= 32);
|
||||
if (pos !== whitespacePos + 1) {
|
||||
token.nodes = [{
|
||||
type: 'word',
|
||||
sourceIndex: pos,
|
||||
value: value.slice(pos, whitespacePos + 1)
|
||||
}];
|
||||
} else {
|
||||
token.nodes = [];
|
||||
}
|
||||
if (token.unclosed && whitespacePos + 1 !== next) {
|
||||
token.after = '';
|
||||
token.nodes.push({
|
||||
type: 'space',
|
||||
sourceIndex: whitespacePos + 1,
|
||||
value: value.slice(whitespacePos + 1, next)
|
||||
});
|
||||
} else {
|
||||
token.after = value.slice(whitespacePos + 1, next);
|
||||
}
|
||||
pos = next + 1;
|
||||
code = value.charCodeAt(pos);
|
||||
tokens.push(token);
|
||||
} else {
|
||||
balanced += 1;
|
||||
token.after = '';
|
||||
tokens.push(token);
|
||||
stack.push(token);
|
||||
tokens = token.nodes = [];
|
||||
parent = token;
|
||||
}
|
||||
name = '';
|
||||
|
||||
// Close parentheses
|
||||
} else if (closeParentheses === code && balanced) {
|
||||
pos += 1;
|
||||
code = value.charCodeAt(pos);
|
||||
|
||||
parent.after = after;
|
||||
after = '';
|
||||
balanced -= 1;
|
||||
stack.pop();
|
||||
parent = stack[balanced];
|
||||
tokens = parent.nodes;
|
||||
|
||||
// Words
|
||||
} else {
|
||||
next = pos;
|
||||
do {
|
||||
if (code === backslash) {
|
||||
next += 1;
|
||||
}
|
||||
next += 1;
|
||||
code = value.charCodeAt(next);
|
||||
} while (next < max && !(
|
||||
code <= 32 ||
|
||||
code === singleQuote ||
|
||||
code === doubleQuote ||
|
||||
code === comma ||
|
||||
code === colon ||
|
||||
code === slash ||
|
||||
code === openParentheses ||
|
||||
code === closeParentheses && balanced
|
||||
));
|
||||
token = value.slice(pos, next);
|
||||
|
||||
if (openParentheses === code) {
|
||||
name = token;
|
||||
} else {
|
||||
tokens.push({
|
||||
type: 'word',
|
||||
sourceIndex: pos,
|
||||
value: token
|
||||
});
|
||||
}
|
||||
|
||||
pos = next;
|
||||
}
|
||||
}
|
||||
|
||||
for (pos = stack.length - 1; pos; pos -= 1) {
|
||||
stack[pos].unclosed = true;
|
||||
}
|
||||
|
||||
return stack[0].nodes;
|
||||
};
|
41
node_modules/postcss-value-parser/lib/stringify.js
generated
vendored
Normal file
41
node_modules/postcss-value-parser/lib/stringify.js
generated
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
function stringifyNode(node, custom) {
|
||||
var type = node.type;
|
||||
var value = node.value;
|
||||
var buf;
|
||||
var customResult;
|
||||
|
||||
if (custom && (customResult = custom(node)) !== undefined) {
|
||||
return customResult;
|
||||
} else if (type === 'word' || type === 'space') {
|
||||
return value;
|
||||
} else if (type === 'string') {
|
||||
buf = node.quote || '';
|
||||
return buf + value + (node.unclosed ? '' : buf);
|
||||
} else if (type === 'comment') {
|
||||
return '/*' + value + (node.unclosed ? '' : '*/');
|
||||
} else if (type === 'div') {
|
||||
return (node.before || '') + value + (node.after || '');
|
||||
} else if (Array.isArray(node.nodes)) {
|
||||
buf = stringify(node.nodes);
|
||||
if (type !== 'function') {
|
||||
return buf;
|
||||
}
|
||||
return value + '(' + (node.before || '') + buf + (node.after || '') + (node.unclosed ? '' : ')');
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
function stringify(nodes, custom) {
|
||||
var result, i;
|
||||
|
||||
if (Array.isArray(nodes)) {
|
||||
result = '';
|
||||
for (i = nodes.length - 1; ~i; i -= 1) {
|
||||
result = stringifyNode(nodes[i], custom) + result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return stringifyNode(nodes, custom);
|
||||
}
|
||||
|
||||
module.exports = stringify;
|
41
node_modules/postcss-value-parser/lib/unit.js
generated
vendored
Normal file
41
node_modules/postcss-value-parser/lib/unit.js
generated
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
var minus = '-'.charCodeAt(0);
|
||||
var plus = '+'.charCodeAt(0);
|
||||
var dot = '.'.charCodeAt(0);
|
||||
|
||||
module.exports = function (value) {
|
||||
var pos = 0;
|
||||
var length = value.length;
|
||||
var dotted = false;
|
||||
var containsNumber = false;
|
||||
var code;
|
||||
var number = '';
|
||||
|
||||
while (pos < length) {
|
||||
code = value.charCodeAt(pos);
|
||||
|
||||
if (code >= 48 && code <= 57) {
|
||||
number += value[pos];
|
||||
containsNumber = true;
|
||||
} else if (code === dot) {
|
||||
if (dotted) {
|
||||
break;
|
||||
}
|
||||
dotted = true;
|
||||
number += value[pos];
|
||||
} else if (code === plus || code === minus) {
|
||||
if (pos !== 0) {
|
||||
break;
|
||||
}
|
||||
number += value[pos];
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
|
||||
pos += 1;
|
||||
}
|
||||
|
||||
return containsNumber ? {
|
||||
number: number,
|
||||
unit: value.slice(pos)
|
||||
} : false;
|
||||
};
|
18
node_modules/postcss-value-parser/lib/walk.js
generated
vendored
Normal file
18
node_modules/postcss-value-parser/lib/walk.js
generated
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
module.exports = function walk(nodes, cb, bubble) {
|
||||
var i, max, node, result;
|
||||
|
||||
for (i = 0, max = nodes.length; i < max; i += 1) {
|
||||
node = nodes[i];
|
||||
if (!bubble) {
|
||||
result = cb(node, i, nodes);
|
||||
}
|
||||
|
||||
if (result !== false && node.type === 'function' && Array.isArray(node.nodes)) {
|
||||
walk(node.nodes, cb, bubble);
|
||||
}
|
||||
|
||||
if (bubble) {
|
||||
cb(node, i, nodes);
|
||||
}
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user