Rev 6986 | Rev 7746 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6986 | Rev 7437 | ||
---|---|---|---|
1 | enum { TAG, OPTION_VALUE, TEXT, COMMENT }; |
1 | enum { TAG, OPTION_VALUE, TEXT, COMMENT, INLINE_COMMENT, CODE }; |
2 | 2 | ||
3 | //you are butifull, you are butifull |
3 | //you are butifull, you are butifull |
4 | dword ShowSource() |
4 | dword ShowSource() |
5 | { |
5 | { |
6 | dword new_buf, new_buf_start, i; |
6 | dword new_buf, new_buf_start, i; |
7 | byte ww, mode; |
7 | int mode; |
8 | 8 | ||
9 | if (souce_mode) return; |
9 | if (souce_mode) return; |
10 | souce_mode = true; |
10 | souce_mode = true; |
11 | new_buf = malloc(bufsize*5); |
11 | new_buf = malloc(bufsize*5); |
12 | new_buf_start = new_buf; |
12 | new_buf_start = new_buf; |
13 | header[strrchr(#header, '-')-2]=0; |
13 | header[strrchr(#header, '-')-2]=0; |
14 | sprintf(new_buf," |
14 | sprintf(new_buf," |
15 | new_buf += strlen(new_buf); |
15 | new_buf += strlen(new_buf); |
16 | for (i=bufpointer; i |
16 | for (i=bufpointer; i |
17 | { |
17 | { |
18 | ww = ESBYTE[i]; |
18 | switch (ESBYTE[i]) |
19 | switch (ww) |
- | |
20 | { |
19 | { |
21 | case '<': |
20 | case '<': |
22 | if (mode == COMMENT) |
21 | if (mode == COMMENT) |
23 | { |
22 | { |
24 | strcpy(new_buf, "<"); |
23 | strcpy(new_buf, "<"); |
25 | new_buf+=4; |
24 | new_buf+=4; |
26 | break; |
25 | break; |
27 | } |
26 | } |
28 | if (ESBYTE[i+1]=='!') && (ESBYTE[i+2]=='-') && (ESBYTE[i+3]=='-') |
27 | if (ESBYTE[i+1]=='!') && (ESBYTE[i+2]=='-') && (ESBYTE[i+3]=='-') |
29 | { |
28 | { |
30 | strcpy(new_buf, "<"); |
29 | strcpy(new_buf, "<"); |
31 | new_buf+=21; |
30 | new_buf+=21; |
32 | mode = COMMENT; |
31 | mode = COMMENT; |
33 | break; |
32 | break; |
34 | } |
33 | } |
35 | if (mode != COMMENT) |
34 | if (mode != COMMENT) |
36 | { |
35 | { |
37 | strcpy(new_buf, "<"); |
36 | strcpy(new_buf, "<"); |
38 | new_buf+=21; |
37 | new_buf+=21; |
39 | mode = TAG; |
38 | mode = TAG; |
40 | break; |
39 | break; |
41 | } |
40 | } |
42 | break; |
41 | break; |
43 | case '>': |
42 | case '>': |
44 | if (mode == OPTION_VALUE) //fix non-closed quote in TAG |
43 | if (mode == OPTION_VALUE) //fix non-closed quote in TAG |
45 | { |
44 | { |
46 | strcpy(new_buf, """); |
45 | strcpy(new_buf, """); |
47 | new_buf+=13; |
46 | new_buf+=13; |
48 | mode = TAG; |
47 | mode = TAG; |
49 | break; |
48 | break; |
50 | } |
49 | } |
51 | if (mode == COMMENT) && (ESBYTE[i-1]=='-') && (ESBYTE[i-2]=='-') |
50 | if (mode == COMMENT) && (ESBYTE[i-1]=='-') && (ESBYTE[i-2]=='-') |
52 | { |
51 | { |
53 | strcpy(new_buf, ">"); |
52 | strcpy(new_buf, ">"); |
54 | new_buf+=11; |
53 | new_buf+=11; |
55 | mode = TEXT; |
54 | mode = TEXT; |
56 | break; |
55 | break; |
57 | } |
56 | } |
58 | if (mode == COMMENT) |
57 | if (mode == COMMENT) |
59 | { |
58 | { |
60 | strcpy(new_buf, ">"); |
59 | strcpy(new_buf, ">"); |
61 | new_buf+=4; |
60 | new_buf+=4; |
62 | break; |
61 | break; |
63 | } |
62 | } |
64 | if (mode == TAG) |
63 | if (mode == TAG) |
65 | { |
64 | { |
66 | strcpy(new_buf, ">"); |
65 | strcpy(new_buf, ">"); |
67 | new_buf+=11; |
66 | new_buf+=11; |
68 | mode = TEXT; |
67 | mode = TEXT; |
69 | break; |
68 | break; |
70 | } |
69 | } |
71 | break; |
70 | break; |
72 | case '\"': |
71 | case '\"': |
73 | case '\'': |
72 | case '\'': |
74 | if (mode == TAG) |
73 | if (mode == TAG) |
75 | { |
74 | { |
76 | strcpy(new_buf, "'"); |
75 | strcpy(new_buf, "'"); |
77 | new_buf+=22; |
76 | new_buf+=22; |
78 | mode = OPTION_VALUE; |
77 | mode = OPTION_VALUE; |
79 | break; |
78 | break; |
80 | } |
79 | } |
81 | if (mode == OPTION_VALUE) |
80 | if (mode == OPTION_VALUE) |
82 | { |
81 | { |
83 | strcpy(new_buf, "'"); |
82 | strcpy(new_buf, "'"); |
84 | new_buf+=12; |
83 | new_buf+=12; |
85 | mode = TAG; |
84 | mode = TAG; |
86 | break; |
85 | break; |
87 | } |
86 | } |
88 | default: |
87 | default: |
89 | ESBYTE[new_buf] = ww; |
88 | ESBYTE[new_buf] = ESBYTE[i]; |
90 | new_buf++; |
89 | new_buf++; |
91 | } |
90 | } |
92 | } |
91 | } |
93 | ESBYTE[new_buf] = 0; |
92 | ESBYTE[new_buf] = 0; |
94 | bufsize = new_buf - new_buf_start; |
93 | bufsize = new_buf - new_buf_start; |
95 | free(bufpointer); |
94 | free(bufpointer); |
96 | bufpointer = new_buf_start; |
95 | bufpointer = new_buf_start; |
97 | }': |
96 | } |
98 | > |
97 | |
- | 98 | /* |
|
- | 99 | char* C_HL_keywords[] = { |
|
- | 100 | "switch", "if", "while", "for", "break", "continue", "return", "else", |
|
- | 101 | "union", "typedef", "static", "class", "case", "#include", |
|
- | 102 | "volatile", "register", "sizeof", "typedef", "union", "goto", "const", "auto", |
|
- | 103 | "#define", "#endif", "#error", "#ifdef", "#ifndef", "#undef", "#if", "#else", |
|
- | 104 | "inline", |
|
- | 105 | ||
- | 106 | "int ", "dword ", "long ", "double ", "float ", "char ", "unsigned ", "signed ", |
|
- | 107 | "void ", "bool ", "enum ", "byte ", "word ", "struct ", "NULL", "loop", "stdcall ", |
|
- | 108 | ":void ", ":int ", ":bool ", ":dword ", NULL |
|
- | 109 | }; |
|
- | 110 | ||
- | 111 | dword ShowCodeSource() |
|
- | 112 | { |
|
- | 113 | dword new_buf, new_buf_start, i; |
|
- | 114 | int mode = CODE; |
|
- | 115 | ||
- | 116 | char spstr[64]; |
|
- | 117 | dword keylen; |
|
- | 118 | dword keyn; |
|
- | 119 | dword keycolor; |
|
- | 120 | ||
- | 121 | new_buf = malloc(bufsize*10); |
|
- | 122 | new_buf_start = new_buf; |
|
- | 123 | sprintf(new_buf," |
|
- | 124 | new_buf += strlen(new_buf); |
|
- | 125 | for (i=bufpointer; i |
|
- | 126 | { |
|
- | 127 | if ('<' == ESBYTE[i]) { |
|
- | 128 | strcpy(new_buf, "<"); |
|
- | 129 | new_buf+=4; |
|
- | 130 | continue; |
|
- | 131 | } |
|
- | 132 | if ('>' == ESBYTE[i]) { |
|
- | 133 | strcpy(new_buf, ">"); |
|
- | 134 | new_buf+=4; |
|
- | 135 | continue; |
|
- | 136 | } |
|
- | 137 | if (ESBYTE[i] >= '0') && (ESBYTE[i] <= '9') && (CODE == mode) { |
|
- | 138 | strcpy(new_buf, "?"); |
|
- | 139 | ESBYTE[new_buf+20] = ESBYTE[i]; |
|
- | 140 | new_buf+=28; |
|
- | 141 | if (ESBYTE[i+1] == 'x') { |
|
- | 142 | strcpy(new_buf, "x"); |
|
- | 143 | new_buf+=28; |
|
- | 144 | i++; |
|
- | 145 | } |
|
- | 146 | continue; |
|
- | 147 | } |
|
- | 148 | ||
- | 149 | if (CODE == mode) && ('\"' == ESBYTE[i]) { |
|
- | 150 | mode = TEXT; |
|
- | 151 | strcpy(new_buf, "\""); |
|
- | 152 | new_buf+=18; |
|
- | 153 | continue; |
|
- | 154 | } |
|
- | 155 | if (TEXT == mode) && ('\"' == ESBYTE[i]) { |
|
- | 156 | mode = CODE; |
|
- | 157 | strcpy(new_buf, "\""); |
|
- | 158 | new_buf+=8; |
|
- | 159 | continue; |
|
- | 160 | } |
|
- | 161 | ||
- | 162 | if (! strncmp(i, "//", 2) ) && (mode == CODE) { |
|
- | 163 | mode = INLINE_COMMENT; |
|
- | 164 | strcpy(new_buf, "//"); |
|
- | 165 | new_buf+=19; |
|
- | 166 | i++; |
|
- | 167 | continue; |
|
- | 168 | } |
|
- | 169 | ||
- | 170 | if (INLINE_COMMENT == mode) { |
|
- | 171 | if (13 == ESBYTE[i]) { |
|
- | 172 | mode = CODE; |
|
- | 173 | strcpy(new_buf, "\13"); |
|
- | 174 | new_buf+=8; |
|
- | 175 | continue; |
|
- | 176 | } |
|
- | 177 | } |
|
- | 178 | ||
- | 179 | if (! strncmp(i, "/*", 2) ) { |
|
- | 180 | mode = COMMENT; |
|
- | 181 | strcpy(new_buf, "/*"); |
|
- | 182 | new_buf+=19; |
|
- | 183 | i++; |
|
- | 184 | continue; |
|
- | 185 | } |
|
- | 186 | if (! strncmp(i, "*/", 2) ) { |
|
- | 187 | mode = CODE; |
|
- | 188 | strcpy(new_buf, "*/"); |
|
- | 189 | new_buf+=9; |
|
- | 190 | i++; |
|
- | 191 | continue; |
|
- | 192 | } |
|
- | 193 | ||
- | 194 | if (CODE == mode) for (keyn=0; C_HL_keywords[keyn]!=NULL; keyn++) |
|
- | 195 | { |
|
- | 196 | keylen = strlen(C_HL_keywords[keyn]); |
|
- | 197 | if (! strncmp(i, C_HL_keywords[keyn], keylen) ) { |
|
- | 198 | ||
- | 199 | if (keyn<31) keycolor="#f00"; else keycolor="#00f"; |
|
- | 200 | sprintf(#spstr, "%s", keycolor, C_HL_keywords[keyn]); |
|
- | 201 | strcpy(new_buf, #spstr); |
|
- | 202 | ||
- | 203 | new_buf += keylen + 24; |
|
- | 204 | i += keylen-1; |
|
- | 205 | goto _CONTINUE; |
|
- | 206 | } |
|
- | 207 | } |
|
- | 208 | ESBYTE[new_buf] = ESBYTE[i]; |
|
- | 209 | new_buf++; |
|
- | 210 | _CONTINUE: |
|
- | 211 | } |
|
- | 212 | ESBYTE[new_buf] = 0; |
|
- | 213 | bufsize = new_buf - new_buf_start; |
|
- | 214 | free(bufpointer); |
|
- | 215 | bufpointer = new_buf_start; |
|
- | 216 | } |
|
- | 217 | */31)>=>'>': |
|
- | 218 | > |
|
99 | 219 |