sas             Thu Mar  8 10:59:46 2001 EDT

  Modified files:              
    /php4/ext/ircg      ircg_scanner.c 
  Log:
  Add handling for underline/bold control sequences
  
  
Index: php4/ext/ircg/ircg_scanner.c
diff -u php4/ext/ircg/ircg_scanner.c:1.5 php4/ext/ircg/ircg_scanner.c:1.6
--- php4/ext/ircg/ircg_scanner.c:1.5    Sat Mar  3 09:01:31 2001
+++ php4/ext/ircg/ircg_scanner.c        Thu Mar  8 10:59:46 2001
@@ -1,5 +1,5 @@
-/* Generated by re2c 0.5 on Sat Mar  3 16:35:30 2001 */
-#line 1 "/usr/home/sas/chat/php4/ext/ircg/ircg_scanner.re"
+/* Generated by re2c 0.5 on Thu Mar  8 19:50:44 2001 */
+#line 1 "/home/sas/src/php4/ext/ircg/ircg_scanner.re"
 /*
    +----------------------------------------------------------------------+
    | PHP version 4.0                                                      |
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: ircg_scanner.c,v 1.5 2001/03/03 17:01:31 sas Exp $ */
+/* $Id: ircg_scanner.c,v 1.6 2001/03/08 18:59:46 sas Exp $ */
 
 #include <ext/standard/php_smart_str.h>
 #include <stdio.h>
@@ -56,12 +56,14 @@
        int bg_code;
        int fg_code;
        int font_tag_open;
+       int bold_tag_open;
+       int underline_tag_open;
        
        smart_str scheme;
        smart_str *result;
 } ircg_msg_scanner;
 
-#line 71
+#line 75
 
 
 #define YYFILL(n) { }
@@ -123,6 +125,34 @@
        }
 }
 
+static void handle_bold(STD_PARA, int final)
+{
+       switch (ctx->bold_tag_open) {
+       case 0:
+               if (!final) smart_str_appends(ctx->result, "<b>");
+               break;
+       case 1:
+               smart_str_appends(ctx->result, "</b>");
+               break;
+       }
+
+       ctx->bold_tag_open = 1 - ctx->bold_tag_open;
+}
+
+static void handle_underline(STD_PARA, int final)
+{
+       switch (ctx->underline_tag_open) {
+       case 0:
+               if (!final) smart_str_appends(ctx->result, "<ul>");
+               break;
+       case 1:
+               smart_str_appends(ctx->result, "</ul>");
+               break;
+       }
+
+       ctx->underline_tag_open = 1 - ctx->underline_tag_open;
+}
+
 static void commit_color_stuff(STD_PARA)
 {
        finish_color_stuff(STD_ARGS);
@@ -145,17 +175,17 @@
        smart_str_appends(ctx->result, entity);
 }
 
