Show More
Commit Description:
fig bugs in login report
Commit Description:
fig bugs in login report
References:
File last commit:
Show/Diff file:
Action:
node_modules/restructure/src/LazyArray.js
| 100 lines
| 2.8 KiB
| application/javascript
| JavascriptLexer
|
r789 | // Generated by CoffeeScript 1.7.1 | |||
(function() { | ||||
var ArrayT, LazyArray, LazyArrayT, NumberT, inspect, utils, | ||||
__hasProp = {}.hasOwnProperty, | ||||
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; | ||||
ArrayT = require('./Array'); | ||||
NumberT = require('./Number').Number; | ||||
utils = require('./utils'); | ||||
inspect = require('util').inspect; | ||||
LazyArrayT = (function(_super) { | ||||
__extends(LazyArrayT, _super); | ||||
function LazyArrayT() { | ||||
return LazyArrayT.__super__.constructor.apply(this, arguments); | ||||
} | ||||
LazyArrayT.prototype.decode = function(stream, parent) { | ||||
var length, pos, res; | ||||
pos = stream.pos; | ||||
length = utils.resolveLength(this.length, stream, parent); | ||||
if (this.length instanceof NumberT) { | ||||
parent = { | ||||
parent: parent, | ||||
_startOffset: pos, | ||||
_currentOffset: 0, | ||||
_length: length | ||||
}; | ||||
} | ||||
res = new LazyArray(this.type, length, stream, parent); | ||||
stream.pos += length * this.type.size(null, parent); | ||||
return res; | ||||
}; | ||||
LazyArrayT.prototype.size = function(val, ctx) { | ||||
if (val instanceof LazyArray) { | ||||
val = val.toArray(); | ||||
} | ||||
return LazyArrayT.__super__.size.call(this, val, ctx); | ||||
}; | ||||
LazyArrayT.prototype.encode = function(stream, val, ctx) { | ||||
if (val instanceof LazyArray) { | ||||
val = val.toArray(); | ||||
} | ||||
return LazyArrayT.__super__.encode.call(this, stream, val, ctx); | ||||
}; | ||||
return LazyArrayT; | ||||
})(ArrayT); | ||||
LazyArray = (function() { | ||||
function LazyArray(type, length, stream, ctx) { | ||||
this.type = type; | ||||
this.length = length; | ||||
this.stream = stream; | ||||
this.ctx = ctx; | ||||
this.base = this.stream.pos; | ||||
this.items = []; | ||||
} | ||||
LazyArray.prototype.get = function(index) { | ||||
var pos; | ||||
if (index < 0 || index >= this.length) { | ||||
return void 0; | ||||
} | ||||
if (this.items[index] == null) { | ||||
pos = this.stream.pos; | ||||
this.stream.pos = this.base + this.type.size(null, this.ctx) * index; | ||||
this.items[index] = this.type.decode(this.stream, this.ctx); | ||||
this.stream.pos = pos; | ||||
} | ||||
return this.items[index]; | ||||
}; | ||||
LazyArray.prototype.toArray = function() { | ||||
var i, _i, _ref, _results; | ||||
_results = []; | ||||
for (i = _i = 0, _ref = this.length; _i < _ref; i = _i += 1) { | ||||
_results.push(this.get(i)); | ||||
} | ||||
return _results; | ||||
}; | ||||
LazyArray.prototype.inspect = function() { | ||||
return inspect(this.toArray()); | ||||
}; | ||||
return LazyArray; | ||||
})(); | ||||
module.exports = LazyArrayT; | ||||
}).call(this); | ||||