keeweb/app/scripts/comp/auto-type/index.js

59 lines
1.8 KiB
JavaScript
Raw Normal View History

2016-04-08 17:40:00 +02:00
'use strict';
var AutoTypeParser = require('./auto-type-parser');
var Logger = require('../../util/logger');
var logger = new Logger('auto-type');
var AutoType = {
2016-04-09 10:41:52 +02:00
run: function(entry, sequence, obfuscate, callback) {
2016-04-08 17:40:00 +02:00
logger.debug('Start', sequence);
2016-04-09 11:17:01 +02:00
var that = this;
2016-04-08 17:40:00 +02:00
try {
var parser = new AutoTypeParser(sequence);
var runner = parser.parse();
2016-04-09 11:17:01 +02:00
logger.debug('Parsed', that.printOps(runner.ops));
2016-04-08 17:40:00 +02:00
runner.resolve(entry, function(err) {
if (err) {
2016-04-08 23:14:09 +02:00
logger.error('Resolve error', err);
2016-04-08 17:40:00 +02:00
return callback(err);
}
2016-04-09 11:17:01 +02:00
logger.debug('Resolved', that.printOps(runner.ops));
2016-04-09 10:41:52 +02:00
if (obfuscate) {
runner.obfuscate();
2016-04-09 11:17:01 +02:00
logger.debug('Obfuscated', that.printOps(runner.ops));
2016-04-09 10:41:52 +02:00
}
2016-04-08 17:40:00 +02:00
runner.run(function(err) {
if (err) {
logger.error('Run error', err);
return callback(err);
}
logger.debug('Complete');
return callback();
});
});
runner.run();
} catch (ex) {
logger.error('Parse error', ex);
return callback(ex);
}
2016-04-09 11:17:01 +02:00
},
printOps: function(ops) {
return '[' + ops.map(this.printOp, this).join(',') + ']';
},
printOp: function(op) {
var mod = op.mod ? Object.keys(op.mod).join('') : '';
if (op.type === 'group') {
return mod + this.printOps(op.value);
}
if (op.type === 'text') {
return mod + op.value.replace(/./g, '*');
}
return mod + op.type + ':' + op.value;
2016-04-08 17:40:00 +02:00
}
};
module.exports = AutoType;