]> git.wincent.com - wikitext.git/commitdiff
Tokenize em and strong HTML tags
authorWincent Colaiuta <win@wincent.com>
Wed, 6 Feb 2008 11:08:49 +0000 (12:08 +0100)
committerWincent Colaiuta <win@wincent.com>
Wed, 6 Feb 2008 11:08:49 +0000 (12:08 +0100)
This is useful for cases where you either type HTML tags instead of
wikitext markup without thinking, or where you explicitly prefer to
use explicit tags for the purposes of disambiguation (ie. does
"'''''" mean "strong em" or "em strong"?). By default, the wikitext
extension assumes strong em because it is an on-the-fly transformer
and can't look ahead to see what the likely ordering is, but
sometimes you want the other order and using HTML tags is one way
of imposing it (the other is to insert a zero-length nowiki span,
or insert whitespace, between the opening em and strong tags).

Signed-off-by: Wincent Colaiuta <win@wincent.com>
ext/token.h
ext/wikitext_ragel.c
ext/wikitext_ragel.rl

index 5f5678583272d259cbc4127485ff47c68bf391e4..9157a205b283f50ffea86b93d248c285f6204672 100644 (file)
@@ -39,7 +39,11 @@ enum token_types {
     NO_WIKI_END,
     BLOCKQUOTE,
     STRONG_EM,
+    STRONG_START,
+    STRONG_END,
     STRONG,
+    EM_START,
+    EM_END,
     EM,
     TT_START,
     TT_END,
index 9d0e8c44da34279903b7c54b8ed4e79e516cdab8..779b16a78f9b757dd597ba352a6b8ff7556faf90 100644 (file)
 
 
 #line 35 "wikitext_ragel.c"
-static const int wikitext_start = 38;
-static const int wikitext_first_final = 38;
+static const int wikitext_start = 54;
+static const int wikitext_first_final = 54;
 static const int wikitext_error = 0;
 
-static const int wikitext_en_main = 38;
+static const int wikitext_en_main = 54;
 
-#line 349 "wikitext_ragel.rl"
+#line 373 "wikitext_ragel.rl"
 
 
 // for now we use the scanner as a tokenizer that returns one token at a time, just like ANTLR
@@ -88,7 +88,7 @@ void next_token(token_t *out, token_t *last_token, char *p, char *pe)
        te = 0;
        act = 0;
        }
-#line 391 "wikitext_ragel.rl"
+#line 415 "wikitext_ragel.rl"
     
 #line 94 "wikitext_ragel.c"
        {
@@ -102,13 +102,13 @@ tr0:
         out->code_point = ((uint32_t)(*(p - 1)) & 0x1f) << 6 |
             (*p & 0x3f);
     }
-#line 340 "wikitext_ragel.rl"
+#line 364 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(DEFAULT);
             out->column_stop = out->column_start + 1;
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
+       goto st54;
 tr3:
 #line 52 "wikitext_ragel.rl"
        {
@@ -116,13 +116,13 @@ tr3:
             ((uint32_t)(*(p - 1)) & 0x3f) << 6 |
             (*p & 0x3f);
     }
-#line 340 "wikitext_ragel.rl"
+#line 364 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(DEFAULT);
             out->column_stop = out->column_start + 1;
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
+       goto st54;
 tr6:
 #line 59 "wikitext_ragel.rl"
        {
@@ -131,183 +131,211 @@ tr6:
             ((uint32_t)(*(p - 1)) & 0x3f) << 6 |
             (*p & 0x3f);
     }
-#line 340 "wikitext_ragel.rl"
+#line 364 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(DEFAULT);
             out->column_stop = out->column_start + 1;
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
+       goto st54;
 tr7:
