|
|
|
@ -50,9 +50,9 @@
|
|
|
|
|
hn = hn.slice(0, pos + hn.length - domain.length) + '.*';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( hn.endsWith(targetHostname) === false ) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if ( hn.endsWith(targetHostname) === false ) { return false; }
|
|
|
|
|
let pos = hn.length - targetHostname.length;
|
|
|
|
|
if ( pos !== 0 && hn.charAt(pos - 1) !== '.' ) { return false; }
|
|
|
|
|
}
|
|
|
|
|
targetHostname = condition.slice(i + 1).trim();
|
|
|
|
|
if ( targetHostname === '*' ) { return true; }
|
|
|
|
@ -94,9 +94,10 @@
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var fromString = function(raw) {
|
|
|
|
|
var recipeName,
|
|
|
|
|
let recipeName,
|
|
|
|
|
recipeCondition,
|
|
|
|
|
recipeRuleset;
|
|
|
|
|
let reComment = /^[!#]/;
|
|
|
|
|
let rawHeader = raw.slice(0, 1024);
|
|
|
|
|
if ( reValidRecipeFile.test(rawHeader) === false ) { return; }
|
|
|
|
|
let maintainer = authorFromHeader(rawHeader);
|
|
|
|
@ -118,11 +119,12 @@
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
recipeName = undefined;
|
|
|
|
|
recipeCondition = undefined;
|
|
|
|
|
}
|
|
|
|
|
if ( lineIter.eot() && recipeName === undefined ) { break; }
|
|
|
|
|
if ( line.length === 0 ) { continue; }
|
|
|
|
|
let c = line.charCodeAt(0);
|
|
|
|
|
if ( c === 0x23 /* '#' */ || c === 0x21 /* '!' */ ) { continue; }
|
|
|
|
|
let isComment = reComment.test(line);
|
|
|
|
|
if ( isComment && recipeCondition === undefined ) { continue; }
|
|
|
|
|
if ( recipeName === undefined ) {
|
|
|
|
|
recipeName = line;
|
|
|
|
|
recipeCondition = undefined;
|
|
|
|
@ -136,7 +138,7 @@
|
|
|
|
|
if ( recipeRuleset.length !== 0 ) {
|
|
|
|
|
recipeRuleset += '\n';
|
|
|
|
|
}
|
|
|
|
|
recipeRuleset += toASCII(line);
|
|
|
|
|
recipeRuleset += isComment ? line : toASCII(line);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -163,7 +165,9 @@
|
|
|
|
|
let tMatrix = µm.tMatrix;
|
|
|
|
|
let pMatrix = µm.pMatrix;
|
|
|
|
|
let mustPersist = false;
|
|
|
|
|
let reComment = /^[!#]/;
|
|
|
|
|
for ( let rule of details.ruleset.split('\n') ) {
|
|
|
|
|
if ( reComment.test(rule) ) { continue; }
|
|
|
|
|
let parts = rule.split(/\s+/);
|
|
|
|
|
if ( parts.length < 2 ) { continue; }
|
|
|
|
|
let f0 = parts[0];
|
|
|
|
@ -227,10 +231,13 @@
|
|
|
|
|
api.statuses = function(details) {
|
|
|
|
|
let pMatrix = µMatrix.pMatrix,
|
|
|
|
|
tMatrix = µMatrix.tMatrix;
|
|
|
|
|
let reComment = /^[!#]/;
|
|
|
|
|
for ( let recipe of details.recipes ) {
|
|
|
|
|
let ruleIter = new µMatrix.LineIterator(recipe.ruleset);
|
|
|
|
|
while ( ruleIter.eot() === false ) {
|
|
|
|
|
let parts = ruleIter.next().split(/\s+/);
|
|
|
|
|
let rule = ruleIter.next();
|
|
|
|
|
if ( reComment.test(rule) ) { continue; }
|
|
|
|
|
let parts = rule.split(/\s+/);
|
|
|
|
|
if (
|
|
|
|
|
recipe.mustCommit !== true &&
|
|
|
|
|
evaluateRuleParts(pMatrix, details.scope, parts)
|
|
|
|
|