generate bullet string

by Ben Clayton

JavaScript

var numstyle = ["","#","#.#","&)"];

function renumber(lvl,idx){
    for(var i=1;i<3;i++){
        doit(lvl,idx.concat(i));
        if(lvl<3)renumber(lvl+1,idx.concat(i));
    }
}

function doit(lvl,idx){
    console.log(idx);
    var m = numstyle[lvl],
        x = idx.length-1,
        s='';
    for (var n=m.length-1;n>=0;n--){
        //alert(m[n]);
        if(x<0){
        }else if(m[n] == '#'){
            s= idx[x--] + s;
        }else if(m[n] == '&'){
            s=letter(idx[x--]) + s;
        }else if(m[n] == '%'){
            s=romanize(idx[x--]) + s;
        }else{
            s=m[n]+s;
        }
    }
    console.log(s);
}

function letter(n){
    var s='';
    n--;
    var x=0;
    do{
        s=String.fromCharCode(97 +x+ (n % 26))+s;
        n=parseInt(n/26,10)-1;
        x--;
    }  while  (n>0) 
    return s;
}

function romanize (num) {
	if (!+num)
		return false;
	var	digits = String(+num).split(""),
		key = ["","C","CC","CCC","CD","D","DC","DCC","DCCC", "CM","","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","","I","II","III","IV","V","VI","VII","VIII","IX"],
		roman = "",
		i = 3;
	while (i--)
		roman = (key[+digits.pop() + (i * 10)] || "") + roman;
	return Array(+digits.join("") + 1).join("M") + roman;
}
   
console.log('--------');
for(var i=1;i<100;i++){
     console.log(letter(i));
}


renumber(1,[]);
        
//var index2 = index.map(function(){});