Comments (3)
NVM, it still appears to be global for the whole parser. Fuck me...
from binary-parser.
I know this is probably too late for you, but hopefully it helps someone.
When Parser
invokes your formatter
, it does so with Function.prototype.apply()
and passes itself as the this
argument. As a result, the function is now running in the context of the Parser
and not the lexical context that you are expecting.
I addressed this by adding a $imports
property to Parser.prototype
where one could add anything they'd like to make available from within the Parser
's context. Basically, using the above example, you want something like this.
const Parser = require('binary-parser').Parser;
const moment = require('moment');
Parser.prototype.$imports = {
moment: moment
};
let time = function(timestamp) {
return this.$imports.moment(timestamp, 'YYMMDDHHmmssSS').format('YYYY-MM-DD HH:mm:ss.SS');
};
let Telegram = new Parser().string('timestamp', { encoding: 'hex', length: 7, formatter: time });
You can use this approach to inject pretty much whatever you want in there.
from binary-parser.
Here's what appears to be possible, if you want to add a property to specific Parser object, and not a global:
let opts = parser.encoderOpts;
opts.test = "test";
parser.encoderSetOptions(opts);
parser = parser.array(name, {
/* ... */
formatter: item => this.encoderOpts.test
});
(this would replace all objects there to "test", but it shows that it's indeed accessible this way)
[you might also be interested in related comment in #33]
from binary-parser.
Related Issues (20)
- Choice keyString returns entire string HOT 2
- Combining choice with array. HOT 4
- Reading array - unknown size in bytes HOT 2
- Directly embed parse result of wrapped object? HOT 3
- Error parsing TLV with variable length data (array, choice) HOT 5
- [HELP] looking for string tokens inside binary file - how to do this when length is unknown? HOT 3
- How to handle a field that is present depending on an earlier field HOT 2
- Maximum call stack size exceeded if parsing a lot of bit fields
- Allow async "wrapper" callbacks HOT 3
- Array containing arrays are not getting parsed HOT 2
- Building parsers programmatically (question) HOT 2
- Difference between bit8 and uint8 HOT 1
- Parse order is wrong with bit fields followed by nest
- Array with non 8bit alignment HOT 1
- Old array of strings work around no longer works due to typing HOT 1
- Referencing target buffer in parser
- Cleanup non issue
- Feature request
- How to use it in js HOT 3
- Turning Objects Back into Buffers? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from binary-parser.