pike.git / lib / include / string.pre.pike

version» Context lines:

pike.git/lib/include/string.pre.pike:1:   #define BEGIN 32    + /* +  * Implode an array of strings to an english 'list' +  * ie. ({"foo","bar","gazonk"}) beomces "foo, bar and gazonk" +  */ + string implode_nicely(string *foo, string|void and) + { +  if(!and) and="and"; +  switch(sizeof(foo)) +  { +  case 0: return ""; +  case 1: return foo[0]; +  default: return foo[0..sizeof(foo)-2]*", "+" "+and+" "+foo[-1]; +  } + }      string strmult(string str, int num)   {   #if 1    num*=strlen(str);    while(strlen(str) < num) str+=str;    return str[0..num-1];   #endif   #if 0    return sprintf("%~n",str,strlen(str)*num);   #endif   }      void create()   {    add_constant("strmult",strmult); -  +  add_constant("implode_nicely",implode_nicely);       master()->add_precompiled_program("/precompiled/string_buffer", class {    string *buffer=allocate(BEGIN);    int ptr=0;       static void fix()    {    string tmp=buffer*"";    buffer=allocate(strlen(tmp)/128+BEGIN);    buffer[0]=tmp;