Show More
Commit Description:
prevent multiple place login using uuid cookie
Commit Description:
prevent multiple place login using uuid cookie
References:
File last commit:
Show/Diff file:
Action:
node_modules/restructure/src/Array.js
| 105 lines
| 2.8 KiB
| application/javascript
| JavascriptLexer
|
r789 | // Generated by CoffeeScript 1.7.1 | |||
(function() { | ||||
var ArrayT, NumberT, utils; | ||||
NumberT = require('./Number').Number; | ||||
utils = require('./utils'); | ||||
ArrayT = (function() { | ||||
function ArrayT(type, length, lengthType) { | ||||
this.type = type; | ||||
this.length = length; | ||||
this.lengthType = lengthType != null ? lengthType : 'count'; | ||||
} | ||||
ArrayT.prototype.decode = function(stream, parent) { | ||||
var ctx, i, length, pos, res, target, _i; | ||||
pos = stream.pos; | ||||
res = []; | ||||
ctx = parent; | ||||
if (this.length != null) { | ||||
length = utils.resolveLength(this.length, stream, parent); | ||||
} | ||||
if (this.length instanceof NumberT) { | ||||
Object.defineProperties(res, { | ||||
parent: { | ||||
value: parent | ||||
}, | ||||
_startOffset: { | ||||
value: pos | ||||
}, | ||||
_currentOffset: { | ||||
value: 0, | ||||
writable: true | ||||
}, | ||||
_length: { | ||||
value: length | ||||
} | ||||
}); | ||||
ctx = res; | ||||
} | ||||
if ((length == null) || this.lengthType === 'bytes') { | ||||
target = length != null ? stream.pos + length : (parent != null ? parent._length : void 0) ? parent._startOffset + parent._length : stream.length; | ||||
while (stream.pos < target) { | ||||
res.push(this.type.decode(stream, ctx)); | ||||
} | ||||
} else { | ||||
for (i = _i = 0; _i < length; i = _i += 1) { | ||||
res.push(this.type.decode(stream, ctx)); | ||||
} | ||||
} | ||||
return res; | ||||
}; | ||||
ArrayT.prototype.size = function(array, ctx) { | ||||
var item, size, _i, _len; | ||||
if (!array) { | ||||
return this.type.size(null, ctx) * utils.resolveLength(this.length, null, ctx); | ||||
} | ||||
size = 0; | ||||
if (this.length instanceof NumberT) { | ||||
size += this.length.size(); | ||||
ctx = { | ||||
parent: ctx | ||||
}; | ||||
} | ||||
for (_i = 0, _len = array.length; _i < _len; _i++) { | ||||
item = array[_i]; | ||||
size += this.type.size(item, ctx); | ||||
} | ||||
return size; | ||||
}; | ||||
ArrayT.prototype.encode = function(stream, array, parent) { | ||||
var ctx, i, item, ptr, _i, _len; | ||||
ctx = parent; | ||||
if (this.length instanceof NumberT) { | ||||
ctx = { | ||||
pointers: [], | ||||
startOffset: stream.pos, | ||||
parent: parent | ||||
}; | ||||
ctx.pointerOffset = stream.pos + this.size(array, ctx); | ||||
this.length.encode(stream, array.length); | ||||
} | ||||
for (_i = 0, _len = array.length; _i < _len; _i++) { | ||||
item = array[_i]; | ||||
this.type.encode(stream, item, ctx); | ||||
} | ||||
if (this.length instanceof NumberT) { | ||||
i = 0; | ||||
while (i < ctx.pointers.length) { | ||||
ptr = ctx.pointers[i++]; | ||||
ptr.type.encode(stream, ptr.val); | ||||
} | ||||
} | ||||
}; | ||||
return ArrayT; | ||||
})(); | ||||
module.exports = ArrayT; | ||||
}).call(this); | ||||