# HG changeset patch # User Mike Becker # Date 1371811786 -7200 # Node ID 6b1fba10c4cb9af6beedf1be51fd68d660bd1566 # Parent 417cd3b29f97d4fce8b32bca8c3f95e42293d31d long words are correctly separated by non alpha numeric chars, underscore or hash + support for macro constants diff -r 417cd3b29f97 -r 6b1fba10c4cb src/c2html.c --- a/src/c2html.c Fri Jun 21 12:27:45 2013 +0200 +++ b/src/c2html.c Fri Jun 21 12:49:46 2013 +0200 @@ -149,6 +149,15 @@ return 0; } +int iscapsonly(char *word, size_t wp) { + for (size_t i = 0 ; i < wp ; i++) { + if (!isupper(word[i]) && word[i] != '_') { + return 0; + } + } + return 1; +} + void parseline(char *src, char *dest) { size_t sp = 0, dp = 0; /* indent */ @@ -167,8 +176,7 @@ memcpy(&(dest[dp]), "", 29); dp += 29; } - // a fucking /* comment */ - /* again // / */ + for (char c = src[sp] ; c ; c=src[++sp]) { /* comments */ if (c == '/') { @@ -221,6 +229,9 @@ } else if (isdirective(word)) { memcpy(&(dest[dp]), "", 31); dp += 31; + } else if (iscapsonly(word, wp)) { + memcpy(&(dest[dp]), "", 32); + dp += 32; } else { closespan = 0; } @@ -231,9 +242,9 @@ memcpy(&(dest[dp]), "", 7); dp += 7; } - memset(word, 0, WORDBUF_SIZE); - wp = 0; } + memset(word, 0, WORDBUF_SIZE); + wp = 0; dp = writeescapedchar(dest, dp, c); } else { /* read word */ @@ -286,7 +297,7 @@ for (int i = 0 ; i < inputfile->count ; i++) { parseline(inputfile->lines[i], line); printf("%*d: %s", - lnw, i, line); + lnw, i+1, line); } free(line); printf("\n"); diff -r 417cd3b29f97 -r 6b1fba10c4cb test/header.html --- a/test/header.html Fri Jun 21 12:27:45 2013 +0200 +++ b/test/header.html Fri Jun 21 12:49:46 2013 +0200 @@ -10,7 +10,7 @@ span.c2html-keyword { color: blue; } - span.c2html-type { + span.c2html-type, span.c2html-macroconst { color: cornflowerblue; } span.c2html-directive {