-void ircg_mirc_color(const char *msg, smart_str *result) {
+void ircg_mirc_color(const char *msg, smart_str *result, size_t msg_len) {
        int mode = STATE_PLAIN;
        const char *end, *xp, *q, *start;
-       size_t msg_len;
        ircg_msg_scanner mctx, *ctx = &mctx;
 
        mctx.result = result;
        mctx.scheme.c = NULL;
-       mctx.font_tag_open = 0;
+       mctx.font_tag_open = mctx.bold_tag_open = mctx.underline_tag_open = 0;
        
-       msg_len = strlen(msg);
+       if (msg_len == -1)
+               msg_len = strlen(msg);
        end = msg + msg_len;
        xp = msg;
        
@@ -208,83 +238,96 @@
 yy0:
        if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
        yych = *YYCURSOR;
-       if(yych <= '<'){
+       if(yych <= '&'){
                if(yych <= '\003'){
-                       if(yych <= '\000')      goto yy13;
+                       if(yych <= '\000')      goto yy17;
+                       if(yych <= '\001')      goto yy16;
                        if(yych <= '\002')      goto yy12;
                        goto yy4;
                } else {
-                       if(yych == '&') goto yy10;
-                       if(yych <= ';') goto yy12;
-                       goto yy6;
+                       if(yych == '\025')      goto yy14;
+                       if(yych <= '%') goto yy16;
+                       goto yy10;
                }
        } else {
-               if(yych <= '@'){
-                       if(yych == '>') goto yy8;
-                       goto yy12;
+               if(yych <= '>'){
+                       if(yych == '<') goto yy6;
+                       if(yych <= '=') goto yy16;
+                       goto yy8;
                } else {
-                       if(yych <= 'Z') goto yy2;
-                       if(yych <= '`') goto yy12;
-                       if(yych >= '{') goto yy12;
+                       if(yych <= 'Z'){
+                               if(yych <= '@') goto yy16;
+                       } else {
+                               if(yych <= '`') goto yy16;
+                               if(yych >= '{') goto yy16;
+                       }
                }
        }
 yy2:   yych = *++YYCURSOR;
-       if(yybm[0+yych] & 128)  goto yy17;
-       if(yych == ':') goto yy19;
-       goto yy16;
+       if(yybm[0+yych] & 128)  goto yy21;
+       if(yych == ':') goto yy23;
+       goto yy20;
 yy3:
-#line 181
+#line 215
        { passthru(STD_ARGS); continue; }
 yy4:   yych = *++YYCURSOR;
 yy5:
-#line 177
+#line 209
        { mctx.fg_code = mctx.bg_code = -1; STATE = STATE_COLOR_FG; continue; }
 yy6:   yych = *++YYCURSOR;
 yy7:
-#line 178
+#line 210
        { add_entity(STD_ARGS, "&lt;"); continue; }
 yy8:   yych = *++YYCURSOR;
 yy9:
-#line 179
+#line 211
        { add_entity(STD_ARGS, "&gt;"); continue; }
 yy10:  yych = *++YYCURSOR;
 yy11:
-#line 180
+#line 212
        { add_entity(STD_ARGS, "&amp;"); continue; }
 yy12:  yych = *++YYCURSOR;
-       goto yy16;
-yy13:  yych = *++YYCURSOR;
-yy14:
-#line 183
+yy13:
+#line 213
+       { handle_bold(STD_ARGS, 0); continue; }
+yy14:  yych = *++YYCURSOR;
+yy15:
+#line 214
+       { handle_underline(STD_ARGS, 0); continue; }
+yy16:  yych = *++YYCURSOR;
+       goto yy20;
+yy17:  yych = *++YYCURSOR;
+yy18:
+#line 217
        { goto stop; }
-yy15:  ++YYCURSOR;
+yy19:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-yy16:  if(yybm[0+yych] & 64)   goto yy15;
+yy20:  if(yybm[0+yych] & 64)   goto yy19;
        goto yy3;
-yy17:  ++YYCURSOR;
+yy21:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-yy18:  if(yybm[0+yych] & 128)  goto yy17;
+yy22:  if(yybm[0+yych] & 128)  goto yy21;
        if(yych <= '\000')      goto yy3;
-       if(yych <= '.') goto yy15;
+       if(yych <= '.') goto yy19;
        if(yych <= '/') goto yy3;
-       if(yych >= ';') goto yy15;
-yy19:  yyaccept = 0;
+       if(yych >= ';') goto yy19;
+yy23:  yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych != '/') goto yy16;
-yy20:  yych = *++YYCURSOR;
-       if(yych == '/') goto yy22;
-yy21:  YYCURSOR = YYMARKER;
+       if(yych != '/') goto yy20;
+yy24:  yych = *++YYCURSOR;
+       if(yych == '/') goto yy26;
+yy25:  YYCURSOR = YYMARKER;
        switch(yyaccept){
        case 0: goto yy3;
        }
-yy22:  yych = *++YYCURSOR;
-yy23:
-#line 176
+yy26:  yych = *++YYCURSOR;
+yy27:
+#line 208
        { handle_scheme(STD_ARGS); STATE = STATE_URL; continue; }
 }
-#line 184
+#line 218
 
 
                        break;
@@ -329,43 +372,43 @@
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
        };
-       goto yy24;
-yy25:  ++YYCURSOR;
-yy24:
+       goto yy28;
+yy29:  ++YYCURSOR;
+yy28:
        if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = *YYCURSOR;
        if(yych <= '>'){
                if(yych <= '"'){
-                       if(yych != '!') goto yy28;
+                       if(yych != '!') goto yy32;
                } else {
-                       if(yych == '<') goto yy28;
-                       if(yych >= '>') goto yy28;
+                       if(yych == '<') goto yy32;
+                       if(yych >= '>') goto yy32;
                }
        } else {
                if(yych <= '`'){
-                       if(yych <= 'Z') goto yy26;
-                       if(yych != '_') goto yy28;
+                       if(yych <= 'Z') goto yy30;
+                       if(yych != '_') goto yy32;
                } else {
-                       if(yych <= 'z') goto yy26;
-                       if(yych != '~') goto yy28;
+                       if(yych <= 'z') goto yy30;
+                       if(yych != '~') goto yy32;
                }
        }
-yy26:  yych = *++YYCURSOR;
-       goto yy31;
-yy27:
-#line 192
+yy30:  yych = *++YYCURSOR;
+       goto yy35;
+yy31:
+#line 226
        { handle_url(STD_ARGS); STATE = STATE_PLAIN; continue; }
-yy28:  yych = *++YYCURSOR;
-yy29:
-#line 193
+yy32:  yych = *++YYCURSOR;
+yy33:
+#line 227
        { passthru(STD_ARGS); STATE = STATE_PLAIN; continue; }
-yy30:  ++YYCURSOR;
+yy34:  ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-yy31:  if(yybm[0+yych] & 128)  goto yy30;
-       goto yy27;
+yy35:  if(yybm[0+yych] & 128)  goto yy34;
+       goto yy31;
 }
