Minor fixes, tidy up FTS CHRS table a bit
This commit is contained in:
parent
b32dae9b48
commit
c6bde65be0
|
@ -375,26 +375,28 @@ function getCharacterSetIdentifierByEncoding(encodingName) {
|
||||||
return value ? `${value[0]} ${value[1]}` : encodingName.toUpperCase();
|
return value ? `${value[0]} ${value[1]}` : encodingName.toUpperCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// http://ftsc.org/docs/fts-5003.001
|
||||||
|
// http://www.unicode.org/L2/L1999/99325-N.htm
|
||||||
function getEncodingFromCharacterSetIdentifier(chrs) {
|
function getEncodingFromCharacterSetIdentifier(chrs) {
|
||||||
const ident = chrs.split(' ')[0].toUpperCase();
|
const ident = chrs.split(' ')[0].toUpperCase();
|
||||||
|
|
||||||
// :TODO: fill in the rest!!!
|
// :TODO: fill in the rest!!!
|
||||||
return {
|
return {
|
||||||
// level 1
|
// level 1
|
||||||
'ASCII' : 'iso-646-1',
|
'ASCII' : 'ascii', // ISO-646-1
|
||||||
'DUTCH' : 'iso-646',
|
'DUTCH' : 'ascii', // ISO-646
|
||||||
'FINNISH' : 'iso-646-10',
|
'FINNISH' : 'ascii', // ISO-646-10
|
||||||
'FRENCH' : 'iso-646',
|
'FRENCH' : 'ascii', // ISO-646
|
||||||
'CANADIAN' : 'iso-646',
|
'CANADIAN' : 'ascii', // ISO-646
|
||||||
'GERMAN' : 'iso-646',
|
'GERMAN' : 'ascii', // ISO-646
|
||||||
'ITALIAN' : 'iso-646',
|
'ITALIAN' : 'ascii', // ISO-646
|
||||||
'NORWEIG' : 'iso-646',
|
'NORWEIG' : 'ascii', // ISO-646
|
||||||
'PORTU' : 'iso-646',
|
'PORTU' : 'ascii', // ISO-646
|
||||||
'SPANISH' : 'iso-656',
|
'SPANISH' : 'iso-656',
|
||||||
'SWEDISH' : 'iso-646-10',
|
'SWEDISH' : 'ascii', // ISO-646-10
|
||||||
'SWISS' : 'iso-646',
|
'SWISS' : 'ascii', // ISO-646
|
||||||
'UK' : 'iso-646',
|
'UK' : 'ascii', // ISO-646
|
||||||
'ISO-10' : 'iso-646-10',
|
'ISO-10' : 'ascii', // ISO-646-10
|
||||||
|
|
||||||
// level 2
|
// level 2
|
||||||
'CP437' : 'cp437',
|
'CP437' : 'cp437',
|
||||||
|
|
|
@ -963,6 +963,15 @@ class QWKPacketWriter extends EventEmitter {
|
||||||
return `<${message.messageId}.${message.messageUuid}@${this.options.systemDomain}>`;
|
return `<${message.messageId}.${message.messageUuid}@${this.options.systemDomain}>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_encodeWithFallback(s, encoding) {
|
||||||
|
try {
|
||||||
|
return iconv.encode(s, encoding);
|
||||||
|
} catch (e) {
|
||||||
|
this.emit('warning', Errors.General(`Failed to encode buffer using ${encoding}; Falling back to 'ascii'`));
|
||||||
|
return iconv.encode(s, 'ascii');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
appendMessage(message) {
|
appendMessage(message) {
|
||||||
//
|
//
|
||||||
// Each message has to:
|
// Each message has to:
|
||||||
|
@ -1014,7 +1023,7 @@ class QWKPacketWriter extends EventEmitter {
|
||||||
|
|
||||||
const encoding = this._getEncoding(message);
|
const encoding = this._getEncoding(message);
|
||||||
|
|
||||||
const encodedMessage = iconv.encode(fullMessageBody, encoding);
|
const encodedMessage = this._encodeWithFallback(fullMessageBody, encoding);
|
||||||
|
|
||||||
//
|
//
|
||||||
// QWK spec wants line feeds as 0xe3 for some reason, so we'll have
|
// QWK spec wants line feeds as 0xe3 for some reason, so we'll have
|
||||||
|
@ -1504,11 +1513,11 @@ class QWKPacketWriter extends EventEmitter {
|
||||||
messageData.Editor = `ENiGMA 1/2 BBS FSE v${enigmaVersion}`;
|
messageData.Editor = `ENiGMA 1/2 BBS FSE v${enigmaVersion}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.headersDatStream.write(iconv.encode(`[${this.currentMessageOffset.toString(16)}]\r\n`, encoding));
|
this.headersDatStream.write(this._encodeWithFallback(`[${this.currentMessageOffset.toString(16)}]\r\n`, encoding));
|
||||||
|
|
||||||
for (let [name, value] of Object.entries(messageData)) {
|
for (let [name, value] of Object.entries(messageData)) {
|
||||||
if (value) {
|
if (value) {
|
||||||
this.headersDatStream.write(iconv.encode(`${name}: ${value}\r\n`, encoding));
|
this.headersDatStream.write(this._encodeWithFallback(`${name}: ${value}\r\n`, encoding));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue