Merge branch 'master' of ssh://numinibsd/git/base/enigma-bbs

This commit is contained in:
Bryan Ashby 2015-12-21 18:29:28 -07:00
commit 49d3bdf08c
28 changed files with 57 additions and 171 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,40 +103,44 @@ 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);
var attr = ansi.sgr({ if(_.isString(val)) {
0 : [ 'reset', 'black' ], result += s.substr(lastIndex, m.index - lastIndex) + val;
1 : [ 'reset', 'blue' ], } else {
2 : [ 'reset', 'green' ], var attr = ansi.sgr({
3 : [ 'reset', 'cyan' ], 0 : [ 'reset', 'black' ],
4 : [ 'reset', 'red' ], 1 : [ 'reset', 'blue' ],
5 : [ 'reset', 'magenta' ], 2 : [ 'reset', 'green' ],
6 : [ 'reset', 'yellow' ], 3 : [ 'reset', 'cyan' ],
7 : [ 'reset', 'white' ], 4 : [ 'reset', 'red' ],
5 : [ 'reset', 'magenta' ],
6 : [ 'reset', 'yellow' ],
7 : [ 'reset', 'white' ],
8 : [ 'bold', 'black' ], 8 : [ 'bold', 'black' ],
9 : [ 'bold', 'blue' ], 9 : [ 'bold', 'blue' ],
10 : [ 'bold', 'green' ], 10 : [ 'bold', 'green' ],
11 : [ 'bold', 'cyan' ], 11 : [ 'bold', 'cyan' ],
12 : [ 'bold', 'red' ], 12 : [ 'bold', 'red' ],
13 : [ 'bold', 'magenta' ], 13 : [ 'bold', 'magenta' ],
14 : [ 'bold', 'yellow' ], 14 : [ 'bold', 'yellow' ],
15 : [ 'bold', 'white' ], 15 : [ 'bold', 'white' ],
16 : [ 'blackBG' ], 16 : [ 'blackBG' ],
17 : [ 'blueBG' ], 17 : [ 'blueBG' ],
18 : [ 'greenBG' ], 18 : [ 'greenBG' ],
19 : [ 'cyanBG' ], 19 : [ 'cyanBG' ],
20 : [ 'redBG' ], 20 : [ 'redBG' ],
21 : [ 'magentaBG' ], 21 : [ 'magentaBG' ],
22 : [ 'yellowBG' ], 22 : [ 'yellowBG' ],
23 : [ 'whiteBG' ], 23 : [ 'whiteBG' ],
}[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 {

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,119 +0,0 @@
{
info: {
name: Nu Mayan
author: NuSkooler
}
customization: {
defaults: {
general: {
passwordChar: φ
}
dateFormat: {
short: YYYY-MMM-DD
}
timeFormat: {
short: h:mm:ss a
}
mci: {
TM: {
styleSGR1: |00|30|01
}
}
}
menus: {
matrix: {
VM1: {
itemSpacing: 1
justify: center
width: 12
focusTextStyle: l33t
}
}
apply: {
ET1: { width: 21 }
ET2: { width: 21 }
ME3: {
styleSGR1: |00|30|01
styleSGR2: |00|37
fillChar: "#"
}
ET4: { width: 1 }
ET5: { width: 21 }
ET6: { width: 21 }
ET7: { width: 21 }
ET8: { width: 21 }
ET9: { width: 21 }
ET10: { width: 21 }
}
newUserApplication: {
ET1: { width: 38 }
ET2: { width: 38 }
/*ME3: {
styleSGR1: |00|30|01
styleSGR2: |00|37
fillChar: "#"
}*/
//ET4: { width: 1 }
ET5: { width: 38 }
ET6: { width: 38 }
ET7: { width: 38 }
ET8: { width: 38 }
ET9: { width: 38 }
ET10: { width: 38 }
TM12: {
focusTextStyle: first lower
}
}
lastCallers: {
TL1: {
resizable: false
width: 16
textOverflow: ...
}
TL2: {
resizable: false
width: 19
textOverflow: ...
}
TL3: {
resizable: false
width: 17
textOverflow: ...
}
}
messageAreaViewPost: {
0: {
TL3: {
width: 27
textOverflow: ...
}
}
}
}
prompts: {
userCredentials: {
ET1: { width: 21 }
ET2: { width: 21 }
}
}
}
}

View File

@ -114,7 +114,7 @@
mainMenuLastCallers: { mainMenuLastCallers: {
config: { config: {
listFormat: "|00|01|36{userName:<17.17}{location:<20.20}{affils:<17.17}{ts:<15}" listFormat: "|00|11{userName:<17.17}|03{location:<20.20}|11{affils:<17.17}|03{ts:<15}"
dateTimeFormat: MMM Do h:mma dateTimeFormat: MMM Do h:mma
} }
mci: { mci: {
@ -124,8 +124,8 @@
mainMenuUserList: { mainMenuUserList: {
config: { config: {
listFormat: "|00|01|36{userName:<17.17}{affils:<21.21}{note:<19.19}{lastLoginTs}" listFormat: "|00|11{userName:<17.17}|03{affils:<21.21}|11{note:<19.19}|03{lastLoginTs}"
focusListFormat: "|00|42|30{userName:<17.17}{affils:<21.21}{note:<19.19}{lastLoginTs}" focusListFormat: "|00|19|15{userName:<17.17}{affils:<21.21}{note:<19.19}{lastLoginTs}"
dateTimeFormat: MMM Do h:mma dateTimeFormat: MMM Do h:mma
} }
mci: { mci: {
@ -135,7 +135,7 @@
mainMenuWhosOnline: { mainMenuWhosOnline: {
config: { config: {
listFormat: "|00|01|36{node:<6.6}{userName:<17.17}{affils:<19.19}{action:<20.20}{timeOn:<8}" listFormat: "|00|03{node:<6.6}|11{userName:<17.17}|03{affils:<19.19}|11{action:<20.20}|03{timeOn:<8}"
} }
mci: { mci: {
VM1: { height: 10 } VM1: { height: 10 }
@ -144,8 +144,8 @@
messageAreaMessageList: { messageAreaMessageList: {
config: { config: {
listFormat: "|00|01|37{msgNum:>4} |00|37- |36{subj:<29.29} {from:<20.20} {ts} |01|31{newIndicator}" listFormat: "|00|15{msgNum:>4} |03{subj:<29.29} |11{from:<20.20} |03{ts} |01|31{newIndicator}"
focusListFormat: "|00|42|30{msgNum:>4} - {subj:<29.29} {from:<20.20} {ts} {newIndicator}" focusListFormat: "|00|19|15{msgNum:>4} {subj:<29.29} {from:<20.20} {ts} {newIndicator}"
dateTimeFormat: ddd MMM Do dateTimeFormat: ddd MMM Do
} }
mci: { mci: {
@ -157,8 +157,8 @@
messageAreaChangeCurrentArea: { messageAreaChangeCurrentArea: {
config: { config: {
listFormat: "|00|01|37{index} |00|37- |36{desc}" listFormat: "|00|15{index} |07- |03{desc}"
focusListFormat: "|00|42|30{index} - {desc}" focusListFormat: "|00|19|15{index} - {desc}"
} }
mci: { mci: {
VM1: { VM1: {
@ -240,7 +240,7 @@
fullLoginSequenceLastCallers: { fullLoginSequenceLastCallers: {
config: { config: {
listFormat: "|00|01|36{userName:<17.17}{location:<20.20}{affils:<17.17}{ts:<15}" listFormat: "|00|11{userName:<17.17}|03{location:<20.20}|11{affils:<17.17}|03{ts:<15}"
dateTimeFormat: MMM Do h:mma dateTimeFormat: MMM Do h:mma
} }
mci: { mci: {
@ -250,7 +250,7 @@
fullLoginSequenceWhosOnline: { fullLoginSequenceWhosOnline: {
config: { config: {
listFormat: "|00|01|36{node:<6.6}{userName:<17.17}{affils:<19.19}{action:<20.20}{timeOn:<8}" listFormat: "|00|03{node:<6.6}|11{userName:<17.17}|03{affils:<19.19}|11{action:<20.20}|03{timeOn:<8}"
} }
mci: { mci: {
VM1: { height: 10 } VM1: { height: 10 }

View File

@ -84,10 +84,11 @@ UserListModule.prototype.mciReady = function(mciData, cb) {
userId : ue.userId, userId : ue.userId,
userName : ue.userName, userName : ue.userName,
affils : ue.affiliation, affils : ue.affiliation,
location : ue.location,
// :TODO: the rest! // :TODO: the rest!
note : ue.note || '', note : ue.note || '',
lastLoginTs : moment(ue.last_login_timestamp).format(dateTimeFormat), lastLoginTs : moment(ue.last_login_timestamp).format(dateTimeFormat),
} };
} }
userListView.setItems(_.map(userList, function formatUserEntry(ue) { userListView.setItems(_.map(userList, function formatUserEntry(ue) {