mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-29 07:05:13 -07:00
filters: all
This commit is contained in:
+27
-18
@@ -1,33 +1,43 @@
|
||||
const _ = require('lodash');
|
||||
|
||||
// quote related
|
||||
var singleQuoted = /'[^']*'/;
|
||||
var doubleQuoted = /"[^"]*"/;
|
||||
var quoteBalanced = new RegExp(`(?:${singleQuoted.source}|${doubleQuoted.source}|[^'"])*`);
|
||||
|
||||
var number = /-?\d+\.?\d*|\.?\d+/;
|
||||
var number = /(?:-?\d+\.?\d*|\.?\d+)/;
|
||||
var bool = /true|false/i;
|
||||
var identifier = /[a-zA-Z_$][a-zA-Z_$0-9]*/;
|
||||
var subscript = /\[\d+\]/;
|
||||
|
||||
var quoted = new RegExp(`${singleQuoted.source}|${doubleQuoted.source}`);
|
||||
var literal = new RegExp(`${quoted.source}|${bool.source}|${number.source}`, 'i');
|
||||
var quoted = new RegExp(`(?:${singleQuoted.source}|${doubleQuoted.source})`);
|
||||
var literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`, 'i');
|
||||
var variable = new RegExp(`${identifier.source}(?:\\.${identifier.source}|${subscript.source})*`);
|
||||
var value = new RegExp(`${literal.source}|${variable.source}`, 'i');
|
||||
var range = new RegExp(`\\((?:${value.source})\\.\\.(?:${value.source})\\)`);
|
||||
var rangeCapture = new RegExp(`\\((${value.source})\\.\\.(${value.source})\\)`);
|
||||
var variableOrRange = new RegExp(`${variable.source}|${range.source}`);
|
||||
|
||||
// range related
|
||||
var rangeLimit = new RegExp(`(?:${variable.source}|${number.source})`);
|
||||
var range = new RegExp(`\\(${rangeLimit.source}\\.\\.${rangeLimit.source}\\)`);
|
||||
var rangeCapture = new RegExp(`\\((${rangeLimit.source})\\.\\.(${rangeLimit.source})\\)`);
|
||||
|
||||
var value = new RegExp(`(?:${literal.source}|${variable.source}|${range.source})`, 'i');
|
||||
|
||||
// hash related
|
||||
var hash = new RegExp(`(?:${identifier.source})\\s*:\\s*(?:${value.source})`, 'g');
|
||||
var hashCapture = new RegExp(`(${identifier.source})\\s*:\\s*(${value.source})`, 'g');
|
||||
var filter = new RegExp(`(${identifier.source})(?:\\s*:\\s*(${value.source}))?`);
|
||||
var quoteBalanced = new RegExp(`(?:${singleQuoted.source}|${doubleQuoted.source}|[^'"])*`);
|
||||
|
||||
var tagLine = new RegExp(`^\\s*(${identifier.source})\\s*(.*)\\s*$`);
|
||||
var literalLine = new RegExp(`^(?:${literal.source})$`, 'i');
|
||||
var variableLine = new RegExp(`^(?:${variable.source})$`);
|
||||
var numberLine = new RegExp(`^(?:${number.source})$`);
|
||||
var boolLine = new RegExp(`^(?:${bool.source})$`, 'i');
|
||||
var quotedLine = new RegExp(`^(?:${quoted.source})$`);
|
||||
var rangeLine = new RegExp(`^(?:${rangeCapture.source})$`);
|
||||
var filterLine = new RegExp(`^(?:${filter.source})$`);
|
||||
var literalLine = new RegExp(`^${literal.source}$`, 'i');
|
||||
var variableLine = new RegExp(`^${variable.source}$`);
|
||||
var numberLine = new RegExp(`^${number.source}$`);
|
||||
var boolLine = new RegExp(`^${bool.source}$`, 'i');
|
||||
var quotedLine = new RegExp(`^${quoted.source}$`);
|
||||
var rangeLine = new RegExp(`^${rangeCapture.source}$`);
|
||||
|
||||
// filter related
|
||||
var valueList = new RegExp(`${value.source}(\\s*,\\s*${value.source})*`);
|
||||
var filter = new RegExp(`${identifier.source}(?:\\s*:\\s*${valueList.source})?`, 'g');
|
||||
var filterCapture = new RegExp(`(${identifier.source})(?:\\s*:\\s*(${valueList.source}))?`);
|
||||
var filterLine = new RegExp(`^${filterCapture.source}$`);
|
||||
|
||||
var operators = [
|
||||
/\s+or\s+/,
|
||||
@@ -35,7 +45,6 @@ var operators = [
|
||||
/==|!=|<=|>=|<|>|\s+contains\s+/
|
||||
];
|
||||
|
||||
|
||||
function isLiteral(str) {
|
||||
return literalLine.test(str);
|
||||
}
|
||||
@@ -64,7 +73,7 @@ function parseLiteral(str) {
|
||||
module.exports = {
|
||||
quoted, number, bool, literal, filter,
|
||||
hash, hashCapture,
|
||||
range, rangeCapture, variableOrRange,
|
||||
range, rangeCapture,
|
||||
identifier, value, quoteBalanced, operators,
|
||||
quotedLine, numberLine, boolLine, rangeLine, literalLine, filterLine, tagLine,
|
||||
isLiteral, isVariable, parseLiteral, isRange
|
||||
|
||||
Reference in New Issue
Block a user