digitalheir/bibliography-js

View on GitHub
depr/bibtex/parser/parser.js

Summary

Maintainability
F
4 days
Test Coverage
function id(x) {return x[0]; }

var isNumber = function(x) {return x.constructor === Number || (typeof x== 'object'&&x.type == 'number')};
var tok_id =              {test: function(x) {return typeof x === 'object' && x.type=='id'; }}
var entry_type_bib =      {test: function(x) {return typeof x === 'object' && x.type=='@bib'; }}
var entry_type_string =   {test: function(x) {return typeof x === 'object' && x.type=='@string'; }}
var entry_type_preamble = {test: function(x) {return typeof x === 'object' && x.type=='@preamble'; }}
var entry_type_comment =  {test: function(x) {return typeof x === 'object' && x.type=='@comment'; }}
var ws =                  {test: function(x) {return typeof x === 'object' && x.type=='ws';}}
var num =                 {test: isNumber}
var pound =     {literal: '#' }
var eq =        {literal: '=' }
var esc =       {literal: '\\' }
var paren_l =   {literal: '(' }
var paren_r =   {literal: ')' }
var brace_l =   {literal: '{' }
var brace_r =   {literal: '}' }
var quote_dbl = {literal: '"' }
var comma =     {literal: ',' }


function addToObj(obj, keyval){
  if(!keyval.type == 'keyval') throw new Error("Expected a keyval object");
  var key = keyval.key.toLowerCase();
      if(obj.fields[key]) {
      console.log("WARNING: field "+key+ " was already defined on object "+obj._id+". Ignoring this value.");
      return;
    }else{
      obj.fields[key]=keyval.value;
      return obj;
    }
}

