UNPKG

1.29 kBJavaScriptView Raw
1var build,
2 cache,
3 definition,
4 fs = require('fs'),
5 _ = require('underscore'),
6 pegjs = require('pegjs');
7
8definition = fs.readFileSync('./definitions/message.pegjs', 'utf8');
9
10build = function(options) {
11 return pegjs.buildParser(_.template(definition, options));
12};
13
14cache = {};
15
16module.exports = {
17 parse: function(s) {
18 var components, control_characters, escape, fields, message, repeat, subcomponents, _ref;
19
20 control_characters = s.substring(3, 8);
21 _ref = control_characters.split(''), fields = _ref[0], components = _ref[1], repeat = _ref[2], escape = _ref[3], subcomponents = _ref[4];
22 if (!cache[control_characters]) {
23 cache[control_characters] = build({
24 fields: fields,
25 components: components,
26 repeat: repeat,
27 escape: escape,
28 subcomponents: subcomponents
29 });
30 }
31 message = cache[control_characters].parse(s);
32 return {
33 control_characters: {
34 fields: fields,
35 components: components,
36 repeat: repeat,
37 escape: escape,
38 subcomponents: subcomponents
39 },
40 message: message
41 };
42 }
43};