-#line 290 "wikitext_ragel.rl"
+#line 314 "wikitext_ragel.rl"
        {{p = ((te))-1;}{
             EMIT(AMP);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
+       goto st54;
 tr10:
-#line 278 "wikitext_ragel.rl"
+#line 302 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(DECIMAL_ENTITY);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
+       goto st54;
 tr12:
-#line 272 "wikitext_ragel.rl"
+#line 296 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(HEX_ENTITY);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
+       goto st54;
 tr14:
-#line 266 "wikitext_ragel.rl"
+#line 290 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(NAMED_ENTITY);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
+       goto st54;
 tr18:
-#line 260 "wikitext_ragel.rl"
+#line 284 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(AMP_ENTITY);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
+       goto st54;
 tr22:
-#line 254 "wikitext_ragel.rl"
+#line 278 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(QUOT_ENTITY);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
+       goto st54;
 tr23:
-#line 296 "wikitext_ragel.rl"
+#line 320 "wikitext_ragel.rl"
        {{p = ((te))-1;}{
             EMIT(LESS);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr31:
+       goto st54;
+tr29:
+#line 121 "wikitext_ragel.rl"
+       {te = p+1;{
+            EMIT(EM_END);
+            {p++; cs = 54; goto _out;}
+        }}
+       goto st54;
+tr35:
 #line 79 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(NO_WIKI_END);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr33:
-#line 115 "wikitext_ragel.rl"
+       goto st54;
+tr41:
+#line 109 "wikitext_ragel.rl"
+       {te = p+1;{
+            EMIT(STRONG_END);
+            {p++; cs = 54; goto _out;}
+        }}
+       goto st54;
+tr43:
+#line 139 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(TT_END);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr39:
+       goto st54;
+tr45:
+#line 115 "wikitext_ragel.rl"
+       {te = p+1;{
+            EMIT(EM_START);
+            {p++; cs = 54; goto _out;}
+        }}
+       goto st54;
+tr51:
 #line 73 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(NO_WIKI_START);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr41:
-#line 109 "wikitext_ragel.rl"
+       goto st54;
+tr57:
+#line 103 "wikitext_ragel.rl"
+       {te = p+1;{
+            EMIT(STRONG_START);
+            {p++; cs = 54; goto _out;}
+        }}
+       goto st54;
+tr59:
+#line 133 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(TT_START);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr42:
-#line 218 "wikitext_ragel.rl"
+       goto st54;
+tr60:
+#line 242 "wikitext_ragel.rl"
        {{p = ((te))-1;}{
             EMIT(URI);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr48:
+       goto st54;
+tr66:
 #line 41 "wikitext_ragel.rl"
        {
         out->code_point = *p & 0x7f;
     }
-#line 340 "wikitext_ragel.rl"
+#line 364 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(DEFAULT);
             out->column_stop = out->column_start + 1;
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr49:
-#line 308 "wikitext_ragel.rl"
+       goto st54;
+tr67:
+#line 332 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(CRLF);
             out->column_stop = 1;
             out->line_stop++;
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
 #line 41 "wikitext_ragel.rl"
        {
         out->code_point = *p & 0x7f;
     }
-       goto st38;
-tr53:
-#line 284 "wikitext_ragel.rl"
+       goto st54;
+tr71:
+#line 308 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(QUOT);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr54:
-#line 148 "wikitext_ragel.rl"
+       goto st54;
+tr72:
+#line 172 "wikitext_ragel.rl"
        {te = p+1;{
             if (out->column_start == 1 || last_token_type == OL || last_token_type == UL || last_token_type == BLOCKQUOTE)
                 EMIT(OL);
             else
                 EMIT(PRINTABLE);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr57:
-#line 157 "wikitext_ragel.rl"
+       goto st54;
+tr75:
+#line 181 "wikitext_ragel.rl"
        {te = p+1;{
             if (out->column_start == 1 || last_token_type == OL || last_token_type == UL || last_token_type == BLOCKQUOTE)
                 EMIT(UL);
             else
                 EMIT(PRINTABLE);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr66:
-#line 103 "wikitext_ragel.rl"
+       goto st54;
+tr84:
+#line 127 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(TT);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr67:
-#line 236 "wikitext_ragel.rl"
+       goto st54;
+tr85:
+#line 260 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(SEPARATOR);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr68:
-#line 308 "wikitext_ragel.rl"
+       goto st54;
+tr86:
+#line 332 "wikitext_ragel.rl"
        {te = p;p--;{
             EMIT(CRLF);
             out->column_stop = 1;
             out->line_stop++;
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr69:
-#line 308 "wikitext_ragel.rl"
+       goto st54;
+tr87:
+#line 332 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(CRLF);
             out->column_stop = 1;
             out->line_stop++;
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr70:
-#line 136 "wikitext_ragel.rl"
+       goto st54;
+tr88:
+#line 160 "wikitext_ragel.rl"
        {te = p;p--;{
             if (out->column_start == 1 || last_token_type == BLOCKQUOTE)
             {
@@ -316,24 +344,24 @@ tr70:
             }
             else
                 EMIT(SPACE);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr72:
-#line 320 "wikitext_ragel.rl"
+       goto st54;
+tr90:
+#line 344 "wikitext_ragel.rl"
        {te = p;p--;{
             EMIT(PRINTABLE);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr73:
-#line 290 "wikitext_ragel.rl"
+       goto st54;
+tr91:
+#line 314 "wikitext_ragel.rl"
        {te = p;p--;{
             EMIT(AMP);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr77:
+       goto st54;
+tr95:
 #line 85 "wikitext_ragel.rl"
        {te = p;p--;{
             if (DISTANCE() == 5)
@@ -349,10 +377,10 @@ tr77:
                 EMIT(EM);
             else
                 EMIT(PRINTABLE);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr81:
+       goto st54;
+tr99:
 #line 85 "wikitext_ragel.rl"
        {te = p+1;{
             if (DISTANCE() == 5)
@@ -368,18 +396,18 @@ tr81:
                 EMIT(EM);
             else
                 EMIT(PRINTABLE);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr82:
-#line 296 "wikitext_ragel.rl"
+       goto st54;
+tr100:
+#line 320 "wikitext_ragel.rl"
        {te = p;p--;{
             EMIT(LESS);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr86:
-#line 166 "wikitext_ragel.rl"
+       goto st54;
+tr106:
+#line 190 "wikitext_ragel.rl"
        {te = p;p--;{
             if (out->column_start == 1 || last_token_type == BLOCKQUOTE)
             {
@@ -428,11 +456,11 @@ tr86:
                 REWIND();
                 EMIT(PRINTABLE);
             }
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr88:
-#line 122 "wikitext_ragel.rl"
+       goto st54;
+tr108:
+#line 146 "wikitext_ragel.rl"
        {te = p;p--;{
             if (out->column_start == 1 || last_token_type == BLOCKQUOTE)
                 EMIT(BLOCKQUOTE);
@@ -441,11 +469,11 @@ tr88:
                 REWIND();
                 EMIT(GREATER);
             }
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr89:
-#line 122 "wikitext_ragel.rl"
+       goto st54;
+tr109:
+#line 146 "wikitext_ragel.rl"
        {te = p+1;{
             if (out->column_start == 1 || last_token_type == BLOCKQUOTE)
                 EMIT(BLOCKQUOTE);
@@ -454,96 +482,96 @@ tr89:
                 REWIND();
                 EMIT(GREATER);
             }
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr96:
-#line 218 "wikitext_ragel.rl"
+       goto st54;
+tr116:
+#line 242 "wikitext_ragel.rl"
        {te = p;p--;{
             EMIT(URI);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr97:
+       goto st54;
+tr117:
 #line 1 "wikitext_ragel.rl"
        {       switch( act ) {
-       case 12:
+       case 16:
        {{p = ((te))-1;}
             EMIT(URI);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }
        break;
-       case 28:
+       case 32:
        {{p = ((te))-1;}
             EMIT(PRINTABLE);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }
        break;
        default: break;
        }
        }
-       goto st38;
-tr100:
-#line 242 "wikitext_ragel.rl"
+       goto st54;
+tr120:
+#line 266 "wikitext_ragel.rl"
        {te = p;p--;{
             EMIT(EXT_LINK_START);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr101:
-#line 224 "wikitext_ragel.rl"
+       goto st54;
+tr121:
+#line 248 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(LINK_START);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr102:
-#line 248 "wikitext_ragel.rl"
+       goto st54;
+tr122:
+#line 272 "wikitext_ragel.rl"
        {te = p;p--;{
             EMIT(EXT_LINK_END);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-tr103:
-#line 230 "wikitext_ragel.rl"
+       goto st54;
+tr123:
+#line 254 "wikitext_ragel.rl"
        {te = p+1;{
             EMIT(LINK_END);
-            {p++; cs = 38; goto _out;}
+            {p++; cs = 54; goto _out;}
         }}
-       goto st38;
-st38:
+       goto st54;
+st54:
 #line 1 "wikitext_ragel.rl"
        {ts = 0;}
        if ( ++p == pe )
-               goto _test_eof38;
-case 38:
+               goto _test_eof54;
+case 54:
 #line 1 "wikitext_ragel.rl"
        {ts = p;}
-#line 523 "wikitext_ragel.c"
+#line 551 "wikitext_ragel.c"
        switch( (*p) ) {
-               case 10: goto tr49;
-               case 13: goto tr50;
-               case 32: goto tr51;
-               case 34: goto tr53;
-               case 35: goto tr54;
-               case 38: goto tr55;
-               case 39: goto st43;
-               case 42: goto tr57;
-               case 60: goto tr58;
-               case 61: goto tr59;
-               case 62: goto tr60;
-               case 70: goto st51;
-               case 72: goto st59;
-               case 83: goto st60;
-               case 91: goto st62;
-               case 93: goto st63;
-               case 96: goto tr66;
-               case 102: goto st51;
-               case 104: goto st59;
-               case 115: goto st60;
-               case 124: goto tr67;
-               case 126: goto st41;
-               case 127: goto tr48;
+               case 10: goto tr67;
+               case 13: goto tr68;
+               case 32: goto tr69;
+               case 34: goto tr71;
+               case 35: goto tr72;
+               case 38: goto tr73;
+               case 39: goto st59;
+               case 42: goto tr75;
+               case 60: goto tr76;
+               case 61: goto tr77;
+               case 62: goto tr78;
+               case 70: goto st67;
+               case 72: goto st75;
+               case 83: goto st76;
+               case 91: goto st78;
+               case 93: goto st79;
+               case 96: goto tr84;
+               case 102: goto st67;
+               case 104: goto st75;
+               case 115: goto st76;
+               case 124: goto tr85;
+               case 126: goto st57;
+               case 127: goto tr66;
        }
        if ( (*p) < -16 ) {
                if ( (*p) > -33 ) {
@@ -554,9 +582,9 @@ case 38:
        } else if ( (*p) > -12 ) {
                if ( (*p) > 31 ) {
                        if ( 33 <= (*p) && (*p) <= 123 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) >= 1 )
-                       goto tr48;
+                       goto tr66;
        } else
                goto st4;
        goto st0;
@@ -605,70 +633,70 @@ case 6:
        if ( (*p) <= -65 )
                goto tr6;
        goto st0;
-tr50:
+tr68:
 #line 41 "wikitext_ragel.rl"
        {
         out->code_point = *p & 0x7f;
     }
-       goto st39;
-st39:
+       goto st55;
+st55:
        if ( ++p == pe )
-               goto _test_eof39;
-case 39:
-#line 619 "wikitext_ragel.c"
+               goto _test_eof55;
+case 55:
+#line 647 "wikitext_ragel.c"
        if ( (*p) == 10 )
-               goto tr69;
-       goto tr68;
-tr51:
+               goto tr87;
+       goto tr86;
+tr69:
 #line 36 "wikitext_ragel.rl"
        {
         MARK();
     }
-       goto st40;
-st40:
+       goto st56;
+st56:
        if ( ++p == pe )
-               goto _test_eof40;
-case 40:
-#line 633 "wikitext_ragel.c"
+               goto _test_eof56;
+case 56:
+#line 661 "wikitext_ragel.c"
        if ( (*p) == 32 )
-               goto st40;
-       goto tr70;
-st41:
+               goto st56;
+       goto tr88;
+st57:
        if ( ++p == pe )
-               goto _test_eof41;
-case 41:
+               goto _test_eof57;
+case 57:
        switch( (*p) ) {
-               case 33: goto st41;
-               case 92: goto st41;
-               case 126: goto st41;
+               case 33: goto st57;
+               case 92: goto st57;
+               case 126: goto st57;
        }
        if ( (*p) < 43 ) {
                if ( (*p) > 37 ) {
                        if ( 40 <= (*p) && (*p) <= 41 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) >= 36 )
-                       goto st41;
+                       goto st57;
        } else if ( (*p) > 59 ) {
                if ( (*p) < 94 ) {
                        if ( 63 <= (*p) && (*p) <= 90 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) > 95 ) {
                        if ( 97 <= (*p) && (*p) <= 123 )
-                               goto st41;
+                               goto st57;
                } else
-                       goto st41;
+                       goto st57;
        } else
-               goto st41;
-       goto tr72;
-tr55:
+               goto st57;
+       goto tr90;
+tr73:
 #line 1 "wikitext_ragel.rl"
        {te = p+1;}
-       goto st42;
-st42:
+       goto st58;
+st58:
        if ( ++p == pe )
-               goto _test_eof42;
-case 42:
-#line 672 "wikitext_ragel.c"
+               goto _test_eof58;
+case 58:
+#line 700 "wikitext_ragel.c"
        switch( (*p) ) {
                case 35: goto st7;
                case 97: goto st13;
@@ -679,7 +707,7 @@ case 42:
                        goto st11;
        } else if ( (*p) >= 65 )
                goto st11;
-       goto tr73;
+       goto tr91;
 st7:
        if ( ++p == pe )
                goto _test_eof7;
@@ -867,60 +895,68 @@ case 19:
        } else
                goto st11;
        goto tr7;
-st43:
+st59:
        if ( ++p == pe )
-               goto _test_eof43;
-case 43:
+               goto _test_eof59;
+case 59:
        if ( (*p) == 39 )
-               goto st44;
-       goto tr77;
-st44:
+               goto st60;
+       goto tr95;
+st60:
        if ( ++p == pe )
-               goto _test_eof44;
-case 44:
+               goto _test_eof60;
+case 60:
        if ( (*p) == 39 )
-               goto st45;
-       goto tr77;
-st45:
+               goto st61;
+       goto tr95;
+st61:
        if ( ++p == pe )
-               goto _test_eof45;
-case 45:
+               goto _test_eof61;
+case 61:
        if ( (*p) == 39 )
-               goto st46;
-       goto tr77;
-st46:
+               goto st62;
+       goto tr95;
+st62:
        if ( ++p == pe )
-               goto _test_eof46;
-case 46:
+               goto _test_eof62;
+case 62:
        if ( (*p) == 39 )
-               goto tr81;
-       goto tr77;
-tr58:
+               goto tr99;
+       goto tr95;
+tr76:
 #line 1 "wikitext_ragel.rl"
        {te = p+1;}
-       goto st47;
-st47:
+       goto st63;
+st63:
        if ( ++p == pe )
-               goto _test_eof47;
-case 47:
-#line 907 "wikitext_ragel.c"
+               goto _test_eof63;
+case 63:
+#line 935 "wikitext_ragel.c"
        switch( (*p) ) {
                case 47: goto st20;
-               case 78: goto st29;
-               case 84: goto st35;
-               case 110: goto st29;
-               case 116: goto st35;
+               case 69: goto st37;
+               case 78: goto st39;
+               case 83: goto st45;
+               case 84: goto st51;
+               case 101: goto st37;
+               case 110: goto st39;
+               case 115: goto st45;
+               case 116: goto st51;
        }
-       goto tr82;
+       goto tr100;
 st20:
        if ( ++p == pe )
                goto _test_eof20;
 case 20:
        switch( (*p) ) {
-               case 78: goto st21;
-               case 84: goto st27;
-               case 110: goto st21;
-               case 116: goto st27;
+               case 69: goto st21;
+               case 78: goto st23;
+               case 83: goto st29;
+               case 84: goto st35;
+               case 101: goto st21;
+               case 110: goto st23;
+               case 115: goto st29;
+               case 116: goto st35;
        }
        goto tr23;
 st21:
@@ -928,26 +964,24 @@ st21:
                goto _test_eof21;
 case 21:
        switch( (*p) ) {
-               case 79: goto st22;
-               case 111: goto st22;
+               case 77: goto st22;
+               case 109: goto st22;
        }
        goto tr23;
 st22:
        if ( ++p == pe )
                goto _test_eof22;
 case 22:
-       switch( (*p) ) {
-               case 87: goto st23;
-               case 119: goto st23;
-       }
+       if ( (*p) == 62 )
+               goto tr29;
        goto tr23;
 st23:
        if ( ++p == pe )
                goto _test_eof23;
 case 23:
        switch( (*p) ) {
-               case 73: goto st24;
-               case 105: goto st24;
+               case 79: goto st24;
+               case 111: goto st24;
        }
        goto tr23;
 st24:
@@ -955,8 +989,8 @@ st24:
                goto _test_eof24;
 case 24:
        switch( (*p) ) {
-               case 75: goto st25;
-               case 107: goto st25;
+               case 87: goto st25;
+               case 119: goto st25;
        }
        goto tr23;
 st25:
@@ -972,16 +1006,18 @@ st26:
        if ( ++p == pe )
                goto _test_eof26;
 case 26:
-       if ( (*p) == 62 )
-               goto tr31;
+       switch( (*p) ) {
+               case 75: goto st27;
+               case 107: goto st27;
+       }
        goto tr23;
 st27:
        if ( ++p == pe )
                goto _test_eof27;
 case 27:
        switch( (*p) ) {
-               case 84: goto st28;
-               case 116: goto st28;
+               case 73: goto st28;
+               case 105: goto st28;
        }
        goto tr23;
 st28:
@@ -989,15 +1025,15 @@ st28:
                goto _test_eof28;
 case 28:
        if ( (*p) == 62 )
-               goto tr33;
+               goto tr35;
        goto tr23;
 st29:
        if ( ++p == pe )
                goto _test_eof29;
 case 29:
        switch( (*p) ) {
-               case 79: goto st30;
-               case 111: goto st30;
+               case 84: goto st30;
+               case 116: goto st30;
        }
        goto tr23;
 st30:
@@ -1005,8 +1041,8 @@ st30:
                goto _test_eof30;
 case 30:
        switch( (*p) ) {
-               case 87: goto st31;
-               case 119: goto st31;
+               case 82: goto st31;
+               case 114: goto st31;
        }
        goto tr23;
 st31:
@@ -1014,8 +1050,8 @@ st31:
                goto _test_eof31;
 case 31:
        switch( (*p) ) {
-               case 73: goto st32;
-               case 105: goto st32;
+               case 79: goto st32;
+               case 111: goto st32;
        }
        goto tr23;
 st32:
@@ -1023,8 +1059,8 @@ st32:
                goto _test_eof32;
 case 32:
        switch( (*p) ) {
-               case 75: goto st33;
-               case 107: goto st33;
+               case 78: goto st33;
+               case 110: goto st33;
        }
        goto tr23;
 st33:
@@ -1032,8 +1068,8 @@ st33:
                goto _test_eof33;
 case 33:
        switch( (*p) ) {
-               case 73: goto st34;
-               case 105: goto st34;
+               case 71: goto st34;
+               case 103: goto st34;
        }
        goto tr23;
 st34:
@@ -1041,7 +1077,7 @@ st34:
                goto _test_eof34;
 case 34:
        if ( (*p) == 62 )
-               goto tr39;
+               goto tr41;
        goto tr23;
 st35:
        if ( ++p == pe )
@@ -1057,444 +1093,580 @@ st36:
                goto _test_eof36;
 case 36:
        if ( (*p) == 62 )
-               goto tr41;
+               goto tr43;
+       goto tr23;
+st37:
+       if ( ++p == pe )
+               goto _test_eof37;
+case 37:
+       switch( (*p) ) {
+               case 77: goto st38;
+               case 109: goto st38;
+       }
+       goto tr23;
+st38:
+       if ( ++p == pe )
+               goto _test_eof38;
+case 38:
+       if ( (*p) == 62 )
+               goto tr45;
+       goto tr23;
+st39:
+       if ( ++p == pe )
+               goto _test_eof39;
+case 39:
+       switch( (*p) ) {
+               case 79: goto st40;
+               case 111: goto st40;
+       }
+       goto tr23;
+st40:
+       if ( ++p == pe )
+               goto _test_eof40;
+case 40:
+       switch( (*p) ) {
+               case 87: goto st41;
+               case 119: goto st41;
+       }
+       goto tr23;
+st41:
+       if ( ++p == pe )
+               goto _test_eof41;
+case 41:
+       switch( (*p) ) {
+               case 73: goto st42;
+               case 105: goto st42;
+       }
+       goto tr23;
+st42:
+       if ( ++p == pe )
+               goto _test_eof42;
+case 42:
+       switch( (*p) ) {
+               case 75: goto st43;
+               case 107: goto st43;
+       }
+       goto tr23;
+st43:
+       if ( ++p == pe )
+               goto _test_eof43;
+case 43:
+       switch( (*p) ) {
+               case 73: goto st44;
+               case 105: goto st44;
+       }
+       goto tr23;
+st44:
+       if ( ++p == pe )
+               goto _test_eof44;
+case 44:
+       if ( (*p) == 62 )
+               goto tr51;
+       goto tr23;
+st45:
+       if ( ++p == pe )
+               goto _test_eof45;
+case 45:
+       switch( (*p) ) {
+               case 84: goto st46;
+               case 116: goto st46;
+       }
+       goto tr23;
+st46:
+       if ( ++p == pe )
+               goto _test_eof46;
+case 46:
+       switch( (*p) ) {
+               case 82: goto st47;
+               case 114: goto st47;
+       }
+       goto tr23;
+st47:
+       if ( ++p == pe )
+               goto _test_eof47;
+case 47:
+       switch( (*p) ) {
+               case 79: goto st48;
+               case 111: goto st48;
+       }
        goto tr23;
-tr59:
-#line 36 "wikitext_ragel.rl"
-       {
-        MARK();
-    }
-       goto st48;
 st48:
        if ( ++p == pe )
                goto _test_eof48;
 case 48:
-#line 1073 "wikitext_ragel.c"
        switch( (*p) ) {
-               case 32: goto st49;
-               case 61: goto tr59;
+               case 78: goto st49;
+               case 110: goto st49;
        }
-       goto tr86;
+       goto tr23;
 st49:
        if ( ++p == pe )
                goto _test_eof49;
 case 49:
-       if ( (*p) == 32 )
-               goto st49;
-       goto tr86;
-tr60:
-#line 36 "wikitext_ragel.rl"
-       {
-        MARK();
-    }
-       goto st50;
+       switch( (*p) ) {
+               case 71: goto st50;
+               case 103: goto st50;
+       }
+       goto tr23;
 st50:
        if ( ++p == pe )
                goto _test_eof50;
 case 50:
-#line 1096 "wikitext_ragel.c"
-       if ( (*p) == 32 )
-               goto tr89;
-       goto tr88;
+       if ( (*p) == 62 )
+               goto tr57;
+       goto tr23;
 st51:
        if ( ++p == pe )
                goto _test_eof51;
 case 51:
        switch( (*p) ) {
-               case 33: goto st41;
                case 84: goto st52;
-               case 92: goto st41;
                case 116: goto st52;
-               case 126: goto st41;
+       }
+       goto tr23;
+st52:
+       if ( ++p == pe )
+               goto _test_eof52;
+case 52:
+       if ( (*p) == 62 )
+               goto tr59;
+       goto tr23;
+tr77:
+#line 36 "wikitext_ragel.rl"
+       {
+        MARK();
+    }
+       goto st64;
+st64:
+       if ( ++p == pe )
+               goto _test_eof64;
+case 64:
+#line 1245 "wikitext_ragel.c"
+       switch( (*p) ) {
+               case 32: goto st65;
+               case 61: goto tr77;
+       }
+       goto tr106;
+st65:
+       if ( ++p == pe )
+               goto _test_eof65;
+case 65:
+       if ( (*p) == 32 )
+               goto st65;
+       goto tr106;
+tr78:
+#line 36 "wikitext_ragel.rl"
+       {
+        MARK();
+    }
+       goto st66;
+st66:
+       if ( ++p == pe )
+               goto _test_eof66;
+case 66:
+#line 1268 "wikitext_ragel.c"
+       if ( (*p) == 32 )
+               goto tr109;
+       goto tr108;
+st67:
+       if ( ++p == pe )
+               goto _test_eof67;
+case 67:
+       switch( (*p) ) {
+               case 33: goto st57;
+               case 84: goto st68;
+               case 92: goto st57;
+               case 116: goto st68;
+               case 126: goto st57;
        }
        if ( (*p) < 43 ) {
                if ( (*p) > 37 ) {
                        if ( 40 <= (*p) && (*p) <= 41 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) >= 36 )
-                       goto st41;
+                       goto st57;
        } else if ( (*p) > 59 ) {
                if ( (*p) < 94 ) {
                        if ( 63 <= (*p) && (*p) <= 90 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) > 95 ) {
                        if ( 97 <= (*p) && (*p) <= 123 )
-                               goto st41;
+                               goto st57;
                } else
-                       goto st41;
+                       goto st57;
        } else
-               goto st41;
-       goto tr72;
-st52:
+               goto st57;
+       goto tr90;
+st68:
        if ( ++p == pe )
-               goto _test_eof52;
-case 52:
+               goto _test_eof68;
+case 68:
        switch( (*p) ) {
-               case 33: goto st41;
-               case 80: goto st53;
-               case 92: goto st41;
-               case 112: goto st53;
-               case 126: goto st41;
+               case 33: goto st57;
+               case 80: goto st69;
+               case 92: goto st57;
+               case 112: goto st69;
+               case 126: goto st57;
        }
        if ( (*p) < 43 ) {
                if ( (*p) > 37 ) {
                        if ( 40 <= (*p) && (*p) <= 41 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) >= 36 )
-                       goto st41;
+                       goto st57;
        } else if ( (*p) > 59 ) {
                if ( (*p) < 94 ) {
                        if ( 63 <= (*p) && (*p) <= 90 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) > 95 ) {
                        if ( 97 <= (*p) && (*p) <= 123 )
-                               goto st41;
+                               goto st57;
                } else
-                       goto st41;
+                       goto st57;
        } else
-               goto st41;
-       goto tr72;
-st53:
+               goto st57;
+       goto tr90;
+st69:
        if ( ++p == pe )
-               goto _test_eof53;
-case 53:
+               goto _test_eof69;
+case 69:
        switch( (*p) ) {
-               case 33: goto st41;
-               case 58: goto st54;
-               case 92: goto st41;
-               case 126: goto st41;
+               case 33: goto st57;
+               case 58: goto st70;
+               case 92: goto st57;
+               case 126: goto st57;
        }
        if ( (*p) < 43 ) {
                if ( (*p) > 37 ) {
                        if ( 40 <= (*p) && (*p) <= 41 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) >= 36 )
-                       goto st41;
+                       goto st57;
        } else if ( (*p) > 59 ) {
                if ( (*p) < 94 ) {
                        if ( 63 <= (*p) && (*p) <= 90 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) > 95 ) {
                        if ( 97 <= (*p) && (*p) <= 123 )
-                               goto st41;
+                               goto st57;
                } else
-                       goto st41;
+                       goto st57;
        } else
-               goto st41;
-       goto tr72;
-st54:
+               goto st57;
+       goto tr90;
+st70:
        if ( ++p == pe )
-               goto _test_eof54;
-case 54:
+               goto _test_eof70;
+case 70:
        switch( (*p) ) {
-               case 33: goto st41;
-               case 47: goto st55;
-               case 92: goto st41;
-               case 126: goto st41;
+               case 33: goto st57;
+               case 47: goto st71;
+               case 92: goto st57;
+               case 126: goto st57;
        }
        if ( (*p) < 43 ) {
                if ( (*p) > 37 ) {
                        if ( 40 <= (*p) && (*p) <= 41 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) >= 36 )
-                       goto st41;
+                       goto st57;
        } else if ( (*p) > 59 ) {
                if ( (*p) < 94 ) {
                        if ( 63 <= (*p) && (*p) <= 90 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) > 95 ) {
                        if ( 97 <= (*p) && (*p) <= 123 )
-                               goto st41;
+                               goto st57;
                } else
-                       goto st41;
+                       goto st57;
        } else
-               goto st41;
-       goto tr72;
-st55:
+               goto st57;
+       goto tr90;
+st71:
        if ( ++p == pe )
-               goto _test_eof55;
-case 55:
+               goto _test_eof71;
+case 71:
        switch( (*p) ) {
-               case 33: goto st41;
-               case 47: goto st56;
-               case 92: goto st41;
-               case 126: goto st41;
+               case 33: goto st57;
+               case 47: goto st72;
+               case 92: goto st57;
+               case 126: goto st57;
        }
        if ( (*p) < 43 ) {
                if ( (*p) > 37 ) {
                        if ( 40 <= (*p) && (*p) <= 41 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) >= 36 )
-                       goto st41;
+                       goto st57;
        } else if ( (*p) > 59 ) {
                if ( (*p) < 94 ) {
                        if ( 63 <= (*p) && (*p) <= 90 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) > 95 ) {
                        if ( 97 <= (*p) && (*p) <= 123 )
-                               goto st41;
+                               goto st57;
                } else
-                       goto st41;
+                       goto st57;
        } else
-               goto st41;
-       goto tr72;
-st56:
+               goto st57;
+       goto tr90;
+st72:
        if ( ++p == pe )
-               goto _test_eof56;
-case 56:
+               goto _test_eof72;
+case 72:
        switch( (*p) ) {
-               case 33: goto st41;
-               case 35: goto tr44;
-               case 40: goto tr95;
-               case 41: goto st41;
-               case 44: goto st41;
-               case 46: goto st41;
-               case 61: goto tr44;
-               case 63: goto st41;
-               case 92: goto st41;
-               case 94: goto st41;
-               case 95: goto tr95;
-               case 123: goto st41;
-               case 126: goto tr95;
+               case 33: goto st57;
+               case 35: goto tr62;
+               case 40: goto tr115;
+               case 41: goto st57;
+               case 44: goto st57;
+               case 46: goto st57;
+               case 61: goto tr62;
+               case 63: goto st57;
+               case 92: goto st57;
+               case 94: goto st57;
+               case 95: goto tr115;
+               case 123: goto st57;
+               case 126: goto tr115;
        }
        if ( (*p) < 43 ) {
                if ( (*p) > 37 ) {
                        if ( 38 <= (*p) && (*p) <= 42 )
-                               goto tr44;
+                               goto tr62;
                } else if ( (*p) >= 36 )
-                       goto tr95;
+                       goto tr115;
        } else if ( (*p) > 57 ) {
                if ( (*p) < 64 ) {
                        if ( 58 <= (*p) && (*p) <= 59 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) > 90 ) {
                        if ( 97 <= (*p) && (*p) <= 122 )
-                               goto tr95;
+                               goto tr115;
                } else
-                       goto tr95;
+                       goto tr115;
        } else
-               goto tr95;
-       goto tr72;
-tr44:
+               goto tr115;
+       goto tr90;
+tr62:
 #line 1 "wikitext_ragel.rl"
        {te = p+1;}
-       goto st57;
-st57:
+       goto st73;
+st73:
        if ( ++p == pe )
-               goto _test_eof57;
-case 57:
-#line 1287 "wikitext_ragel.c"
+               goto _test_eof73;
+case 73:
+#line 1459 "wikitext_ragel.c"
        switch( (*p) ) {
-               case 33: goto st37;
-               case 41: goto st37;
-               case 44: goto st37;
-               case 46: goto st37;
-               case 61: goto tr44;
-               case 63: goto st37;
-               case 95: goto tr44;
-               case 126: goto tr44;
+               case 33: goto st53;
+               case 41: goto st53;
+               case 44: goto st53;
+               case 46: goto st53;
+               case 61: goto tr62;
+               case 63: goto st53;
+               case 95: goto tr62;
+               case 126: goto tr62;
        }
        if ( (*p) < 58 ) {
                if ( 35 <= (*p) && (*p) <= 57 )
-                       goto tr44;
+                       goto tr62;
        } else if ( (*p) > 59 ) {
                if ( (*p) > 90 ) {
                        if ( 97 <= (*p) && (*p) <= 122 )
-                               goto tr44;
+                               goto tr62;
                } else if ( (*p) >= 64 )
-                       goto tr44;
+                       goto tr62;
        } else
-               goto st37;
-       goto tr96;
-st37:
+               goto st53;
+       goto tr116;
+st53:
        if ( ++p == pe )
-               goto _test_eof37;
-case 37:
+               goto _test_eof53;
+case 53:
        switch( (*p) ) {
-               case 33: goto st37;
-               case 41: goto st37;
-               case 44: goto st37;
-               case 46: goto st37;
-               case 61: goto tr44;
-               case 63: goto st37;
-               case 95: goto tr44;
-               case 126: goto tr44;
+               case 33: goto st53;
+               case 41: goto st53;
+               case 44: goto st53;
+               case 46: goto st53;
+               case 61: goto tr62;
+               case 63: goto st53;
+               case 95: goto tr62;
+               case 126: goto tr62;
        }
        if ( (*p) < 58 ) {
                if ( 35 <= (*p) && (*p) <= 57 )
-                       goto tr44;
+                       goto tr62;
        } else if ( (*p) > 59 ) {
                if ( (*p) > 90 ) {
                        if ( 97 <= (*p) && (*p) <= 122 )
-                               goto tr44;
+                               goto tr62;
                } else if ( (*p) >= 64 )
-                       goto tr44;
+                       goto tr62;
        } else
-               goto st37;
-       goto tr42;
-tr95:
+               goto st53;
+       goto tr60;
+tr115:
 #line 1 "wikitext_ragel.rl"
        {te = p+1;}
-#line 218 "wikitext_ragel.rl"
-       {act = 12;}
-       goto st58;
-tr98:
+#line 242 "wikitext_ragel.rl"
+       {act = 16;}
+       goto st74;
+tr118:
 #line 1 "wikitext_ragel.rl"
        {te = p+1;}
-#line 320 "wikitext_ragel.rl"
-       {act = 28;}
-       goto st58;
-st58:
+#line 344 "wikitext_ragel.rl"
+       {act = 32;}
+       goto st74;
+st74:
        if ( ++p == pe )
-               goto _test_eof58;
-case 58:
-#line 1352 "wikitext_ragel.c"
+               goto _test_eof74;
+case 74:
+#line 1524 "wikitext_ragel.c"
        switch( (*p) ) {
-               case 33: goto tr98;
-               case 35: goto tr44;
-               case 40: goto tr95;
-               case 41: goto tr98;
-               case 44: goto tr98;
-               case 46: goto tr98;
-               case 61: goto tr44;
-               case 63: goto tr98;
-               case 92: goto st41;
-               case 94: goto st41;
-               case 95: goto tr95;
-               case 123: goto st41;
-               case 126: goto tr95;
+               case 33: goto tr118;
+               case 35: goto tr62;
+               case 40: goto tr115;
+               case 41: goto tr118;
+               case 44: goto tr118;
+               case 46: goto tr118;
+               case 61: goto tr62;
+               case 63: goto tr118;
+               case 92: goto st57;
+               case 94: goto st57;
+               case 95: goto tr115;
+               case 123: goto st57;
+               case 126: goto tr115;
        }
        if ( (*p) < 43 ) {
                if ( (*p) > 37 ) {
                        if ( 38 <= (*p) && (*p) <= 42 )
-                               goto tr44;
+                               goto tr62;
                } else if ( (*p) >= 36 )
-                       goto tr95;
+                       goto tr115;
        } else if ( (*p) > 57 ) {
                if ( (*p) < 64 ) {
                        if ( 58 <= (*p) && (*p) <= 59 )
-                               goto tr98;
+                               goto tr118;
                } else if ( (*p) > 90 ) {
                        if ( 97 <= (*p) && (*p) <= 122 )
-                               goto tr95;
+                               goto tr115;
                } else
-                       goto tr95;
+                       goto tr115;
        } else
-               goto tr95;
-       goto tr97;
-st59:
+               goto tr115;
+       goto tr117;
+st75:
        if ( ++p == pe )
-               goto _test_eof59;
-case 59:
+               goto _test_eof75;
+case 75:
        switch( (*p) ) {
-               case 33: goto st41;
-               case 84: goto st51;
-               case 92: goto st41;
-               case 116: goto st51;
-               case 126: goto st41;
+               case 33: goto st57;
+               case 84: goto st67;
+               case 92: goto st57;
+               case 116: goto st67;
+               case 126: goto st57;
        }
        if ( (*p) < 43 ) {
                if ( (*p) > 37 ) {
                        if ( 40 <= (*p) && (*p) <= 41 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) >= 36 )
-                       goto st41;
+                       goto st57;
        } else if ( (*p) > 59 ) {
                if ( (*p) < 94 ) {
                        if ( 63 <= (*p) && (*p) <= 90 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) > 95 ) {
                        if ( 97 <= (*p) && (*p) <= 123 )
-                               goto st41;
+                               goto st57;
                } else
-                       goto st41;
+                       goto st57;
        } else
-               goto st41;
-       goto tr72;
-st60:
+               goto st57;
+       goto tr90;
+st76:
        if ( ++p == pe )
-               goto _test_eof60;
-case 60:
+               goto _test_eof76;
+case 76:
        switch( (*p) ) {
-               case 33: goto st41;
-               case 86: goto st61;
-               case 92: goto st41;
-               case 118: goto st61;
-               case 126: goto st41;
+               case 33: goto st57;
+               case 86: goto st77;
+               case 92: goto st57;
+               case 118: goto st77;
+               case 126: goto st57;
        }
        if ( (*p) < 43 ) {
                if ( (*p) > 37 ) {
                        if ( 40 <= (*p) && (*p) <= 41 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) >= 36 )
-                       goto st41;
+                       goto st57;
        } else if ( (*p) > 59 ) {
                if ( (*p) < 94 ) {
                        if ( 63 <= (*p) && (*p) <= 90 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) > 95 ) {
                        if ( 97 <= (*p) && (*p) <= 123 )
-                               goto st41;
+                               goto st57;
                } else
-                       goto st41;
+                       goto st57;
        } else
-               goto st41;
-       goto tr72;
-st61:
+               goto st57;
+       goto tr90;
+st77:
        if ( ++p == pe )
-               goto _test_eof61;
-case 61:
+               goto _test_eof77;
+case 77:
        switch( (*p) ) {
-               case 33: goto st41;
-               case 78: goto st53;
-               case 92: goto st41;
-               case 110: goto st53;
-               case 126: goto st41;
+               case 33: goto st57;
+               case 78: goto st69;
+               case 92: goto st57;
+               case 110: goto st69;
+               case 126: goto st57;
        }
        if ( (*p) < 43 ) {
                if ( (*p) > 37 ) {
                        if ( 40 <= (*p) && (*p) <= 41 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) >= 36 )
-                       goto st41;
+                       goto st57;
        } else if ( (*p) > 59 ) {
                if ( (*p) < 94 ) {
                        if ( 63 <= (*p) && (*p) <= 90 )
-                               goto st41;
+                               goto st57;
                } else if ( (*p) > 95 ) {
                        if ( 97 <= (*p) && (*p) <= 123 )
-                               goto st41;
+                               goto st57;
                } else
-                       goto st41;
+                       goto st57;
        } else
-               goto st41;
-       goto tr72;
-st62:
+               goto st57;
+       goto tr90;
+st78:
        if ( ++p == pe )
-               goto _test_eof62;
-case 62:
+               goto _test_eof78;
+case 78:
        if ( (*p) == 91 )
-               goto tr101;
-       goto tr100;
-st63:
+               goto tr121;
+       goto tr120;
+st79:
        if ( ++p == pe )
-               goto _test_eof63;
-case 63:
+               goto _test_eof79;
+case 79:
        if ( (*p) == 93 )
-               goto tr103;
-       goto tr102;
+               goto tr123;
+       goto tr122;
        }
-       _test_eof38: cs = 38; goto _test_eof; 
+       _test_eof54: cs = 54; goto _test_eof; 
        _test_eof1: cs = 1; goto _test_eof; 
        _test_eof2: cs = 2; goto _test_eof; 
        _test_eof3: cs = 3; goto _test_eof; 
        _test_eof4: cs = 4; goto _test_eof; 
        _test_eof5: cs = 5; goto _test_eof; 
        _test_eof6: cs = 6; goto _test_eof; 
-       _test_eof39: cs = 39; goto _test_eof; 
-       _test_eof40: cs = 40; goto _test_eof; 
-       _test_eof41: cs = 41; goto _test_eof; 
-       _test_eof42: cs = 42; goto _test_eof; 
+       _test_eof55: cs = 55; goto _test_eof; 
+       _test_eof56: cs = 56; goto _test_eof; 
+       _test_eof57: cs = 57; goto _test_eof; 
+       _test_eof58: cs = 58; goto _test_eof; 
        _test_eof7: cs = 7; goto _test_eof; 
        _test_eof8: cs = 8; goto _test_eof; 
        _test_eof9: cs = 9; goto _test_eof; 
@@ -1508,11 +1680,11 @@ case 63:
        _test_eof17: cs = 17; goto _test_eof; 
        _test_eof18: cs = 18; goto _test_eof; 
        _test_eof19: cs = 19; goto _test_eof; 
-       _test_eof43: cs = 43; goto _test_eof; 
-       _test_eof44: cs = 44; goto _test_eof; 
-       _test_eof45: cs = 45; goto _test_eof; 
-       _test_eof46: cs = 46; goto _test_eof; 
-       _test_eof47: cs = 47; goto _test_eof; 
+       _test_eof59: cs = 59; goto _test_eof; 
+       _test_eof60: cs = 60; goto _test_eof; 
+       _test_eof61: cs = 61; goto _test_eof; 
+       _test_eof62: cs = 62; goto _test_eof; 
+       _test_eof63: cs = 63; goto _test_eof; 
        _test_eof20: cs = 20; goto _test_eof; 
        _test_eof21: cs = 21; goto _test_eof; 
        _test_eof22: cs = 22; goto _test_eof; 
@@ -1530,32 +1702,48 @@ case 63:
        _test_eof34: cs = 34; goto _test_eof; 
        _test_eof35: cs = 35; goto _test_eof; 
        _test_eof36: cs = 36; goto _test_eof; 
+       _test_eof37: cs = 37; goto _test_eof; 
+       _test_eof38: cs = 38; goto _test_eof; 
+       _test_eof39: cs = 39; goto _test_eof; 
+       _test_eof40: cs = 40; goto _test_eof; 
+       _test_eof41: cs = 41; goto _test_eof; 
+       _test_eof42: cs = 42; goto _test_eof; 
+       _test_eof43: cs = 43; goto _test_eof; 
+       _test_eof44: cs = 44; goto _test_eof; 
+       _test_eof45: cs = 45; goto _test_eof; 
+       _test_eof46: cs = 46; goto _test_eof; 
+       _test_eof47: cs = 47; goto _test_eof; 
        _test_eof48: cs = 48; goto _test_eof; 
        _test_eof49: cs = 49; goto _test_eof; 
        _test_eof50: cs = 50; goto _test_eof; 
        _test_eof51: cs = 51; goto _test_eof; 
        _test_eof52: cs = 52; goto _test_eof; 
+       _test_eof64: cs = 64; goto _test_eof; 
+       _test_eof65: cs = 65; goto _test_eof; 
+       _test_eof66: cs = 66; goto _test_eof; 
+       _test_eof67: cs = 67; goto _test_eof; 
+       _test_eof68: cs = 68; goto _test_eof; 
+       _test_eof69: cs = 69; goto _test_eof; 
+       _test_eof70: cs = 70; goto _test_eof; 
+       _test_eof71: cs = 71; goto _test_eof; 
+       _test_eof72: cs = 72; goto _test_eof; 
+       _test_eof73: cs = 73; goto _test_eof; 
        _test_eof53: cs = 53; goto _test_eof; 
-       _test_eof54: cs = 54; goto _test_eof; 
-       _test_eof55: cs = 55; goto _test_eof; 
-       _test_eof56: cs = 56; goto _test_eof; 
-       _test_eof57: cs = 57; goto _test_eof; 
-       _test_eof37: cs = 37; goto _test_eof; 
-       _test_eof58: cs = 58; goto _test_eof; 
-       _test_eof59: cs = 59; goto _test_eof; 
-       _test_eof60: cs = 60; goto _test_eof; 
-       _test_eof61: cs = 61; goto _test_eof; 
-       _test_eof62: cs = 62; goto _test_eof; 
-       _test_eof63: cs = 63; goto _test_eof; 
+       _test_eof74: cs = 74; goto _test_eof; 
+       _test_eof75: cs = 75; goto _test_eof; 
+       _test_eof76: cs = 76; goto _test_eof; 
+       _test_eof77: cs = 77; goto _test_eof; 
+       _test_eof78: cs = 78; goto _test_eof; 
+       _test_eof79: cs = 79; goto _test_eof; 
 
        _test_eof: {}
        if ( p == eof )
        {
        switch ( cs ) {
-       case 39: goto tr68;
-       case 40: goto tr70;
-       case 41: goto tr72;
-       case 42: goto tr73;
+       case 55: goto tr86;
+       case 56: goto tr88;
+       case 57: goto tr90;
+       case 58: goto tr91;
        case 7: goto tr7;
        case 8: goto tr7;
        case 9: goto tr7;
@@ -1569,11 +1757,11 @@ case 63:
        case 17: goto tr7;
        case 18: goto tr7;
        case 19: goto tr7;
-       case 43: goto tr77;
-       case 44: goto tr77;
-       case 45: goto tr77;
-       case 46: goto tr77;
-       case 47: goto tr82;
+       case 59: goto tr95;
+       case 60: goto tr95;
+       case 61: goto tr95;
+       case 62: goto tr95;
+       case 63: goto tr100;
        case 20: goto tr23;
        case 21: goto tr23;
        case 22: goto tr23;
@@ -1591,29 +1779,45 @@ case 63:
        case 34: goto tr23;
        case 35: goto tr23;
        case 36: goto tr23;
-       case 48: goto tr86;
-       case 49: goto tr86;
-       case 50: goto tr88;
-       case 51: goto tr72;
-       case 52: goto tr72;
-       case 53: goto tr72;
-       case 54: goto tr72;
-       case 55: goto tr72;
-       case 56: goto tr72;
-       case 57: goto tr96;
-       case 37: goto tr42;
-       case 58: goto tr97;
-       case 59: goto tr72;
-       case 60: goto tr72;
-       case 61: goto tr72;
-       case 62: goto tr100;
-       case 63: goto tr102;
+       case 37: goto tr23;
+       case 38: goto tr23;
+       case 39: goto tr23;
+       case 40: goto tr23;
+       case 41: goto tr23;
+       case 42: goto tr23;
+       case 43: goto tr23;
+       case 44: goto tr23;
+       case 45: goto tr23;
+       case 46: goto tr23;
+       case 47: goto tr23;
+       case 48: goto tr23;
+       case 49: goto tr23;
+       case 50: goto tr23;
+       case 51: goto tr23;
+       case 52: goto tr23;
+       case 64: goto tr106;
+       case 65: goto tr106;
+       case 66: goto tr108;
+       case 67: goto tr90;
+       case 68: goto tr90;
+       case 69: goto tr90;
+       case 70: goto tr90;
+       case 71: goto tr90;
+       case 72: goto tr90;
+       case 73: goto tr116;
+       case 53: goto tr60;
+       case 74: goto tr117;
+       case 75: goto tr90;
+       case 76: goto tr90;
+       case 77: goto tr90;
+       case 78: goto tr120;
+       case 79: goto tr122;
        }
        }
 
        _out: {}
        }
-#line 392 "wikitext_ragel.rl"
+#line 416 "wikitext_ragel.rl"
     if (cs == wikitext_error)
         rb_raise(eWikitextParserError, "failed before finding a token");
     else if (out->type == NO_TOKEN)
index a82a304632826370041639ed0d9d9c085faeda98..740a86f526e9aff5af84b8aad8bc769a837d5f6a 100644 (file)
             fbreak;
         };
 
+        /<strong>/i
+        {
+            EMIT(STRONG_START);
+            fbreak;
+        };
+
+        /<\/strong>/i   # this comment because the Ragel TextMate bundle miscolorizes without it /
+        {
+            EMIT(STRONG_END);
+            fbreak;
+        };
+
+        /<em>/i
+        {
+            EMIT(EM_START);
+            fbreak;
+        };
+
+        /<\/em>/i   # this comment because the Ragel TextMate bundle miscolorizes without it /
+        {
+            EMIT(EM_END);
+            fbreak;
+        };
+
         '`'
         {
             EMIT(TT);