50 static void put_htmlescaped(UcxBuffer *dest, char c) { |
50 static void put_htmlescaped(UcxBuffer *dest, char c) { |
51 if (c == '>') { |
51 if (c == '>') { |
52 ucx_buffer_puts(dest, ">"); |
52 ucx_buffer_puts(dest, ">"); |
53 } else if (c == '<') { |
53 } else if (c == '<') { |
54 ucx_buffer_puts(dest, "<"); |
54 ucx_buffer_puts(dest, "<"); |
55 } else { |
55 } else if (c) { |
56 ucx_buffer_putc(dest, c); |
56 ucx_buffer_putc(dest, c); |
57 } |
57 } |
58 } |
58 } |
59 |
59 |
60 static void put_htmlescapedstr(UcxBuffer *dest, sstr_t s) { |
60 static void put_htmlescapedstr(UcxBuffer *dest, sstr_t s) { |
193 put_htmlescaped(dest, c); |
189 put_htmlescaped(dest, c); |
194 } |
190 } |
195 } else { |
191 } else { |
196 if (isstring) { |
192 if (isstring) { |
197 put_htmlescaped(dest, c); |
193 put_htmlescaped(dest, c); |
198 } else if (!isalnum(c) && c!='_' && c!='#') { |
194 } else if (isalnum(c) || c == '_' || c == '#') { |
|
195 /* buffer the current word */ |
|
196 ucx_buffer_putc(wbuf, c); |
|
197 } else { |
199 /* write buffered word, if any */ |
198 /* write buffered word, if any */ |
200 if (wbuf->size > 0) { |
199 if (wbuf->size > 0) { |
201 sstr_t word = sstrn(wbuf->space, wbuf->size); |
200 sstr_t word = sstrn(wbuf->space, wbuf->size); |
202 int closespan = 1; |
201 int closespan = 1; |
203 sstr_t typesuffix = ST("_t"); |
202 sstr_t typesuffix = ST("_t"); |
224 } |
223 } |
225 wbuf->pos = wbuf->size = 0; /* reset word buffer */ |
224 wbuf->pos = wbuf->size = 0; /* reset word buffer */ |
226 |
225 |
227 /* write current character */ |
226 /* write current character */ |
228 put_htmlescaped(dest, c); |
227 put_htmlescaped(dest, c); |
229 } else { |
|
230 /* buffer the current word */ |
|
231 ucx_buffer_putc(wbuf, c); |
|
232 } |
228 } |
233 } |
229 } |
234 |
230 |
235 isescaping = !isescaping & (c == '\\'); |
231 isescaping = !isescaping & (c == '\\'); |
236 } |
232 } |
237 } while (c != '\n'); |
233 } while (c && c != '\n'); |
238 } |
234 } |
239 |
235 |
240 /* Java Highlighter */ |
236 /* Java Highlighter */ |
241 |
237 |
242 static const char* jkeywords[] = { |
238 static const char* jkeywords[] = { |
317 put_htmlescaped(dest, c); |
309 put_htmlescaped(dest, c); |
318 } |
310 } |
319 } else { |
311 } else { |
320 if (isstring) { |
312 if (isstring) { |
321 put_htmlescaped(dest, c); |
313 put_htmlescaped(dest, c); |
322 } else if (!isalnum(c) && c!='_' && c!='@') { |
314 } else if (isalnum(c) || c == '_' || c == '@') { |
|
315 /* buffer the current word */ |
|
316 ucx_buffer_putc(wbuf, c); |
|
317 } else { |
323 /* write buffered word, if any */ |
318 /* write buffered word, if any */ |
324 if (wbuf->size > 0) { |
319 if (wbuf->size > 0) { |
325 sstr_t word = sstrn(wbuf->space, wbuf->size); |
320 sstr_t word = sstrn(wbuf->space, wbuf->size); |
326 int closespan = 1; |
321 int closespan = 1; |
327 if (check_keyword(word, jkeywords)) { |
322 if (check_keyword(word, jkeywords)) { |
347 } |
342 } |
348 wbuf->pos = wbuf->size = 0; /* reset buffer */ |
343 wbuf->pos = wbuf->size = 0; /* reset buffer */ |
349 |
344 |
350 /* write current character */ |
345 /* write current character */ |
351 put_htmlescaped(dest, c); |
346 put_htmlescaped(dest, c); |
352 } else { |
|
353 /* buffer the current word */ |
|
354 ucx_buffer_putc(wbuf, c); |
|
355 } |
347 } |
356 } |
348 } |
357 |
349 |
358 isescaping = !isescaping & (c == '\\'); |
350 isescaping = !isescaping & (c == '\\'); |
359 } |
351 } |
360 } while (c != '\n'); |
352 } while (c && c != '\n'); |
361 } |
353 } |
362 |
354 |