* More View updates

This commit is contained in:
NuSkooler 2014-10-19 21:06:39 -06:00
parent c7b4714c3d
commit eab6da2b0a
11 changed files with 592 additions and 38 deletions

View file

@ -1,7 +1,11 @@
/* jslint node: true */
'use strict';
var miscUtil = require('./misc_util.js');
exports.stylizeString = stylizeString;
exports.pad = pad;
// :TODO: create Unicode verison of this
var VOWELS = [ 'a', 'e', 'i', 'o', 'u' ];
@ -25,26 +29,31 @@ function stylizeString(s, style) {
var i;
var stylized = '';
switch(style) {
switch(style) {
// UPPERCASE
case 'upper' :
case 'U' : return s.toUpperCase();
// lowercase
case 'lower' :
case 'l' : return s.toLowerCase();
// Proper Case
case 'proper' :
case 'P' :
return s.replace(/\w\S*/g, function onProperCaseChar(t) {
return t.charAt(0).toUpperCase() + t.substr(1).toLowerCase();
});
// fIRST lOWER
case 'first lower' :
case 'f' :
return s.replace(/\w\S*/g, function onFirstLowerChar(t) {
return t.charAt(0).toLowerCase() + t.substr(1).toUpperCase();
});
// SMaLL VoWeLS
case 'small vowels' :
case 'v' :
for(i = 0; i < len; ++i) {
c = s[i];
@ -57,6 +66,7 @@ function stylizeString(s, style) {
return stylized;
// bIg vOwELS
case 'big vowels' :
case 'V' :
for(i = 0; i < len; ++i) {
c = s[i];
@ -69,9 +79,11 @@ function stylizeString(s, style) {
return stylized;
// Small i's: DEMENTiA
case 'small i' :
case 'i' : return s.toUpperCase().replace('I', 'i');
// mIxeD CaSE (random upper/lower)
case 'mixed' :
case 'M' :
for(i = 0; i < len; i++) {
if(Math.random() < 0.5) {
@ -83,6 +95,7 @@ function stylizeString(s, style) {
return stylized;
// l337 5p34k
case 'l33t' :
case '3' :
for(i = 0; i < len; ++i) {
c = SIMPLE_ELITE_MAP[s[i].toLowerCase()];
@ -91,5 +104,34 @@ function stylizeString(s, style) {
return stylized;
}
return s;
}
// Based on http://www.webtoolkit.info/
function pad(s, len, padChar, dir) {
len = miscUtil.valueWithDefault(len, 0);
padChar = miscUtil.valueWithDefault(padChar, ' ');
dir = miscUtil.valueWithDefault(dir, 'right');
var padlen = len - s.length;
switch(dir) {
case 'left' :
s = new Array(padlen).join(padChar) + s;
break;
case 'both' :
var right = Math.ceil(padlen) / 2;
var left = padlen - right;
s = new Array(left + 1).join(padChar) + s + new Array(right + 1).join(padChar);
break;
case 'right' :
s = s + new Array(padlen).join(padChar);
break;
default : break;
}
return s;
}