App-Mxpress-PDF
view release on metacpan or search on metacpan
public/javascripts/ace/worker-javascript.js view on Meta::CPAN
return a;
}
function directives() {
var i, p, pn;
while (state.tokens.next.id === "(string)") {
p = peek(0);
if (p.id === "(endline)") {
i = 1;
do {
pn = peek(i++);
} while (pn.id === "(endline)");
if (pn.id === ";") {
p = pn;
} else if (pn.value === "[" || pn.value === ".") {
break;
} else if (!state.option.asi || pn.value === "(") {
warning("W033", state.tokens.next);
}
} else if (p.id === "." || p.id === "[") {
break;
} else if (p.id !== ";") {
warning("W033", p);
}
advance();
var directive = state.tokens.curr.value;
if (state.directive[directive] ||
(directive === "use strict" && state.option.strict === "implied")) {
warning("W034", state.tokens.curr, directive);
}
state.directive[directive] = true;
if (p.id === ";") {
advance(";");
}
}
if (state.isStrict()) {
if (!state.option["(explicitNewcap)"]) {
state.option.newcap = true;
}
state.option.undef = true;
}
}
function block(ordinary, stmt, isfunc, isfatarrow, iscase) {
var a,
b = inblock,
old_indent = indent,
m,
t,
line,
d;
inblock = ordinary;
t = state.tokens.next;
var metrics = state.funct["(metrics)"];
metrics.nestedBlockDepth += 1;
metrics.verifyMaxNestedBlockDepthPerFunction();
if (state.tokens.next.id === "{") {
advance("{");
state.funct["(scope)"].stack();
line = state.tokens.curr.line;
if (state.tokens.next.id !== "}") {
indent += state.option.indent;
while (!ordinary && state.tokens.next.from > indent) {
indent += state.option.indent;
}
if (isfunc) {
m = {};
for (d in state.directive) {
if (_.has(state.directive, d)) {
m[d] = state.directive[d];
}
}
directives();
if (state.option.strict && state.funct["(context)"]["(global)"]) {
if (!m["use strict"] && !state.isStrict()) {
warning("E007");
}
}
}
a = statements();
metrics.statementCount += a.length;
indent -= state.option.indent;
}
advance("}", t);
if (isfunc) {
state.funct["(scope)"].validateParams();
if (m) {
state.directive = m;
}
}
state.funct["(scope)"].unstack();
indent = old_indent;
} else if (!ordinary) {
if (isfunc) {
state.funct["(scope)"].stack();
m = {};
if (stmt && !isfatarrow && !state.inMoz()) {
error("W118", state.tokens.curr, "function closure expressions");
}
if (!stmt) {
for (d in state.directive) {
if (_.has(state.directive, d)) {
m[d] = state.directive[d];
public/javascripts/ace/worker-javascript.js view on Meta::CPAN
}
}
return {
id: "(template)",
type: "(template)",
tag: left
};
function end() {
if (state.tokens.curr.template && state.tokens.curr.tail &&
state.tokens.curr.context === ctx) return true;
var complete = (state.tokens.next.template && state.tokens.next.tail &&
state.tokens.next.context === ctx);
if (complete) advance();
return complete || state.tokens.next.isUnclosed;
}
}
function doFunction(options) {
var f, token, name, statement, classExprBinding, isGenerator, isArrow, ignoreLoopFunc;
var oldOption = state.option;
var oldIgnored = state.ignored;
if (options) {
name = options.name;
statement = options.statement;
classExprBinding = options.classExprBinding;
isGenerator = options.type === "generator";
isArrow = options.type === "arrow";
ignoreLoopFunc = options.ignoreLoopFunc;
}
state.option = Object.create(state.option);
state.ignored = Object.create(state.ignored);
state.funct = functor(name || state.nameStack.infer(), state.tokens.next, {
"(statement)": statement,
"(context)": state.funct,
"(arrow)": isArrow,
"(generator)": isGenerator
});
f = state.funct;
token = state.tokens.curr;
token.funct = state.funct;
functions.push(state.funct);
state.funct["(scope)"].stack("functionouter");
var internallyAccessibleName = name || classExprBinding;
if (internallyAccessibleName) {
state.funct["(scope)"].block.add(internallyAccessibleName,
classExprBinding ? "class" : "function", state.tokens.curr, false);
}
state.funct["(scope)"].stack("functionparams");
var paramsInfo = functionparams(options);
if (paramsInfo) {
state.funct["(params)"] = paramsInfo.params;
state.funct["(metrics)"].arity = paramsInfo.arity;
state.funct["(metrics)"].verifyMaxParametersPerFunction();
} else {
state.funct["(metrics)"].arity = 0;
}
if (isArrow) {
if (!state.inES6(true)) {
warning("W119", state.tokens.curr, "arrow function syntax (=>)", "6");
}
if (!options.loneArg) {
advance("=>");
}
}
block(false, true, true, isArrow);
if (!state.option.noyield && isGenerator &&
state.funct["(generator)"] !== "yielded") {
warning("W124", state.tokens.curr);
}
state.funct["(metrics)"].verifyMaxStatementsPerFunction();
state.funct["(metrics)"].verifyMaxComplexityPerFunction();
state.funct["(unusedOption)"] = state.option.unused;
state.option = oldOption;
state.ignored = oldIgnored;
state.funct["(last)"] = state.tokens.curr.line;
state.funct["(lastcharacter)"] = state.tokens.curr.character;
state.funct["(scope)"].unstack(); // also does usage and label checks
state.funct["(scope)"].unstack();
state.funct = state.funct["(context)"];
if (!ignoreLoopFunc && !state.option.loopfunc && state.funct["(loopage)"]) {
if (f["(isCapturing)"]) {
warning("W083", token);
}
}
return f;
}
function createMetrics(functionStartToken) {
return {
statementCount: 0,
nestedBlockDepth: -1,
ComplexityCount: 1,
arity: 0,
verifyMaxStatementsPerFunction: function() {
if (state.option.maxstatements &&
this.statementCount > state.option.maxstatements) {
warning("W071", functionStartToken, this.statementCount);
}
},
verifyMaxParametersPerFunction: function() {
if (_.isNumber(state.option.maxparams) &&
this.arity > state.option.maxparams) {
warning("W072", functionStartToken, this.arity);
}
},
verifyMaxNestedBlockDepthPerFunction: function() {
if (state.option.maxdepth &&
this.nestedBlockDepth > 0 &&
this.nestedBlockDepth === state.option.maxdepth + 1) {
warning("W073", null, this.nestedBlockDepth);
}
},
verifyMaxComplexityPerFunction: function() {
var max = state.option.maxcomplexity;
var cc = this.ComplexityCount;
if (max && cc > max) {
warning("W074", functionStartToken, cc);
}
}
};
}
function increaseComplexityCount() {
state.funct["(metrics)"].ComplexityCount += 1;
}
function checkCondAssignment(expr) {
var id, paren;
if (expr) {
id = expr.id;
paren = expr.paren;
if (id === "," && (expr = expr.exprs[expr.exprs.length - 1])) {
id = expr.id;
paren = paren || expr.paren;
}
}
switch (id) {
case "=":
case "+=":
case "-=":
case "*=":
case "%=":
case "&=":
case "|=":
case "^=":
case "/=":
if (!paren && !state.option.boss) {
warning("W084");
}
}
}
function checkProperties(props) {
if (state.inES5()) {
for (var name in props) {
if (props[name] && props[name].setterToken && !props[name].getterToken) {
warning("W078", props[name].setterToken);
}
}
}
}
function metaProperty(name, c) {
if (checkPunctuator(state.tokens.next, ".")) {
var left = state.tokens.curr.id;
advance(".");
var id = identifier();
state.tokens.curr.isMetaProperty = true;
if (name !== id) {
error("E057", state.tokens.prev, left, id);
} else {
c();
}
return state.tokens.curr;
( run in 1.183 second using v1.01-cache-2.11-cpan-e1769b4cff6 )