implementing grayrest's suggested cleanup for object comprehensions

This commit is contained in:
Jeremy Ashkenas 2010-02-14 17:35:14 -05:00
parent e110042275
commit 7667e16732
6 changed files with 44 additions and 74 deletions

View File

@ -522,26 +522,24 @@
bnf = {};
tokens = [];
__a = grammar;
for (name in __a) {
for (name in __a) if (__hasProp.call(__a, name)) {
non_terminal = __a[name];
if (__hasProp.call(__a, name)) {
bnf[name] = (function() {
__b = []; __c = non_terminal;
for (__d = 0; __d < __c.length; __d++) {
option = __c[__d];
__b.push((function() {
__e = option[0].split(" ");
for (__f = 0; __f < __e.length; __f++) {
part = __e[__f];
!grammar[part] ? tokens.push(part) : null;
}
name === "Root" ? (option[1] = "return " + option[1]) : null;
return option;
}).call(this));
}
return __b;
}).call(this);
}
bnf[name] = (function() {
__b = []; __c = non_terminal;
for (__d = 0; __d < __c.length; __d++) {
option = __c[__d];
__b.push((function() {
__e = option[0].split(" ");
for (__f = 0; __f < __e.length; __f++) {
part = __e[__f];
!grammar[part] ? tokens.push(part) : null;
}
name === "Root" ? (option[1] = "return " + option[1]) : null;
return option;
}).call(this));
}
return __b;
}).call(this);
}
tokens = tokens.join(" ");
parser = new Parser({

View File

@ -38,11 +38,9 @@
klass.prototype = new __a();
klass.prototype.constructor = klass;
__b = props;
for (name in __b) {
for (name in __b) if (__hasProp.call(__b, name)) {
prop = __b[name];
if (__hasProp.call(__b, name)) {
((klass.prototype[name] = prop));
}
((klass.prototype[name] = prop));
}
return klass;
};
@ -1060,7 +1058,7 @@
return true;
},
compile_node: function compile_node(o) {
var body, body_dent, call, for_part, index, index_found, index_var, ivar, name, name_found, range, return_result, rvar, scope, set_result, source, source_part, step_part, svar, top_level, var_part, vars;
var body, body_dent, for_part, index, index_found, index_var, ivar, name, name_found, range, return_result, rvar, scope, set_result, source, source_part, step_part, svar, top_level, var_part, vars;
top_level = del(o, 'top') && !o.returns;
range = this.source instanceof ValueNode && this.source.base instanceof RangeNode && !this.source.properties.length;
source = range ? this.source.base : this.source;
@ -1088,7 +1086,7 @@
index_var = null;
source_part = svar + ' = ' + this.source.compile(o) + ';\n' + this.idt();
step_part = this.step ? ivar + ' += ' + this.step.compile(o) : ivar + '++';
for_part = this.object ? ivar + ' in ' + svar : ivar + ' = 0; ' + ivar + ' < ' + svar + '.length; ' + step_part;
for_part = ivar + ' = 0; ' + ivar + ' < ' + svar + '.length; ' + step_part;
if (name) {
var_part = body_dent + name + ' = ' + svar + '[' + ivar + '];\n';
}
@ -1116,11 +1114,7 @@
}
if (this.object) {
o.scope.assign('__hasProp', 'Object.prototype.hasOwnProperty', true);
call = new CallNode(new ValueNode(new LiteralNode('__hasProp'), [new AccessorNode(new LiteralNode('call'))]), [new LiteralNode(svar), new LiteralNode(ivar)]);
body = Expressions.wrap([new IfNode(call, Expressions.wrap([body]), null, {
statement: true
})
]);
for_part = ivar + ' in ' + svar + ') if (__hasProp.call(' + svar + ', ' + ivar + ')';
}
if (!(top_level)) {
return_result = '\n' + this.idt() + return_result + ';';

View File

@ -297,12 +297,10 @@
})(this));
unclosed = (function() {
__i = []; __j = levels;
for (key in __j) {
for (key in __j) if (__hasProp.call(__j, key)) {
value = __j[key];
if (__hasProp.call(__j, key)) {
if (value > 0) {
__i.push(key);
}
if (value > 0) {
__i.push(key);
}
}
return __i;
@ -329,11 +327,9 @@
stack = [];
debt = {};
__i = INVERSES;
for (key in __i) {
for (key in __i) if (__hasProp.call(__i, key)) {
val = __i[key];
if (__hasProp.call(__i, key)) {
((debt[key] = 0));
}
((debt[key] = 0));
}
return this.scan_tokens((function(__this) {
var __func = function(prev, token, post, i) {

View File

@ -79,12 +79,10 @@
var __a, __b, key, val;
return ((function() {
__a = []; __b = this.variables;
for (key in __b) {
for (key in __b) if (__hasProp.call(__b, key)) {
val = __b[key];
if (__hasProp.call(__b, key)) {
if (val === 'var') {
__a.push(key);
}
if (val === 'var') {
__a.push(key);
}
}
return __a;
@ -96,12 +94,10 @@
var __a, __b, key, val;
return ((function() {
__a = []; __b = this.variables;
for (key in __b) {
for (key in __b) if (__hasProp.call(__b, key)) {
val = __b[key];
if (__hasProp.call(__b, key)) {
if (val.assigned) {
__a.push([key, val.value]);
}
if (val.assigned) {
__a.push([key, val.value]);
}
}
return __a;

View File

@ -54,11 +54,9 @@
return __a;
}
__f = obj;
for (key in __f) {
for (key in __f) if (__hasProp.call(__f, key)) {
val = __f[key];
if (__hasProp.call(__f, key)) {
iterator.call(context, val, key, obj);
}
iterator.call(context, val, key, obj);
}
} catch (e) {
if (e !== breaker) {
@ -180,12 +178,10 @@
return _.indexOf(obj, target) !== -1;
}
__a = obj;
for (key in __a) {
for (key in __a) if (__hasProp.call(__a, key)) {
val = __a[key];
if (__hasProp.call(__a, key)) {
if (val === target) {
return true;
}
if (val === target) {
return true;
}
}
return false;
@ -528,11 +524,9 @@
return _.range(0, obj.length);
}
__a = []; __b = obj;
for (key in __b) {
for (key in __b) if (__hasProp.call(__b, key)) {
val = __b[key];
if (__hasProp.call(__b, key)) {
__a.push(key);
}
__a.push(key);
}
return __a;
};
@ -550,11 +544,9 @@
_.extend = function extend(destination, source) {
var __a, key, val;
__a = source;
for (key in __a) {
for (key in __a) if (__hasProp.call(__a, key)) {
val = __a[key];
if (__hasProp.call(__a, key)) {
destination[key] = val;
}
destination[key] = val;
}
return destination;
};

View File

@ -896,7 +896,7 @@ ForNode: exports.ForNode: inherit Node, {
index_var: null
source_part: svar + ' = ' + @source.compile(o) + ';\n' + @idt()
step_part: if @step then ivar + ' += ' + @step.compile(o) else ivar + '++'
for_part: if @object then ivar + ' in ' + svar else ivar + ' = 0; ' + ivar + ' < ' + svar + '.length; ' + step_part
for_part: ivar + ' = 0; ' + ivar + ' < ' + svar + '.length; ' + step_part
var_part: body_dent + name + ' = ' + svar + '[' + ivar + '];\n' if name
set_result: if rvar then @idt() + rvar + ' = []; ' else @idt()
return_result: rvar or ''
@ -910,13 +910,7 @@ ForNode: exports.ForNode: inherit Node, {
body: Expressions.wrap([new IfNode(@filter, body)])
if @object
o.scope.assign('__hasProp', 'Object.prototype.hasOwnProperty', true)
call: new CallNode(
new ValueNode(new LiteralNode('__hasProp'), [new AccessorNode(new LiteralNode('call'))])
[new LiteralNode(svar), new LiteralNode(ivar)]
)
body: Expressions.wrap([new IfNode(
call, Expressions.wrap([body]), null, {statement: true}
)])
for_part: ivar + ' in ' + svar + ') if (__hasProp.call(' + svar + ', ' + ivar + ')'
return_result: '\n' + @idt() + return_result + ';' unless top_level
body: body.compile(merge(o, {indent: body_dent, top: true}))
vars: if range then name else name + ', ' + ivar