Switch to Renegade style color codes as default pipe code system

This commit is contained in:
Bryan Ashby 2015-12-21 18:07:03 -07:00
parent 727f9fdb1f
commit 3ffccc35da
4 changed files with 45 additions and 41 deletions

View File

@ -159,7 +159,7 @@ ClientTerminal.prototype.rawWrite = function(s) {
}; };
ClientTerminal.prototype.pipeWrite = function(s, spec) { ClientTerminal.prototype.pipeWrite = function(s, spec) {
spec = spec || 'enigma'; spec = spec || 'renegade';
var conv = { var conv = {
enigma : enigmaToAnsi, enigma : enigmaToAnsi,

View File

@ -7,10 +7,10 @@ var getPredefinedMCIValue = require('./predefined_mci.js').getPredefinedMCIValue
var assert = require('assert'); var assert = require('assert');
var _ = require('lodash'); var _ = require('lodash');
exports.pipeToAnsi = exports.enigmaToAnsi = enigmaToAnsi; exports.enigmaToAnsi = enigmaToAnsi;
exports.stripPipeCodes = exports.stripEnigmaCodes = stripEnigmaCodes; exports.stripPipeCodes = exports.stripEnigmaCodes = stripEnigmaCodes;
exports.pipeStrLen = exports.enigmaStrLen = enigmaStrLen; exports.pipeStrLen = exports.enigmaStrLen = enigmaStrLen;
exports.renegadeToAnsi = renegadeToAnsi; exports.pipeToAnsi = exports.renegadeToAnsi = renegadeToAnsi;
// :TODO: Not really happy with the module name of "color_codes". Would like something better // :TODO: Not really happy with the module name of "color_codes". Would like something better
@ -83,13 +83,13 @@ function enigmaStrLen(s) {
return stripEnigmaCodes(s).length; return stripEnigmaCodes(s).length;
} }
function renegadeToAnsi(s) { function renegadeToAnsi(s, client) {
if(-1 == s.indexOf('|')) { if(-1 == s.indexOf('|')) {
return s; // no pipe codes present return s; // no pipe codes present
} }
var result = ''; var result = '';
var re = /\|(\d{2}|\|)/g; var re = /\|([A-Z\d]{2}|\|)/g;
var m; var m;
var lastIndex = 0; var lastIndex = 0;
while((m = re.exec(s))) { while((m = re.exec(s))) {
@ -103,10 +103,12 @@ if(-1 == s.indexOf('|')) {
// convert to number // convert to number
val = parseInt(val, 10); val = parseInt(val, 10);
if(isNaN(val)) { if(isNaN(val)) {
val = 0; val = getPredefinedMCIValue(client, m[1]) || ('|' + m[1]); // value itself or literal
} }
assert(val >= 0 && val <= 23);
if(_.isString(val)) {
result += s.substr(lastIndex, m.index - lastIndex) + val;
} else {
var attr = ansi.sgr({ var attr = ansi.sgr({
0 : [ 'reset', 'black' ], 0 : [ 'reset', 'black' ],
1 : [ 'reset', 'blue' ], 1 : [ 'reset', 'blue' ],
@ -137,6 +139,8 @@ if(-1 == s.indexOf('|')) {
}[val] || 'normal'); }[val] || 'normal');
result += s.substr(lastIndex, m.index - lastIndex) + attr; result += s.substr(lastIndex, m.index - lastIndex) + attr;
}
lastIndex = re.lastIndex; lastIndex = re.lastIndex;
} }

View File

@ -78,9 +78,9 @@ function prepareTerminal(term) {
function displayBanner(term) { function displayBanner(term) {
term.pipeWrite( term.pipeWrite(
'|33Conected to |32EN|33|01i|00|32|22GMA|32|01½|00 |33BBS version|31|01 |VN\n' + '|06Conected to |02EN|10i|02GMA|10½ |06BBS version |12|VN\n' +
'|00|33Copyright (c) 2014-2015 Bryan Ashby |33|01- |31|01http://l33t.codes/\n' + '|06Copyright (c) 2014-2015 Bryan Ashby |14- |12http://l33t.codes/\n' +
'|00|33Updates & source |01- |31|01https://github.com/NuSkooler/enigma-bbs/\n' + '|06Updates & source |14- |12https://github.com/NuSkooler/enigma-bbs/\n' +
'|00'); '|00');
} }

View File

@ -90,7 +90,7 @@ function VerticalMenuView(options) {
// :TODO: shoudl we detect if pipe codes are used? // :TODO: shoudl we detect if pipe codes are used?
self.client.term.write( self.client.term.write(
ansi.goto(item.row, self.position.col) + ansi.goto(item.row, self.position.col) +
colorCodes.enigmaToAnsi(text) colorCodes.pipeToAnsi(text, self.client)
); );
} else { } else {