Skip to content
This repository was archived by the owner on Apr 22, 2020. It is now read-only.

Commit b498927

Browse files
issue 143: better type handling for C. Recognize *_t as types and common non-keyword type names: uint32
1 parent 11c71c4 commit b498927

File tree

3 files changed

+39
-32
lines changed

3 files changed

+39
-32
lines changed

js-modules/prettify.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ window['PR']
9797
"concept concept_map const_cast constexpr decltype " +
9898
"dynamic_cast explicit export friend inline late_check " +
9999
"mutable namespace nullptr reinterpret_cast static_assert static_cast " +
100-
"template typeid typename using virtual wchar_t where ";
100+
"template typeid typename using virtual where ";
101101
var JAVA_KEYWORDS = COMMON_KEYWORDS +
102102
"abstract boolean byte extends final finally implements import " +
103103
"instanceof null native package strictfp super synchronized throws " +
@@ -128,6 +128,7 @@ window['PR']
128128
var ALL_KEYWORDS = (
129129
CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS +
130130
PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS);
131+
var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;
131132

132133
// token style names. correspond to css classes
133134
/** token style for a string literal */
@@ -484,6 +485,10 @@ window['PR']
484485
]);
485486
}
486487

488+
if (options['types']) {
489+
fallthroughStylePatterns.push([PR_TYPE, options['types']]);
490+
}
491+
487492
var keywords = options['keywords'].replace(/^\s+|\s+$/g, '');
488493
if (keywords.length) {
489494
fallthroughStylePatterns.push(
@@ -495,7 +500,7 @@ window['PR']
495500
fallthroughStylePatterns.push(
496501
// TODO(mikesamuel): recognize non-latin letters and numerals in idents
497502
[PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*/i, null],
498-
[PR_TYPE, /^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, null],
503+
[PR_TYPE, /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null],
499504
[PR_PLAIN, /^[a-z_$][a-z_$@0-9]*/i, null],
500505
[PR_LITERAL,
501506
new RegExp(
@@ -611,7 +616,8 @@ window['PR']
611616
registerLangHandler(sourceDecorator({
612617
'keywords': CPP_KEYWORDS,
613618
'hashComments': true,
614-
'cStyleComments': true
619+
'cStyleComments': true,
620+
'types': C_TYPES
615621
}), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
616622
registerLangHandler(sourceDecorator({
617623
'keywords': 'null true false'
@@ -620,7 +626,8 @@ window['PR']
620626
'keywords': CSHARP_KEYWORDS,
621627
'hashComments': true,
622628
'cStyleComments': true,
623-
'verbatimStrings': true
629+
'verbatimStrings': true,
630+
'types': C_TYPES
624631
}), ['cs']);
625632
registerLangHandler(sourceDecorator({
626633
'keywords': JAVA_KEYWORDS,

src/prettify.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ window['PR']
9797
"concept concept_map const_cast constexpr decltype " +
9898
"dynamic_cast explicit export friend inline late_check " +
9999
"mutable namespace nullptr reinterpret_cast static_assert static_cast " +
100-
"template typeid typename using virtual wchar_t where ";
100+
"template typeid typename using virtual where ";
101101
var JAVA_KEYWORDS = COMMON_KEYWORDS +
102102
"abstract boolean byte extends final finally implements import " +
103103
"instanceof null native package strictfp super synchronized throws " +
@@ -128,6 +128,7 @@ window['PR']
128128
var ALL_KEYWORDS = (
129129
CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS +
130130
PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS);
131+
var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;
131132

132133
// token style names. correspond to css classes
133134
/** token style for a string literal */
@@ -812,6 +813,10 @@ window['PR']
812813
]);
813814
}
814815

816+
if (options['types']) {
817+
fallthroughStylePatterns.push([PR_TYPE, options['types']]);
818+
}
819+
815820
var keywords = options['keywords'].replace(/^\s+|\s+$/g, '');
816821
if (keywords.length) {
817822
fallthroughStylePatterns.push(
@@ -823,7 +828,7 @@ window['PR']
823828
fallthroughStylePatterns.push(
824829
// TODO(mikesamuel): recognize non-latin letters and numerals in idents
825830
[PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*/i, null],
826-
[PR_TYPE, /^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, null],
831+
[PR_TYPE, /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null],
827832
[PR_PLAIN, /^[a-z_$][a-z_$@0-9]*/i, null],
828833
[PR_LITERAL,
829834
new RegExp(
@@ -1187,7 +1192,8 @@ window['PR']
11871192
registerLangHandler(sourceDecorator({
11881193
'keywords': CPP_KEYWORDS,
11891194
'hashComments': true,
1190-
'cStyleComments': true
1195+
'cStyleComments': true,
1196+
'types': C_TYPES
11911197
}), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
11921198
registerLangHandler(sourceDecorator({
11931199
'keywords': 'null true false'
@@ -1196,7 +1202,8 @@ window['PR']
11961202
'keywords': CSHARP_KEYWORDS,
11971203
'hashComments': true,
11981204
'cStyleComments': true,
1199-
'verbatimStrings': true
1205+
'verbatimStrings': true,
1206+
'types': C_TYPES
12001207
}), ['cs']);
12011208
registerLangHandler(sourceDecorator({
12021209
'keywords': JAVA_KEYWORDS,

tests/prettify_test.html

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,9 @@ <h1>C w/ language specified</h1>
109109
#include &lt;stdio.h&gt;
110110

111111
/* the n<sup>th</sup> fibonacci number. */
112-
unsigned int fib(unsigned int n) {
113-
unsigned int a = 1, b = 1;
114-
unsigned int tmp;
112+
uint32 fib(unsigned int n) {
113+
uint32 a = 1, b = 1;
114+
uint32 tmp;
115115
while (--n >= 0) {
116116
tmp = a;
117117
a += b;
@@ -121,6 +121,8 @@ <h1>C w/ language specified</h1>
121121
}
122122

123123
void main() {
124+
size_t size = sizeof(wchar_t);
125+
ASSERT_EQ(size, 1);
124126
printf("%u", fib(10));
125127
}
126128

@@ -1383,14 +1385,12 @@ <h1>Go mode</h1>
13831385
'`COM#include`END`PLN `END`STR&lt;stdio.h&gt;`END`PLN\n' +
13841386
'\n' +
13851387
'`END`COM/* the n`END<sup>`COMth`END<\/sup>`COM fibonacci number. *\/`END`PLN\n' +
1386-
'`END`KWDunsigned`END`PLN `END`KWDint`END`PLN fib`END`PUN(`END' +
1387-
'`KWDunsigned`END`PLN `END`KWDint`END`PLN n`END`PUN)`END`PLN `END' +
1388+
'`END`TYPuint32`END`PLN fib`END`PUN(`END' +
1389+
'`KWDunsigned`END`PLN `END`TYPint`END`PLN n`END`PUN)`END`PLN `END' +
13881390
'`PUN{`END`PLN\n' +
1389-
' `END`KWDunsigned`END`PLN `END`KWDint`END`PLN a `END`PUN=`END' +
1390-
'`PLN `END`LIT1`END`PUN,`END`PLN b `END`PUN=`END`PLN `END`LIT1`END' +
1391-
'`PUN;`END`PLN\n' +
1392-
' `END`KWDunsigned`END`PLN `END`KWDint`END`PLN tmp`END`PUN;`END' +
1393-
'`PLN\n' +
1391+
' `END`TYPuint32`END`PLN a `END`PUN=`END`PLN `END`LIT1`END`PUN,`END' +
1392+
'`PLN b `END`PUN=`END`PLN `END`LIT1`END`PUN;`END`PLN\n' +
1393+
' `END`TYPuint32`END`PLN tmp`END`PUN;`END`PLN\n' +
13941394
' `END`KWDwhile`END`PLN `END`PUN(--`END`PLNn `END`PUN&gt;=`END' +
13951395
'`PLN `END`LIT0`END`PUN)`END`PLN `END`PUN{`END`PLN\n' +
13961396
' tmp `END`PUN=`END`PLN a`END`PUN;`END`PLN\n' +
@@ -1401,6 +1401,10 @@ <h1>Go mode</h1>
14011401
'`END`PUN}`END`PLN\n' +
14021402
'\n' +
14031403
'`END`KWDvoid`END`PLN main`END`PUN()`END`PLN `END`PUN{`END`PLN\n' +
1404+
' `END`TYPsize_t`END`PLN size `END`PUN=`END`PLN `END`KWDsizeof`END' +
1405+
'`PUN(`END`TYPwchar_t`END`PUN);`END`PLN\n' +
1406+
' ASSERT_EQ`END`PUN(`END`PLNsize`END`PUN,`END`PLN `END`LIT1`END' +
1407+
'`PUN);`END`PLN\n' +
14041408
' printf`END`PUN(`END`STR"%u"`END`PUN,`END`PLN fib`END`PUN(`END' +
14051409
'`LIT10`END`PUN));`END`PLN\n' +
14061410
'`END`PUN}`END`PLN\n' +
@@ -1456,7 +1460,7 @@ <h1>Go mode</h1>
14561460
'`PLN\n' +
14571461
'`END`KWDtemplate`END`PLN `END`PUN&lt;`END`KWDclass`END`PLN T`END' +
14581462
'`PUN&gt;`END`PLN\n' +
1459-
'T fib`END`PUN(`END`KWDint`END`PLN n`END' +
1463+
'T fib`END`PUN(`END`TYPint`END`PLN n`END' +
14601464
'`PUN,`END`PLN `END`KWDconst`END`PLN T`END`PUN&amp;`END`PLN fib0' +
14611465
'`END`PUN)`END`PLN `END`PUN{`END`PLN\n' +
14621466
' T a`END`PUN(`END`PLNfib0`END`PUN),`END`PLN b`END`PUN(`END' +
@@ -1470,7 +1474,7 @@ <h1>Go mode</h1>
14701474
' `END`KWDreturn`END`PLN a`END`PUN;`END`PLN\n' +
14711475
'`END`PUN}`END`PLN\n' +
14721476
'\n' +
1473-
'`END`KWDint`END`PLN main`END`PUN(`END`KWDint`END`PLN argc`END' +
1477+
'`END`TYPint`END`PLN main`END`PUN(`END`TYPint`END`PLN argc`END' +
14741478
'`PUN,`END`PLN `END`KWDchar`END`PLN `END`PUN**`END`PLNargv`END' +
14751479
'`PUN)`END`PLN `END`PUN{`END`PLN\n' +
14761480
' cout `END`PUN&lt;&lt;`END`PLN fib`END`PUN(`END`LIT10`END' +
@@ -2094,18 +2098,7 @@ <h1>Go mode</h1>
20942098
' // ' +
20952099
'Starting location verticle\n' +
20962100
'`END`TAG&lt;script&gt;`END'),
2097-
issue8: /*(
2098-
'<b>`PLNone`END</b>`PLN `END<b>`TYPTwo`END</b>`PLN' +
2099-
' `END<b>`PLNthree`END</b>`PLN `END`TYPFour' +
2100-
'`END`PLN `END<b>`PLNfive`END</b>`PLN ' +
2101-
'`END`PUN|`END`PLN\n' +
2102-
'`END`TYPSix`END`PLN `END<b>`PLNseven`END</b>`PLN ' +
2103-
'`END`TYPEight`END`PLN nine `END`TYPTen`END' +
2104-
'`PLN `END`PUN|`END`PLN\n' +
2105-
'`END<b>`PLNeleven`END</b>`PLN `END`TYPTwelve`END`PLN `END' +
2106-
'<b>`PLNthirteen`END</b>`PLN `END' +
2107-
'`TYPFourteen`END`PLN fifteen `END`' +
2108-
'PUN|`END'),*/
2101+
issue8:
21092102
(
21102103
'<b>`PLNone`END</b>`PLN\t`END<b>`TYPTwo`END</b>`PLN' +
21112104
'\t`END<b>`PLNthree`END</b>`PLN\t`END`TYPFour' +

0 commit comments

Comments
 (0)