stop using termcap aliases.
This commit is contained in:
parent
b5026af628
commit
353794224c
107
lib/tput.js
107
lib/tput.js
|
@ -656,16 +656,14 @@ Tput.prototype.compile = function(info) {
|
|||
});
|
||||
|
||||
Object.keys(info.methods).forEach(function(key) {
|
||||
var alias = Tput.alias[key];
|
||||
if (!alias) return;
|
||||
if (!Array.isArray(alias)) alias = [alias];
|
||||
alias.forEach(function(alias) {
|
||||
if (info.methods[alias] && alias !== key && alias !== 'ML') {
|
||||
// We can ignore `lines` and `ML` here.
|
||||
throw new Error('Alias collision: ' + key + ' -> ' + alias);
|
||||
}
|
||||
if (!Tput.alias[key]) return;
|
||||
Tput.alias[key].forEach(function(alias) {
|
||||
info.methods[alias] = info.methods[key];
|
||||
});
|
||||
// Could just use:
|
||||
// Object.keys(Tput.aliasMap).forEach(function(key) {
|
||||
// info.methods[key] = info.methods[Tput.aliasMap[key]];
|
||||
// });
|
||||
});
|
||||
|
||||
return info;
|
||||
|
@ -1435,19 +1433,12 @@ Tput.prototype.translateTermcap = function(info) {
|
|||
});
|
||||
|
||||
// Separate aliases for termcap
|
||||
var talias = (function() {
|
||||
var alias = Tput.alias
|
||||
, out = {};
|
||||
var map = (function() {
|
||||
var out = {};
|
||||
|
||||
Object.keys(alias).forEach(function(key) {
|
||||
var a = alias[key]
|
||||
, n = a.slice();
|
||||
|
||||
if (!a._termcapRemoved) {
|
||||
n.splice(1, 1);
|
||||
}
|
||||
|
||||
out[a.termcap] = [key].concat(n);
|
||||
Object.keys(Tput.alias).forEach(function(key) {
|
||||
var aliases = Tput.alias[key];
|
||||
out[aliases.termcap] = key;
|
||||
});
|
||||
|
||||
return out;
|
||||
|
@ -1461,8 +1452,8 @@ Tput.prototype.translateTermcap = function(info) {
|
|||
if (key === 'strings') {
|
||||
info.strings[cap] = self._captoinfo(cap, info.strings[cap], 1);
|
||||
}
|
||||
if (talias[cap]) {
|
||||
out[key][talias[cap][0]] = info[key][cap];
|
||||
if (map[cap]) {
|
||||
out[key][map[cap]] = info[key][cap];
|
||||
} else {
|
||||
// NOTE: Possibly include all termcap names
|
||||
// in a separate alias.js file. Some are
|
||||
|
@ -2274,62 +2265,25 @@ function sprintf(src) {
|
|||
* Aliases
|
||||
*/
|
||||
|
||||
Tput.alias = require('./alias');
|
||||
Tput._alias = require('./alias');
|
||||
|
||||
Tput.alias = {};
|
||||
|
||||
['bools', 'numbers', 'strings'].forEach(function(type) {
|
||||
Object.keys(Tput._alias[type]).forEach(function(key) {
|
||||
var aliases = Tput._alias[type][key];
|
||||
Tput.alias[key] = [aliases[0]];
|
||||
Tput.alias[key].terminfo = aliases[0];
|
||||
Tput.alias[key].termcap = aliases[1];
|
||||
});
|
||||
});
|
||||
|
||||
// Bools
|
||||
Tput.alias.bools.no_esc_ctlc.push('beehive_glitch');
|
||||
Tput.alias.bools.dest_tabs_magic_smso.push('teleray_glitch');
|
||||
Tput.alias.no_esc_ctlc.push('beehive_glitch');
|
||||
Tput.alias.dest_tabs_magic_smso.push('teleray_glitch');
|
||||
|
||||
// Numbers
|
||||
Tput.alias.numbers.micro_col_size.push('micro_char_size');
|
||||
|
||||
// Merge into one object
|
||||
merge(Tput.alias, Tput.alias.bools);
|
||||
delete Tput.alias.bools;
|
||||
|
||||
merge(Tput.alias, Tput.alias.numbers);
|
||||
delete Tput.alias.numbers;
|
||||
|
||||
merge(Tput.alias, Tput.alias.strings);
|
||||
delete Tput.alias.strings;
|
||||
|
||||
// Make sure there are no collisions between terminfo names
|
||||
// and termcap names. Terminfo takes precedence.
|
||||
Tput._vec = Object.keys(Tput.alias).map(function(key) {
|
||||
return Array.isArray(Tput.alias[key])
|
||||
? Tput.alias[key][0]
|
||||
: Tput.alias[key];
|
||||
});
|
||||
|
||||
Object.keys(Tput.alias).forEach(function(key) {
|
||||
if (!Array.isArray(Tput.alias[key])) {
|
||||
return;
|
||||
}
|
||||
|
||||
var alias = Tput.alias[key]
|
||||
, tcap = alias[1];
|
||||
|
||||
alias.name = key;
|
||||
alias.terminfo = alias[0];
|
||||
alias.termcap = alias[1];
|
||||
|
||||
if (!tcap) return;
|
||||
|
||||
if (~Tput._vec.indexOf(tcap)) {
|
||||
alias._termcapRemoved = true;
|
||||
alias.splice(1, 1);
|
||||
}
|
||||
});
|
||||
|
||||
assert.notEqual(Tput.alias.exit_delete_mode[1], 'ed');
|
||||
assert.equal(Tput.alias.exit_delete_mode.termcap, 'ed');
|
||||
// assert.notEqual(Tput.alias.lines[0], 'lines');
|
||||
// assert.notEqual(Tput.alias.set_lr_margin[1], 'ML');
|
||||
|
||||
// Possibly just ignore certain aliases like so:
|
||||
// Tput.alias.exit_delete_mode.ignore = 1;
|
||||
// Tput.alias.lines.ignore = 0;
|
||||
// Tput.alias.set_lr_margin.ignore = 1;
|
||||
Tput.alias.micro_col_size.push('micro_char_size');
|
||||
|
||||
/**
|
||||
* Feature Checking
|
||||
|
@ -2338,11 +2292,8 @@ assert.equal(Tput.alias.exit_delete_mode.termcap, 'ed');
|
|||
Tput.aliasMap = {};
|
||||
|
||||
Object.keys(Tput.alias).forEach(function(key) {
|
||||
var aliases = Array.isArray(Tput.alias[key])
|
||||
? Tput.alias[key]
|
||||
: [Tput.alias[key]];
|
||||
Tput.aliasMap[key] = key;
|
||||
aliases.forEach(function(k) {
|
||||
Tput.alias[key].forEach(function(k) {
|
||||
Tput.aliasMap[k] = key;
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue