#include <daemons.h> string right_align(string str, int size) { if(!size) return str; if(strlen(str)>size) return str; while(strlen(str)<size) str=" "+str; return str; } string strip_colours(string str) { mapping cols=COLOUR_D->query_ansi(); string *colours=keys(cols); int i=sizeof(colours); while(i--) if(str) str=replace_string(str, "%^"+colours[i]+"%^", ""); return str; } string restore_colours(string str) { mapping cols=COLOUR_D->query_ansi(); string *colours=keys(cols); int i=sizeof(colours); while(i--) str=replace_string(str,cols[colours[i]], "%^"+colours[i]+"%^"); return str; } varargs string arrange_string(string str, int i) { if(!i || i<2) i=75; i+=(strlen(str)-strlen(strip_colours(str))); if(strlen(str)>=i) return str[0..(i-1)]; i-=strlen(str); while(i--) str+=" "; return str; } varargs string wrap(string str, int i, int j) { if(!str) return ""; if(!j) return terminal_colour(str, COLOUR_D->query_ansi(),(i?i:75)); return restore_colours(terminal_colour(str, COLOUR_D->query_ansi(),(i?i:75))); } varargs string center(string str, int i) { string *strs=explode(wrap(str, (i?i:75), 1), "\n"); string tmp; int x=sizeof(strs); if (!i || i< 10) i=75; while(x--) { tmp=arrange_string("",to_int((i-strlen(strip_colours(strs[x])))/2)); strs[x]=tmp+strs[x]+tmp; } return implode(strs, "\n"); } varargs string border(string str, string title, int i) { string *strs=explode(wrap(str, (i?i-4:71), 1), "\n"); string tmp, line="|"; int x=sizeof(strs), y; if(!i || i<10) i=75; y=i-2; while(y--) line+="-"; line+="|"; i-=4; y=0; while(y<x) { if(strs[y]=="__BORDER_LINE__") { strs[y]="%^RESET%^%^BLUE%^"+line; y++; continue; } sscanf(strs[y], "%%^%s%%^%s", tmp, strs[y]); if(!tmp) tmp=""; strs[y]="%^RESET%^%^BLUE%^|%^RESET%^ "+arrange_string(replace_string((tmp!=""?"%^"+tmp+"%^":"")+strs[y],"\n", ""), i)+" %^RESET%^%^BLUE%^|"; y++; } str=""; x=i+4; while(x--) str+="-"; tmp=" %^RESET%^%^BLUE%^`"+str[2..<3]+"'"; if(title) str=arrange_string(str, (i-strlen(title))/2)+"%^BOLD%^%^BLUE%^<%^MAGENTA%^ "+title+" %^BOLD%^%^BLUE%^>%^RESET%^%^BLUE%^"+arrange_string(str, (i-strlen(title))/2); if( i%2 != strlen(str)%2) str+="-"; str=" ,"+str[2..<3]+"."; return "%^RESET%^%^BLUE%^"+str+"\n"+implode(strs, "\n")+"\n"+tmp; } varargs string format_page(string *items, int cols, int i) { string tmp=""; int x, y, z=sizeof(items); if(!i) i=75; if(!cols) cols=2; i-=cols+1; for(x=0;x<z;x+=cols) { for(y=0;y<cols;y++) if(z>x+y) tmp+=arrange_string(items[x+y], to_int(i/cols)); if(z>x+y) tmp+="\n"; } return tmp+"\n"; }