Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | //implementation var registeredParsers = []; var Parser = require("./parser.js"); var defaultParser = require("./defaultParsers"); function registerParser (parser) { if (parser instanceof Parser && registeredParsers.indexOf(parser) === -1) { registeredParsers.push(parser); // TODO indexOf doesn't work with object references } } function getParser(columnTitle, param) { var inst, parser; function getParserByName(parserName) { var parser; registeredParsers.forEach(function(p){ if (p.getName() === parserName){ parser = p; } }); if (parser) { var inst = parser.clone(); return inst; } return new Parser(); //TODO remove new } columnTitle = columnTitle ? columnTitle : ''; registeredParsers.forEach(function(p) { if (p.test(columnTitle)) { parser=p; } }); if (parser) { inst = parser.clone(); inst.head = columnTitle; } else { inst = getParserByName("json", columnTitle); } inst.setParam(param); inst.initHead(columnTitle); return inst; } function addParser(name, regExp, parseFunc) { var parser = new Parser(name, regExp, parseFunc,false); //TODO remove new registerParser(parser); } function addSafeParser(parserPath) { //TODO impl } function initParsers(row, param) { var parsers = []; row.forEach(function (columnTitle) { parsers.push(getParser(columnTitle, param)); }); return parsers; } defaultParser.forEach(function (parserCfg){ //TODO refactor this addParser(parserCfg.name, parserCfg.regExp, parserCfg.parserFunc, parserCfg.processSafe); }); //module interfaces module.exports.addParser = addParser; module.exports.initParsers = initParsers; module.exports.getParser = getParser; |