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) {
spec = spec || 'enigma';
spec = spec || 'renegade';
var conv = {
enigma : enigmaToAnsi,

View File

@ -7,10 +7,10 @@ var getPredefinedMCIValue = require('./predefined_mci.js').getPredefinedMCIValue
var assert = require('assert');
var _ = require('lodash');
exports.pipeToAnsi = exports.enigmaToAnsi = enigmaToAnsi;
exports.enigmaToAnsi = enigmaToAnsi;
exports.stripPipeCodes = exports.stripEnigmaCodes = stripEnigmaCodes;
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
@ -83,13 +83,13 @@ function enigmaStrLen(s) {
return stripEnigmaCodes(s).length;
}
function renegadeToAnsi(s) {
if(-1 == s.indexOf('|')) {
function renegadeToAnsi(s, client) {
if(-1 == s.indexOf('|')) {
return s; // no pipe codes present
}
var result = '';
var re = /\|(\d{2}|\|)/g;
var re = /\|([A-Z\d]{2}|\|)/g;
var m;
var lastIndex = 0;
while((m = re.exec(s))) {
@ -101,42 +101,46 @@ if(-1 == s.indexOf('|')) {
}
// convert to number
val = parseInt(val, 10);
val = parseInt(val, 10);
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({
0 : [ 'reset', 'black' ],
1 : [ 'reset', 'blue' ],
2 : [ 'reset', 'green' ],
3 : [ 'reset', 'cyan' ],
4 : [ 'reset', 'red' ],
5 : [ 'reset', 'magenta' ],
6 : [ 'reset', 'yellow' ],
7 : [ 'reset', 'white' ],
if(_.isString(val)) {
result += s.substr(lastIndex, m.index - lastIndex) + val;
} else {
var attr = ansi.sgr({
0 : [ 'reset', 'black' ],
1 : [ 'reset', 'blue' ],
2 : [ 'reset', 'green' ],
3 : [ 'reset', 'cyan' ],
4 : [ 'reset', 'red' ],
5 : [ 'reset', 'magenta' ],
6 : [ 'reset', 'yellow' ],
7 : [ 'reset', 'white' ],
8 : [ 'bold', 'black' ],
9 : [ 'bold', 'blue' ],
10 : [ 'bold', 'green' ],
11 : [ 'bold', 'cyan' ],
12 : [ 'bold', 'red' ],
13 : [ 'bold', 'magenta' ],
14 : [ 'bold', 'yellow' ],
15 : [ 'bold', 'white' ],
8 : [ 'bold', 'black' ],
9 : [ 'bold', 'blue' ],
10 : [ 'bold', 'green' ],
11 : [ 'bold', 'cyan' ],
12 : [ 'bold', 'red' ],
13 : [ 'bold', 'magenta' ],
14 : [ 'bold', 'yellow' ],
15 : [ 'bold', 'white' ],
16 : [ 'blackBG' ],
17 : [ 'blueBG' ],
18 : [ 'greenBG' ],
19 : [ 'cyanBG' ],
20 : [ 'redBG' ],
21 : [ 'magentaBG' ],
22 : [ 'yellowBG' ],
23 : [ 'whiteBG' ],
}[val] || 'normal');
16 : [ 'blackBG' ],
17 : [ 'blueBG' ],
18 : [ 'greenBG' ],
19 : [ 'cyanBG' ],
20 : [ 'redBG' ],
21 : [ 'magentaBG' ],
22 : [ 'yellowBG' ],
23 : [ 'whiteBG' ],
}[val] || 'normal');
result += s.substr(lastIndex, m.index - lastIndex) + attr;
}
result += s.substr(lastIndex, m.index - lastIndex) + attr;
lastIndex = re.lastIndex;
}

View File

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

View File

@ -89,8 +89,8 @@ function VerticalMenuView(options) {
// :TODO: Need to support pad()
// :TODO: shoudl we detect if pipe codes are used?
self.client.term.write(
ansi.goto(item.row, self.position.col) +
colorCodes.enigmaToAnsi(text)
ansi.goto(item.row, self.position.col) +
colorCodes.pipeToAnsi(text, self.client)
);
} 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: {
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
}
mci: {
@ -124,8 +124,8 @@
mainMenuUserList: {
config: {
listFormat: "|00|01|36{userName:<17.17}{affils:<21.21}{note:<19.19}{lastLoginTs}"
focusListFormat: "|00|42|30{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|19|15{userName:<17.17}{affils:<21.21}{note:<19.19}{lastLoginTs}"
dateTimeFormat: MMM Do h:mma
}
mci: {
@ -135,7 +135,7 @@
mainMenuWhosOnline: {
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: {
VM1: { height: 10 }
@ -144,8 +144,8 @@
messageAreaMessageList: {
config: {
listFormat: "|00|01|37{msgNum:>4} |00|37- |36{subj:<29.29} {from:<20.20} {ts} |01|31{newIndicator}"
focusListFormat: "|00|42|30{msgNum:>4} - {subj:<29.29} {from:<20.20} {ts} {newIndicator}"
listFormat: "|00|15{msgNum:>4} |03{subj:<29.29} |11{from:<20.20} |03{ts} |01|31{newIndicator}"
focusListFormat: "|00|19|15{msgNum:>4} {subj:<29.29} {from:<20.20} {ts} {newIndicator}"
dateTimeFormat: ddd MMM Do
}
mci: {
@ -157,8 +157,8 @@
messageAreaChangeCurrentArea: {
config: {
listFormat: "|00|01|37{index} |00|37- |36{desc}"
focusListFormat: "|00|42|30{index} - {desc}"
listFormat: "|00|15{index} |07- |03{desc}"
focusListFormat: "|00|19|15{index} - {desc}"
}
mci: {
VM1: {
@ -240,7 +240,7 @@
fullLoginSequenceLastCallers: {
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
}
mci: {
@ -250,7 +250,7 @@
fullLoginSequenceWhosOnline: {
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: {
VM1: { height: 10 }

View File

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