Subversion Repositories Kolibri OS

Rev

Rev 4718 | Rev 4725 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. enum { TAG, OPTION_VALUE, TEXT, COMMENT };
  2.  
  3. //you are butifull, you are butifull
  4. dword ShowSource()
  5. {
  6.         dword new_buf, new_buf_start, i;
  7.         byte ww, mode;
  8.  
  9.         if (souce_mode) return;
  10.         souce_mode = true;
  11.         new_buf_start = new_buf = malloc(bufsize*5);
  12.         strcat(new_buf, "<pre>");
  13.         for (i=bufpointer; i<bufpointer+bufsize; i++)
  14.         {
  15.                 ww = ESBYTE[i];
  16.                 new_buf++;
  17.                 switch (ww)
  18.                 {
  19.                         case '<':
  20.                                 if (ESBYTE[i+1]=='!') && (ESBYTE[i+2]=='-') && (ESBYTE[i+3]=='-')
  21.                                 {
  22.                                         strcat(new_buf, "<font color=#ccc>&lt;");
  23.                                         new_buf+=20;
  24.                                         mode = COMMENT;
  25.                                 }
  26.                                 else
  27.                                 {
  28.                                         strcat(new_buf, "<font color=#00f>&lt;");
  29.                                         new_buf+=20;
  30.                                         mode = TAG;
  31.                                 }
  32.                                 break;
  33.                         case '>':
  34.                                 if (mode == OPTION_VALUE) //fix non-closed quote in TAG
  35.                                 {
  36.                                         strcat(new_buf, "&quot;</font>");
  37.                                         new_buf+=12;                                   
  38.                                         mode = TAG;
  39.                                 }
  40.                                 if (mode == COMMENT) && (ESBYTE[i-1]=='-') && (ESBYTE[i-2]=='-')
  41.                                 {
  42.                                         strcat(new_buf, "&gt;</font>");
  43.                                         new_buf+=10;
  44.                                         mode = TEXT;
  45.                                 }
  46.                                 if (mode == TAG)
  47.                                 {
  48.                                         strcat(new_buf, "&gt;</font>");
  49.                                         new_buf+=10;
  50.                                         mode = TEXT;
  51.                                 }
  52.                                 break;
  53.                         case '\"':
  54.                         case '\'':
  55.                                 if (mode == TAG)
  56.                                 {
  57.                                         strcat(new_buf, "<font color=#f0f>&quot;");
  58.                                         new_buf+=22;
  59.                                         mode = OPTION_VALUE;
  60.                                         break;
  61.                                 }
  62.                                 if (mode == OPTION_VALUE)
  63.                                 {
  64.                                         strcat(new_buf, "&quot;</font>");
  65.                                         new_buf+=12;
  66.                                         mode = TAG;
  67.                                         break;
  68.                                 }
  69.                         default:
  70.                                 chrcat(new_buf, ww);
  71.                 }
  72.         }
  73.         bufsize = new_buf;
  74.         free(bufpointer);
  75.         bufpointer = new_buf_start;
  76. }