refactor. misc fixes.
This commit is contained in:
parent
618ba14369
commit
44ca13c291
|
@ -44,28 +44,7 @@ function Program(options) {
|
||||||
this.terminal = process.env.TERM || 'xterm';
|
this.terminal = process.env.TERM || 'xterm';
|
||||||
|
|
||||||
if (options.tput) {
|
if (options.tput) {
|
||||||
this.tput = new Tput({
|
this.setupTput();
|
||||||
term: this.terminal,
|
|
||||||
extended: options.extended || false,
|
|
||||||
printf: options.printf || false
|
|
||||||
});
|
|
||||||
|
|
||||||
this.put = function() {
|
|
||||||
var args = Array.prototype.slice.call(arguments)
|
|
||||||
, cap = args.shift();
|
|
||||||
if (!this.tput[cap]) return;
|
|
||||||
return this.write(this.tput[cap].apply(this.tput, args));
|
|
||||||
};
|
|
||||||
|
|
||||||
Object.keys(this.tput).forEach(function(key) {
|
|
||||||
if (typeof self.tput[key] !== 'function') {
|
|
||||||
self.put[key] = self.tput[key];
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
self.put[key] = function() {
|
|
||||||
return self.write(self.tput[key].apply(self.tput, arguments));
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.listen();
|
this.listen();
|
||||||
|
@ -75,6 +54,45 @@ function Program(options) {
|
||||||
|
|
||||||
Program.prototype.__proto__ = EventEmitter.prototype;
|
Program.prototype.__proto__ = EventEmitter.prototype;
|
||||||
|
|
||||||
|
Program.prototype.setupTput = function(is) {
|
||||||
|
var self = this
|
||||||
|
, options = this.options;
|
||||||
|
|
||||||
|
var write = this.write.bind(this);
|
||||||
|
|
||||||
|
var tput = this.tput = new Tput({
|
||||||
|
term: this.terminal,
|
||||||
|
extended: options.extended || false,
|
||||||
|
printf: options.printf || false,
|
||||||
|
padding: options.padding || false
|
||||||
|
});
|
||||||
|
|
||||||
|
this.put = function() {
|
||||||
|
var args = Array.prototype.slice.call(arguments)
|
||||||
|
, cap = args.shift();
|
||||||
|
|
||||||
|
if (tput[cap]) {
|
||||||
|
return this.write(tput[cap].apply(tput, args));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Object.keys(tput).forEach(function(key) {
|
||||||
|
if (typeof tput[key] !== 'function') {
|
||||||
|
self.put[key] = tput[key];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (options.padding) {
|
||||||
|
self.put[key] = function() {
|
||||||
|
return tput._print(tput[key].apply(tput, arguments), write);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
self.put[key] = function() {
|
||||||
|
return self.write(tput[key].apply(tput, arguments));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
Program.prototype.term = function(is) {
|
Program.prototype.term = function(is) {
|
||||||
return this.terminal.indexOf(is) === 0;
|
return this.terminal.indexOf(is) === 0;
|
||||||
};
|
};
|
||||||
|
|
32
lib/tput.js
32
lib/tput.js
|
@ -174,11 +174,12 @@ Tput.prototype.parseTerminfo = function(data) {
|
||||||
if (this.extended) {
|
if (this.extended) {
|
||||||
i += h.strTableSize;
|
i += h.strTableSize;
|
||||||
l = data.length;
|
l = data.length;
|
||||||
if (i < l) {
|
if (i < l - 1) {
|
||||||
var extended = this.parseExtended(data.slice(i));
|
var extended = this.parseExtended(data.slice(i));
|
||||||
['bools', 'numbers', 'strings'].forEach(function(key) {
|
['bools', 'numbers', 'strings'].forEach(function(key) {
|
||||||
merge(info[key], extended[key]);
|
merge(info[key], extended[key]);
|
||||||
});
|
});
|
||||||
|
// info.extendedHexer = extended.header;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -445,7 +446,7 @@ Tput.prototype._compile = function(val) {
|
||||||
case 'string':
|
case 'string':
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return function() {};
|
return noop;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!val) {
|
if (!val) {
|
||||||
|
@ -566,7 +567,7 @@ Tput.prototype._compile = function(val) {
|
||||||
ch = '\\n';
|
ch = '\\n';
|
||||||
break;
|
break;
|
||||||
case 'l':
|
case 'l':
|
||||||
ch = '';
|
ch = '\\x85';
|
||||||
break;
|
break;
|
||||||
case 'r':
|
case 'r':
|
||||||
ch = '\\r';
|
ch = '\\r';
|
||||||
|
@ -1094,7 +1095,7 @@ function sprintf(src) {
|
||||||
// Should return here?
|
// Should return here?
|
||||||
param = isFinite(param)
|
param = isFinite(param)
|
||||||
? String.fromCharCode(param)
|
? String.fromCharCode(param)
|
||||||
: param[0];
|
: '';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1165,15 +1166,20 @@ function sprintf(src) {
|
||||||
Tput.alias = require('./alias');
|
Tput.alias = require('./alias');
|
||||||
|
|
||||||
// Bools
|
// Bools
|
||||||
merge(Tput.alias.bools, {
|
Tput.alias.bools.no_esc_ctlc.push('beehive_glitch');
|
||||||
'no_esc_ctlc': 'beehive_glitch',
|
Tput.alias.bools.dest_tabs_magic_smso.push('teleray_glitch');
|
||||||
'dest_tabs_magic_smso': 'teleray_glitch',
|
|
||||||
});
|
// merge(Tput.alias.bools, {
|
||||||
|
// 'no_esc_ctlc': 'beehive_glitch',
|
||||||
|
// 'dest_tabs_magic_smso': 'teleray_glitch',
|
||||||
|
// });
|
||||||
|
|
||||||
// Numbers
|
// Numbers
|
||||||
merge(Tput.alias.numbers, {
|
Tput.alias.numbers.micro_col_size.push('micro_char_size');
|
||||||
'micro_col_size': 'micro_char_size'
|
|
||||||
});
|
// merge(Tput.alias.numbers, {
|
||||||
|
// 'micro_col_size': 'micro_char_size'
|
||||||
|
// });
|
||||||
|
|
||||||
// Merge into one object
|
// Merge into one object
|
||||||
merge(Tput.alias, Tput.alias.bools);
|
merge(Tput.alias, Tput.alias.bools);
|
||||||
|
@ -1207,7 +1213,9 @@ Object.keys(Tput.alias).forEach(function(key) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
assert.equal(Tput.alias.exit_delete_mode[1], undefined);
|
assert.notEqual(Tput.alias.exit_delete_mode[1], 'ed');
|
||||||
|
// assert.notEqual(Tput.alias.lines[0], 'lines');
|
||||||
|
// assert.notEqual(Tput.alias.set_lr_margin[1], 'ML');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Terminfo Data
|
* Terminfo Data
|
||||||
|
|
Loading…
Reference in New Issue