buffer-layout
Version:
Translation between JavaScript values and Buffers
37 lines (28 loc) • 1.08 kB
JavaScript
const lo = require('./lib/Layout');
const raw = Buffer.from('41000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ '42430000000000000000000000000000000000000000000000000000000000000000000000000000'
+ '43444500000000000000000000000000000000000000000000000000000000000000000000000000'
+ '44454647000000000000000000000000000000000000000000000000000000000000000000000000',
'hex');
const lo1 = lo.seq(lo.seq(lo.u8(), 40), 4);
const lo2 = lo.seq(lo.cstr(), 4);
console.dir(lo1.decode(raw))
console.dir(lo2.decode(raw))
class ConstantDiscriminator extends lo.UnionDiscriminator {
constructor(tag, property) {
super(property);
this.tag = tag;
}
decode (b, offset) {
return this.tag;
}
encode (b, offset) {
return 0;
}
}
const discr = new ConstantDiscriminator(0);
const str40 = lo.union(discr, lo.blob(40));
str40.addVariant(discr.tag, lo.cstr(), 's');
const lo3 = lo.seq(str40, 4);
console.dir(lo3.decode(raw))
;