-#line 194
+#line 228
 
 
                        break;
@@ -375,27 +418,27 @@
 {
        YYCTYPE yych;
        unsigned int yyaccept;
-       goto yy32;
-yy33:  ++YYCURSOR;
-yy32:
+       goto yy36;
+yy37:  ++YYCURSOR;
+yy36:
        if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = *YYCURSOR;
-       if(yych <= '/') goto yy36;
-       if(yych >= ':') goto yy36;
-yy34:  yych = *++YYCURSOR;
-       if(yych <= '/') goto yy35;
-       if(yych <= '9') goto yy38;
-yy35:
-#line 201
+       if(yych <= '/') goto yy40;
+       if(yych >= ':') goto yy40;
+yy38:  yych = *++YYCURSOR;
+       if(yych <= '/') goto yy39;
+       if(yych <= '9') goto yy42;
+yy39:
+#line 235
        { handle_color_digit(STD_ARGS, 0); STATE = STATE_COLOR_COMMA; continue; }
-yy36:  yych = *++YYCURSOR;
-yy37:
-#line 202
+yy40:  yych = *++YYCURSOR;
+yy41:
+#line 236
        { finish_color_stuff(STD_ARGS); passthru(STD_ARGS); STATE = STATE_PLAIN; 
continue; }
-yy38:  yych = *++YYCURSOR;
-       goto yy35;
+yy42:  yych = *++YYCURSOR;
+       goto yy39;
 }
-#line 203
+#line 237
 
 
                        break;
@@ -405,22 +448,22 @@
 {
        YYCTYPE yych;
        unsigned int yyaccept;
-       goto yy39;
-yy40:  ++YYCURSOR;
-yy39:
+       goto yy43;
+yy44:  ++YYCURSOR;
+yy43:
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych != ',') goto yy43;
-yy41:  yych = *++YYCURSOR;
-yy42:
-#line 210
+       if(yych != ',') goto yy47;
+yy45:  yych = *++YYCURSOR;
+yy46:
+#line 244
        { STATE = STATE_COLOR_BG; continue; }
-yy43:  yych = *++YYCURSOR;
-yy44:
-#line 211
+yy47:  yych = *++YYCURSOR;
+yy48:
+#line 245
        { YYCURSOR--; commit_color_stuff(STD_ARGS); STATE = STATE_PLAIN; continue; }
 }
-#line 212
+#line 246
 
 
                        break;
@@ -430,27 +473,27 @@
 {
        YYCTYPE yych;
        unsigned int yyaccept;
-       goto yy45;
-yy46:  ++YYCURSOR;
-yy45:
+       goto yy49;
+yy50:  ++YYCURSOR;
+yy49:
        if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = *YYCURSOR;
-       if(yych <= '/') goto yy49;
-       if(yych >= ':') goto yy49;
-yy47:  yych = *++YYCURSOR;
-       if(yych <= '/') goto yy48;
-       if(yych <= '9') goto yy51;
-yy48:
-#line 219
+       if(yych <= '/') goto yy53;
+       if(yych >= ':') goto yy53;
+yy51:  yych = *++YYCURSOR;
+       if(yych <= '/') goto yy52;
+       if(yych <= '9') goto yy55;
+yy52:
+#line 253
        { handle_color_digit(STD_ARGS, 1); commit_color_stuff(STD_ARGS); STATE = 
STATE_PLAIN; continue; }
-yy49:  yych = *++YYCURSOR;
-yy50:
-#line 220
+yy53:  yych = *++YYCURSOR;
+yy54:
+#line 254
        { commit_color_stuff(STD_ARGS); STATE = STATE_PLAIN; continue; }
-yy51:  yych = *++YYCURSOR;
-       goto yy48;
+yy55:  yych = *++YYCURSOR;
+       goto yy52;
 }
-#line 221
+#line 255
 
                        break;
                }
@@ -459,4 +502,6 @@
        smart_str_free(&ctx->scheme);
 
        finish_color_stuff(STD_ARGS);
+       handle_bold(STD_ARGS, 1);
+       handle_underline(STD_ARGS, 1);
 }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to