function joinTokens(arr){
    var strs = [];
    for(var i=0;i<arr.length;i++){
      if(typeof arr[i] == 'object'){
        if(!arr[i].string) throw new Error("Expected token to have a string field called 'string' in object "+JSON.stringify(arr[i]));
        strs.push(arr[i].string);
      } else if(typeof arr[i] == 'string' || typeof arr[i] == 'number'){
        strs.push(arr[i]);
      } else throw new Error("Could not handle token "+JSON.stringify(arr[i]) +" in array "+JSON.stringify(arr));
    }
    return strs.join('');
}
export default{
    ParserRules: [
    {"name": "main$ebnf$1", "symbols": ["non_entry"], "postprocess": id},
    {"name": "main$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}},
    {"name": "main$ebnf$2", "symbols": []},
    {"name": "main$ebnf$2$subexpression$1$ebnf$1", "symbols": ["non_entry"], "postprocess": id},
    {"name": "main$ebnf$2$subexpression$1$ebnf$1", "symbols": [], "postprocess": function(d) {return null;}},
    {"name": "main$ebnf$2$subexpression$1", "symbols": ["entry", "main$ebnf$2$subexpression$1$ebnf$1"]},
    {"name": "main$ebnf$2", "symbols": ["main$ebnf$2$subexpression$1", "main$ebnf$2"], "postprocess": function arrconcat(d) {return [d[0]].concat(d[1]);}},
    {"name": "main", "symbols": ["main$ebnf$1", "main$ebnf$2"], "postprocess":
        function (data, location, reject) {
          var comments = [];
          var entries = [];
          //console.log(JSON.stringify(data));
          if(data[0]) comments.push(data[0]);
          for(var i=0;i < data[1].length;i++){
           entries.push(data[1][i][0]);
           if(data[1][i][1]) comments.push(data[1][i][1]);
          }
          return {comments: comments, entries: entries};
        }
                                                         },
    {"name": "_$ebnf$1", "symbols": []},
    {"name": "_$ebnf$1", "symbols": [ws, "_$ebnf$1"], "postprocess": function arrconcat(d) {return [d[0]].concat(d[1]);}},
    {"name": "_", "symbols": ["_$ebnf$1"]},
    {"name": "entry_decl$subexpression$1", "symbols": [entry_type_bib]},
    {"name": "entry_decl$subexpression$1", "symbols": [entry_type_string]},
    {"name": "entry_decl$subexpression$1", "symbols": [entry_type_preamble]},
    {"name": "entry_decl$subexpression$1", "symbols": [entry_type_comment]},
    {"name": "entry_decl", "symbols": ["entry_decl$subexpression$1"], "postprocess": function (data, location, reject) { return data[0][0]; }},
    {"name": "entry$subexpression$1", "symbols": ["bib_entry"]},
    {"name": "entry$subexpression$1", "symbols": ["string_entry"]},
    {"name": "entry$subexpression$1", "symbols": ["preamble_entry"]},
    {"name": "entry$subexpression$1", "symbols": ["comment_entry"]},
    {"name": "entry", "symbols": ["entry$subexpression$1"], "postprocess": function (data, location, reject) { return data[0][0]; }},
    {"name": "comment$ebnf$1", "symbols": []},
    {"name": "comment$ebnf$1$subexpression$1", "symbols": ["entry_body_comment"]},
    {"name": "comment$ebnf$1$subexpression$1", "symbols": ["non_bracket"]},
    {"name": "comment$ebnf$1", "symbols": ["comment$ebnf$1$subexpression$1", "comment$ebnf$1"], "postprocess": function arrconcat(d) {return [d[0]].concat(d[1]);}},
    {"name": "comment", "symbols": ["comment$ebnf$1"], "postprocess":  function (data, location, reject) {
          var toeknz=[];
          for(var tk=0; tk < data[0].length; tk++)
            toeknz.push(data[0][tk][0]);
          return data[0];
        } },
    {"name": "entry_body_comment$subexpression$1$macrocall$2", "symbols": ["comment"]},
    {"name": "entry_body_comment$subexpression$1$macrocall$1", "symbols": [paren_l, "entry_body_comment$subexpression$1$macrocall$2", paren_r], "postprocess": function (data, location, reject) { return data[1]; }},
    {"name": "entry_body_comment$subexpression$1", "symbols": ["entry_body_comment$subexpression$1$macrocall$1"]},
    {"name": "entry_body_comment$subexpression$1$macrocall$4", "symbols": ["comment"]},
    {"name": "entry_body_comment$subexpression$1$macrocall$3", "symbols": [brace_l, "entry_body_comment$subexpression$1$macrocall$4", brace_r], "postprocess": function (data, location, reject) { return data[1]; }},
    {"name": "entry_body_comment$subexpression$1", "symbols": ["entry_body_comment$subexpression$1$macrocall$3"]},
    {"name": "entry_body_comment", "symbols": ["entry_body_comment$subexpression$1"], "postprocess": function (data, location, reject) { return data[0][0][0]; }},
    {"name": "entry_body_string$subexpression$1$macrocall$2", "symbols": ["keyval"]},
    {"name": "entry_body_string$subexpression$1$macrocall$1", "symbols": [paren_l, "_", "entry_body_string$subexpression$1$macrocall$2", "_", paren_r], "postprocess": function (data, location, reject) { return data[2]; }},
    {"name": "entry_body_string$subexpression$1", "symbols": ["entry_body_string$subexpression$1$macrocall$1"]},
    {"name": "entry_body_string$subexpression$1$macrocall$4", "symbols": ["keyval"]},
    {"name": "entry_body_string$subexpression$1$macrocall$3", "symbols": [brace_l, "_", "entry_body_string$subexpression$1$macrocall$4", "_", brace_r], "postprocess": function (data, location, reject) { return data[2]; }},
    {"name": "entry_body_string$subexpression$1", "symbols": ["entry_body_string$subexpression$1$macrocall$3"]},
    {"name": "entry_body_string", "symbols": ["entry_body_string$subexpression$1"], "postprocess": function (data, location, reject) { return data[0][0][0]; }},
    {"name": "entry_body_bib$subexpression$1$macrocall$2", "symbols": ["bib_content"]},
    {"name": "entry_body_bib$subexpression$1$macrocall$1", "symbols": [paren_l, "_", "entry_body_bib$subexpression$1$macrocall$2", "_", paren_r], "postprocess": function (data, location, reject) { return data[2]; }},
    {"name": "entry_body_bib$subexpression$1", "symbols": ["entry_body_bib$subexpression$1$macrocall$1"]},
    {"name": "entry_body_bib$subexpression$1$macrocall$4", "symbols": ["bib_content"]},
    {"name": "entry_body_bib$subexpression$1$macrocall$3", "symbols": [brace_l, "_", "entry_body_bib$subexpression$1$macrocall$4", "_", brace_r], "postprocess": function (data, location, reject) { return data[2]; }},
    {"name": "entry_body_bib$subexpression$1", "symbols": ["entry_body_bib$subexpression$1$macrocall$3"]},
    {"name": "entry_body_bib", "symbols": ["entry_body_bib$subexpression$1"], "postprocess":  function (data, location, reject) {
          var obj = data[0][0][0];
          return obj;
        } },
    {"name": "bib_content$ebnf$1", "symbols": []},
    {"name": "bib_content$ebnf$1$subexpression$1", "symbols": ["keyval", "_", comma, "_"]},
    {"name": "bib_content$ebnf$1", "symbols": ["bib_content$ebnf$1$subexpression$1", "bib_content$ebnf$1"], "postprocess": function arrconcat(d) {return [d[0]].concat(d[1]);}},
    {"name": "bib_content$ebnf$2$subexpression$1", "symbols": ["_", comma]},
    {"name": "bib_content$ebnf$2", "symbols": ["bib_content$ebnf$2$subexpression$1"], "postprocess": id},
    {"name": "bib_content$ebnf$2", "symbols": [], "postprocess": function(d) {return null;}},
    {"name": "bib_content", "symbols": ["key_string", "_", comma, "_", "bib_content$ebnf$1", "keyval", "bib_content$ebnf$2"], "postprocess":  function (data, location, reject) {
            var obj = {
             _id: data[0],
             fields:[]
            };
            var keyvals = data[4];
            for(var kv=0;kv<keyvals.length;kv++) {
              obj.fields.push(keyvals[kv][0]);
            }
            obj.fields.push(data[5]);
            return obj;
        } },
    {"name": "bib_entry", "symbols": [entry_type_bib, "_", "entry_body_bib"], "postprocess":  function (data, location, reject) {
           var obj = {
                       _id: data[2]._id,
                      };
           obj['@type'] = data[0].string;
           obj.fields = {};

           var keyvals = data[2].fields;
           for(var kv=0;kv<keyvals.length;kv++) {
             addToObj(obj, keyvals[kv]);
           }
           return obj;
        }},
    {"name": "string_entry", "symbols": [entry_type_string, "_", "entry_body_string"], "postprocess": function (data, location, reject) { return {type: 'string', data: data[2]}; }},
    {"name": "preamble_entry", "symbols": [entry_type_preamble, "_", "entry_body_comment"], "postprocess": function (data, location, reject) { return {type: 'preamble', data: data[2]}; }},
    {"name": "comment_entry", "symbols": [entry_type_comment, "_", "entry_body_comment"], "postprocess": function (data, location, reject) { return {type: 'comment', data: data[2]}; }},
    {"name": "keyval", "symbols": ["key_string", "_", eq, "_", "value_string"], "postprocess": function (data, location, reject) {return {type: 'keyval', key: data[0], value: data[4]};}},
    {"name": "braced_string$ebnf$1", "symbols": []},
    {"name": "braced_string$ebnf$1$subexpression$1", "symbols": ["non_brace"]},
    {"name": "braced_string$ebnf$1$subexpression$1", "symbols": ["braced_string"]},
    {"name": "braced_string$ebnf$1", "symbols": ["braced_string$ebnf$1$subexpression$1", "braced_string$ebnf$1"], "postprocess": function arrconcat(d) {return [d[0]].concat(d[1]);}},
    {"name": "braced_string", "symbols": [brace_l, "braced_string$ebnf$1", brace_r], "postprocess":  function (data, location, reject) {
          var tkz = [];
          for(var i in data[1]) tkz.push(data[1][i][0]);
          return {type:'braced', data:tkz};
        }

                                                                                                        },
    {"name": "quoted_string$ebnf$1", "symbols": []},
    {"name": "quoted_string$ebnf$1$subexpression$1", "symbols": ["escaped_quote"]},
    {"name": "quoted_string$ebnf$1$subexpression$1", "symbols": ["non_quote_non_brace"]},
    {"name": "quoted_string$ebnf$1$subexpression$1", "symbols": ["braced_string"]},
    {"name": "quoted_string$ebnf$1", "symbols": ["quoted_string$ebnf$1$subexpression$1", "quoted_string$ebnf$1"], "postprocess": function arrconcat(d) {return [d[0]].concat(d[1]);}},
    {"name": "quoted_string", "symbols": [quote_dbl, "quoted_string$ebnf$1", quote_dbl], "postprocess":  function (data, location, reject) {
          var tks = [];
          for(var i in data[1]) tks.push(data[1][i][0]);
          return {type:'quotedstring', data:tks};
        }
                                },
    {"name": "escaped_quote", "symbols": [esc, quote_dbl]},
    {"name": "non_quote_non_brace$subexpression$1", "symbols": [tok_id]},
    {"name": "non_quote_non_brace$subexpression$1", "symbols": [entry_type_bib]},
    {"name": "non_quote_non_brace$subexpression$1", "symbols": [entry_type_string]},
    {"name": "non_quote_non_brace$subexpression$1", "symbols": [entry_type_preamble]},
    {"name": "non_quote_non_brace$subexpression$1", "symbols": [entry_type_comment]},
    {"name": "non_quote_non_brace$subexpression$1", "symbols": [ws]},
    {"name": "non_quote_non_brace$subexpression$1", "symbols": [num]},
    {"name": "non_quote_non_brace$subexpression$1", "symbols": [pound]},
    {"name": "non_quote_non_brace$subexpression$1", "symbols": [eq]},
    {"name": "non_quote_non_brace$subexpression$1", "symbols": [esc]},
    {"name": "non_quote_non_brace$subexpression$1", "symbols": [paren_l]},
    {"name": "non_quote_non_brace$subexpression$1", "symbols": [paren_r]},
    {"name": "non_quote_non_brace$subexpression$1", "symbols": [comma]},
    {"name": "non_quote_non_brace", "symbols": ["non_quote_non_brace$subexpression$1"]},
    {"name": "key_string$ebnf$1", "symbols": ["stringreftoken"]},
    {"name": "key_string$ebnf$1", "symbols": ["stringreftoken", "key_string$ebnf$1"], "postprocess": function arrconcat(d) {return [d[0]].concat(d[1]);}},
    {"name": "key_string", "symbols": ["key_string$ebnf$1"], "postprocess": function (data, location, reject) { return joinTokens(data[0]).toLowerCase(); }},
    {"name": "value_string$subexpression$1$ebnf$1", "symbols": []},
    {"name": "value_string$subexpression$1$ebnf$1$subexpression$1", "symbols": ["_", pound, "_", "quoted_string_or_ref"]},
    {"name": "value_string$subexpression$1$ebnf$1", "symbols": ["value_string$subexpression$1$ebnf$1$subexpression$1", "value_string$subexpression$1$ebnf$1"], "postprocess": function arrconcat(d) {return [d[0]].concat(d[1]);}},
    {"name": "value_string$subexpression$1", "symbols": ["quoted_string_or_ref", "value_string$subexpression$1$ebnf$1"]},
    {"name": "value_string$subexpression$1", "symbols": ["braced_string"]},
    {"name": "value_string", "symbols": ["value_string$subexpression$1"], "postprocess":  function (data, location, reject) {
            //console.log("DATA",JSON.stringify(data));
            var match = data[0];
            if(match.length == 2){
             // quoted string
             var tokenz = [];
             tokenz.push(match[0]);
             for(var i=0;i<match[1].length;i++) tokenz.push(match[1][i][3]);
             return {type: 'quotedstringwrapper', data: tokenz};
            } else if(match[0].type == 'braced')
              return {type: 'bracedstringwrapper', data: match[0].data};
            //else if(isNumber(match[0]) return [match[0]];
            else throw new Error("Don't know how to handle value "+JSON.stringify(match[0]));
        }
                              },
    {"name": "quoted_string_or_ref$subexpression$1", "symbols": ["quoted_string"]},
    {"name": "quoted_string_or_ref$subexpression$1", "symbols": ["string_ref"]},
    {"name": "quoted_string_or_ref$subexpression$1", "symbols": [num]},
    {"name": "quoted_string_or_ref", "symbols": ["quoted_string_or_ref$subexpression$1"], "postprocess":  function (data, location, reject) {
          //console.log(data);
          if (data[0][0].type=='quotedstring') return data[0][0];
          else{return data[0][0];}
        }
                                                             },
    {"name": "string_ref$subexpression$1$ebnf$1", "symbols": []},
    {"name": "string_ref$subexpression$1$ebnf$1", "symbols": ["stringreftoken", "string_ref$subexpression$1$ebnf$1"], "postprocess": function arrconcat(d) {return [d[0]].concat(d[1]);}},
    {"name": "string_ref$subexpression$1", "symbols": ["stringreftoken_n_num", "string_ref$subexpression$1$ebnf$1"]},
    {"name": "string_ref", "symbols": ["string_ref$subexpression$1"], "postprocess": function (data, location, reject) { var str = data[0][0]+joinTokens(data[0][1]); return {stringref: str}; }},
    {"name": "stringreftoken$subexpression$1", "symbols": [esc]},
    {"name": "stringreftoken$subexpression$1", "symbols": [paren_l]},
    {"name": "stringreftoken$subexpression$1", "symbols": [paren_r]},
    {"name": "stringreftoken$subexpression$1", "symbols": [tok_id]},
    {"name": "stringreftoken$subexpression$1", "symbols": [num]},
    {"name": "stringreftoken$subexpression$1", "symbols": [entry_type_bib]},
    {"name": "stringreftoken$subexpression$1", "symbols": [entry_type_string]},
    {"name": "stringreftoken$subexpression$1", "symbols": [entry_type_preamble]},
    {"name": "stringreftoken$subexpression$1", "symbols": [entry_type_comment]},
    {"name": "stringreftoken", "symbols": ["stringreftoken$subexpression$1"], "postprocess": function (data, location, reject) { if(typeof data[0][0]=='object') {if(!data[0][0].string)throw new Error("Expected "+data[0]+"to have a 'string' field");return data[0][0].string;} else {if((!(typeof data[0][0] == 'string'||typeof data[0][0]=='number')))throw new Error("Expected "+data[0][0]+" to be a string");return data[0][0]; }}},
    {"name": "stringreftoken_n_num$subexpression$1", "symbols": [esc]},
    {"name": "stringreftoken_n_num$subexpression$1", "symbols": [paren_l]},
    {"name": "stringreftoken_n_num$subexpression$1", "symbols": [paren_r]},
    {"name": "stringreftoken_n_num$subexpression$1", "symbols": [tok_id]},
    {"name": "stringreftoken_n_num$subexpression$1", "symbols": [entry_type_bib]},
    {"name": "stringreftoken_n_num$subexpression$1", "symbols": [entry_type_string]},
    {"name": "stringreftoken_n_num$subexpression$1", "symbols": [entry_type_preamble]},
    {"name": "stringreftoken_n_num$subexpression$1", "symbols": [entry_type_comment]},
    {"name": "stringreftoken_n_num", "symbols": ["stringreftoken_n_num$subexpression$1"], "postprocess": function (data, location, reject) { if(typeof data[0][0]=='object') {if(!data[0][0].string)throw new Error("Expected "+data[0]+"to have a 'string' field");return data[0][0].string;} else {if((!(typeof data[0][0] == 'string'||typeof data[0][0]=='number')))throw new Error("Expected "+data[0][0]+" to be a string");return data[0][0]; }}},
    {"name": "non_brace$subexpression$1", "symbols": [esc]},
    {"name": "non_brace$subexpression$1", "symbols": [paren_l]},
    {"name": "non_brace$subexpression$1", "symbols": [paren_r]},
    {"name": "non_brace$subexpression$1", "symbols": [tok_id]},
    {"name": "non_brace$subexpression$1", "symbols": [quote_dbl]},
    {"name": "non_brace$subexpression$1", "symbols": [ws]},
    {"name": "non_brace$subexpression$1", "symbols": [num]},
    {"name": "non_brace$subexpression$1", "symbols": [comma]},
    {"name": "non_brace$subexpression$1", "symbols": [entry_type_bib]},
    {"name": "non_brace$subexpression$1", "symbols": [entry_type_string]},
    {"name": "non_brace$subexpression$1", "symbols": [entry_type_preamble]},
    {"name": "non_brace$subexpression$1", "symbols": [entry_type_comment]},
    {"name": "non_brace$subexpression$1", "symbols": [pound]},
    {"name": "non_brace$subexpression$1", "symbols": [eq]},
    {"name": "non_brace", "symbols": ["non_brace$subexpression$1"], "postprocess":  function (data, location, reject) {
          return data[0][0];
        }
        },
    {"name": "non_bracket$subexpression$1", "symbols": [esc]},
    {"name": "non_bracket$subexpression$1", "symbols": [tok_id]},
    {"name": "non_bracket$subexpression$1", "symbols": [quote_dbl]},
    {"name": "non_bracket$subexpression$1", "symbols": [ws]},
    {"name": "non_bracket$subexpression$1", "symbols": [num]},
    {"name": "non_bracket$subexpression$1", "symbols": [comma]},
    {"name": "non_bracket$subexpression$1", "symbols": [entry_type_bib]},
    {"name": "non_bracket$subexpression$1", "symbols": [entry_type_string]},
    {"name": "non_bracket$subexpression$1", "symbols": [entry_type_preamble]},
    {"name": "non_bracket$subexpression$1", "symbols": [entry_type_comment]},
    {"name": "non_bracket$subexpression$1", "symbols": [pound]},
    {"name": "non_bracket$subexpression$1", "symbols": [eq]},
    {"name": "non_bracket", "symbols": ["non_bracket$subexpression$1"], "postprocess":  function (data, location, reject) {
          return data[0][0];
        }
        },
    {"name": "non_entry$ebnf$1$subexpression$1", "symbols": ["escaped_entry"]},
    {"name": "non_entry$ebnf$1$subexpression$1", "symbols": ["escaped_escape"]},
    {"name": "non_entry$ebnf$1$subexpression$1", "symbols": ["escaped_non_esc_outside_entry"]},
    {"name": "non_entry$ebnf$1$subexpression$1", "symbols": ["non_esc_outside_entry"]},
    {"name": "non_entry$ebnf$1", "symbols": ["non_entry$ebnf$1$subexpression$1"]},
    {"name": "non_entry$ebnf$1$subexpression$2", "symbols": ["escaped_entry"]},
    {"name": "non_entry$ebnf$1$subexpression$2", "symbols": ["escaped_escape"]},
    {"name": "non_entry$ebnf$1$subexpression$2", "symbols": ["escaped_non_esc_outside_entry"]},
    {"name": "non_entry$ebnf$1$subexpression$2", "symbols": ["non_esc_outside_entry"]},
    {"name": "non_entry$ebnf$1", "symbols": ["non_entry$ebnf$1$subexpression$2", "non_entry$ebnf$1"], "postprocess": function arrconcat(d) {return [d[0]].concat(d[1]);}},
    {"name": "non_entry", "symbols": ["non_entry$ebnf$1"], "postprocess":  function (data, location, reject) {
        //console.log("non_entry",data);
        var tokens = [];
        for(var Ti = 0;Ti<data[0].length;Ti++) tokens.push(data[0][Ti][0]);
        return tokens;
        }
        },
    {"name": "escaped_escape", "symbols": [esc, esc], "postprocess": function (data, location, reject) { return '\\'; }},
    {"name": "escaped_entry", "symbols": [esc, "entry_decl"], "postprocess": function (data, location, reject) { return data[1]; }},
    {"name": "escaped_non_esc_outside_entry", "symbols": [esc, "non_esc_outside_entry"], "postprocess": function (data, location, reject) { return '\\' + data[1]; }},
    {"name": "non_esc_outside_entry$subexpression$1", "symbols": [tok_id]},
    {"name": "non_esc_outside_entry$subexpression$1", "symbols": [ws]},
    {"name": "non_esc_outside_entry$subexpression$1", "symbols": [num]},
    {"name": "non_esc_outside_entry$subexpression$1", "symbols": [pound]},
    {"name": "non_esc_outside_entry$subexpression$1", "symbols": [eq]},
    {"name": "non_esc_outside_entry$subexpression$1", "symbols": [paren_l]},
    {"name": "non_esc_outside_entry$subexpression$1", "symbols": [paren_r]},
    {"name": "non_esc_outside_entry$subexpression$1", "symbols": [brace_l]},
    {"name": "non_esc_outside_entry$subexpression$1", "symbols": [brace_r]},
    {"name": "non_esc_outside_entry$subexpression$1", "symbols": [quote_dbl]},
    {"name": "non_esc_outside_entry$subexpression$1", "symbols": [comma]},
    {"name": "non_esc_outside_entry", "symbols": ["non_esc_outside_entry$subexpression$1"], "postprocess":  function (data, location, reject) {
          //console.log("ooutside_entry",data[0][0]);
          return data[0][0];
        } }
]
  , ParserStart: "main"
}