Fossil SCM

allow "class" attributes in wiki html markup, so CSS is more useful

ron 2010-04-26 15:36 trunk
Commit 99c26fccba3ed851b2766d451b3ba4a216ce4e99
1 file changed +16 -14
+16 -14
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -89,10 +89,11 @@
8989
#define AMSK_TYPE 0x0100000
9090
#define AMSK_VALIGN 0x0200000
9191
#define AMSK_VALUE 0x0400000
9292
#define AMSK_VSPACE 0x0800000
9393
#define AMSK_WIDTH 0x1000000
94
+#define AMSK_CLASS 0x2000000
9495
9596
static const struct AllowedAttribute {
9697
const char *zName;
9798
unsigned int iMask;
9899
} aAttribute[] = {
@@ -101,10 +102,11 @@
101102
{ "alt", AMSK_ALT, },
102103
{ "bgcolor", AMSK_BGCOLOR, },
103104
{ "border", AMSK_BORDER, },
104105
{ "cellpadding", AMSK_CELLPADDING, },
105106
{ "cellspacing", AMSK_CELLSPACING, },
107
+ { "class", AMSK_CLASS, },
106108
{ "clear", AMSK_CLEAR, },
107109
{ "color", AMSK_COLOR, },
108110
{ "colspan", AMSK_COLSPAN, },
109111
{ "compact", AMSK_COMPACT, },
110112
{ "face", AMSK_FACE, },
@@ -235,11 +237,11 @@
235237
short int iType; /* The MUTYPE_* code */
236238
int allowedAttr; /* Allowed attributes on this markup */
237239
} aMarkup[] = {
238240
{ 0, MARKUP_INVALID, 0, 0 },
239241
{ "a", MARKUP_A, MUTYPE_HYPERLINK,
240
- AMSK_HREF|AMSK_NAME },
242
+ AMSK_HREF|AMSK_NAME|AMSK_CLASS },
241243
{ "address", MARKUP_ADDRESS, MUTYPE_BLOCK, 0 },
242244
{ "b", MARKUP_B, MUTYPE_FONT, 0 },
243245
{ "big", MARKUP_BIG, MUTYPE_FONT, 0 },
244246
{ "blockquote", MARKUP_BLOCKQUOTE, MUTYPE_BLOCK, 0 },
245247
{ "br", MARKUP_BR, MUTYPE_SINGLE, AMSK_CLEAR },
@@ -246,24 +248,24 @@
246248
{ "center", MARKUP_CENTER, MUTYPE_BLOCK, 0 },
247249
{ "cite", MARKUP_CITE, MUTYPE_FONT, 0 },
248250
{ "code", MARKUP_CODE, MUTYPE_FONT, 0 },
249251
{ "dd", MARKUP_DD, MUTYPE_LI, 0 },
250252
{ "dfn", MARKUP_DFN, MUTYPE_FONT, 0 },
251
- { "div", MARKUP_DIV, MUTYPE_BLOCK, AMSK_ID },
253
+ { "div", MARKUP_DIV, MUTYPE_BLOCK, AMSK_ID|AMSK_CLASS },
252254
{ "dl", MARKUP_DL, MUTYPE_LIST, AMSK_COMPACT },
253255
{ "dt", MARKUP_DT, MUTYPE_LI, 0 },
254256
{ "em", MARKUP_EM, MUTYPE_FONT, 0 },
255257
{ "font", MARKUP_FONT, MUTYPE_FONT,
256258
AMSK_COLOR|AMSK_FACE|AMSK_SIZE },
257
- { "h1", MARKUP_H1, MUTYPE_BLOCK, AMSK_ALIGN },
258
- { "h2", MARKUP_H2, MUTYPE_BLOCK, AMSK_ALIGN },
259
- { "h3", MARKUP_H3, MUTYPE_BLOCK, AMSK_ALIGN },
260
- { "h4", MARKUP_H4, MUTYPE_BLOCK, AMSK_ALIGN },
261
- { "h5", MARKUP_H5, MUTYPE_BLOCK, AMSK_ALIGN },
262
- { "h6", MARKUP_H6, MUTYPE_BLOCK, AMSK_ALIGN },
259
+ { "h1", MARKUP_H1, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
260
+ { "h2", MARKUP_H2, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
261
+ { "h3", MARKUP_H3, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
262
+ { "h4", MARKUP_H4, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
263
+ { "h5", MARKUP_H5, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
264
+ { "h6", MARKUP_H6, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
263265
{ "hr", MARKUP_HR, MUTYPE_SINGLE,
264
- AMSK_ALIGN|AMSK_COLOR|AMSK_SIZE|AMSK_WIDTH },
266
+ AMSK_ALIGN|AMSK_COLOR|AMSK_SIZE|AMSK_WIDTH|AMSK_CLASS },
265267
{ "i", MARKUP_I, MUTYPE_FONT, 0 },
266268
{ "img", MARKUP_IMG, MUTYPE_SINGLE,
267269
AMSK_ALIGN|AMSK_ALT|AMSK_BORDER|AMSK_HEIGHT|
268270
AMSK_HSPACE|AMSK_SRC|AMSK_VSPACE|AMSK_WIDTH },
269271
{ "kbd", MARKUP_KBD, MUTYPE_FONT, 0 },
@@ -271,11 +273,11 @@
271273
AMSK_TYPE|AMSK_VALUE },
272274
{ "nobr", MARKUP_NOBR, MUTYPE_FONT, 0 },
273275
{ "nowiki", MARKUP_NOWIKI, MUTYPE_SPECIAL, 0 },
274276
{ "ol", MARKUP_OL, MUTYPE_LIST,
275277
AMSK_START|AMSK_TYPE|AMSK_COMPACT },
276
- { "p", MARKUP_P, MUTYPE_BLOCK, AMSK_ALIGN },
278
+ { "p", MARKUP_P, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
277279
{ "pre", MARKUP_PRE, MUTYPE_BLOCK, 0 },
278280
{ "s", MARKUP_S, MUTYPE_FONT, 0 },
279281
{ "samp", MARKUP_SAMP, MUTYPE_FONT, 0 },
280282
{ "small", MARKUP_SMALL, MUTYPE_FONT, 0 },
281283
{ "strike", MARKUP_STRIKE, MUTYPE_FONT, 0 },
@@ -282,19 +284,19 @@
282284
{ "strong", MARKUP_STRONG, MUTYPE_FONT, 0 },
283285
{ "sub", MARKUP_SUB, MUTYPE_FONT, 0 },
284286
{ "sup", MARKUP_SUP, MUTYPE_FONT, 0 },
285287
{ "table", MARKUP_TABLE, MUTYPE_TABLE,
286288
AMSK_ALIGN|AMSK_BGCOLOR|AMSK_BORDER|AMSK_CELLPADDING|
287
- AMSK_CELLSPACING|AMSK_HSPACE|AMSK_VSPACE },
289
+ AMSK_CELLSPACING|AMSK_HSPACE|AMSK_VSPACE|AMSK_CLASS },
288290
{ "td", MARKUP_TD, MUTYPE_TD,
289291
AMSK_ALIGN|AMSK_BGCOLOR|AMSK_COLSPAN|
290
- AMSK_ROWSPAN|AMSK_VALIGN },
292
+ AMSK_ROWSPAN|AMSK_VALIGN|AMSK_CLASS },
291293
{ "th", MARKUP_TH, MUTYPE_TD,
292294
AMSK_ALIGN|AMSK_BGCOLOR|AMSK_COLSPAN|
293
- AMSK_ROWSPAN|AMSK_VALIGN },
295
+ AMSK_ROWSPAN|AMSK_VALIGN|AMSK_CLASS },
294296
{ "tr", MARKUP_TR, MUTYPE_TR,
295
- AMSK_ALIGN|AMSK_BGCOLOR||AMSK_VALIGN },
297
+ AMSK_ALIGN|AMSK_BGCOLOR||AMSK_VALIGN|AMSK_CLASS },
296298
{ "tt", MARKUP_TT, MUTYPE_FONT, 0 },
297299
{ "u", MARKUP_U, MUTYPE_FONT, 0 },
298300
{ "ul", MARKUP_UL, MUTYPE_LIST,
299301
AMSK_TYPE|AMSK_COMPACT },
300302
{ "var", MARKUP_VAR, MUTYPE_FONT, 0 },
301303
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -89,10 +89,11 @@
89 #define AMSK_TYPE 0x0100000
90 #define AMSK_VALIGN 0x0200000
91 #define AMSK_VALUE 0x0400000
92 #define AMSK_VSPACE 0x0800000
93 #define AMSK_WIDTH 0x1000000
 
94
95 static const struct AllowedAttribute {
96 const char *zName;
97 unsigned int iMask;
98 } aAttribute[] = {
@@ -101,10 +102,11 @@
101 { "alt", AMSK_ALT, },
102 { "bgcolor", AMSK_BGCOLOR, },
103 { "border", AMSK_BORDER, },
104 { "cellpadding", AMSK_CELLPADDING, },
105 { "cellspacing", AMSK_CELLSPACING, },
 
106 { "clear", AMSK_CLEAR, },
107 { "color", AMSK_COLOR, },
108 { "colspan", AMSK_COLSPAN, },
109 { "compact", AMSK_COMPACT, },
110 { "face", AMSK_FACE, },
@@ -235,11 +237,11 @@
235 short int iType; /* The MUTYPE_* code */
236 int allowedAttr; /* Allowed attributes on this markup */
237 } aMarkup[] = {
238 { 0, MARKUP_INVALID, 0, 0 },
239 { "a", MARKUP_A, MUTYPE_HYPERLINK,
240 AMSK_HREF|AMSK_NAME },
241 { "address", MARKUP_ADDRESS, MUTYPE_BLOCK, 0 },
242 { "b", MARKUP_B, MUTYPE_FONT, 0 },
243 { "big", MARKUP_BIG, MUTYPE_FONT, 0 },
244 { "blockquote", MARKUP_BLOCKQUOTE, MUTYPE_BLOCK, 0 },
245 { "br", MARKUP_BR, MUTYPE_SINGLE, AMSK_CLEAR },
@@ -246,24 +248,24 @@
246 { "center", MARKUP_CENTER, MUTYPE_BLOCK, 0 },
247 { "cite", MARKUP_CITE, MUTYPE_FONT, 0 },
248 { "code", MARKUP_CODE, MUTYPE_FONT, 0 },
249 { "dd", MARKUP_DD, MUTYPE_LI, 0 },
250 { "dfn", MARKUP_DFN, MUTYPE_FONT, 0 },
251 { "div", MARKUP_DIV, MUTYPE_BLOCK, AMSK_ID },
252 { "dl", MARKUP_DL, MUTYPE_LIST, AMSK_COMPACT },
253 { "dt", MARKUP_DT, MUTYPE_LI, 0 },
254 { "em", MARKUP_EM, MUTYPE_FONT, 0 },
255 { "font", MARKUP_FONT, MUTYPE_FONT,
256 AMSK_COLOR|AMSK_FACE|AMSK_SIZE },
257 { "h1", MARKUP_H1, MUTYPE_BLOCK, AMSK_ALIGN },
258 { "h2", MARKUP_H2, MUTYPE_BLOCK, AMSK_ALIGN },
259 { "h3", MARKUP_H3, MUTYPE_BLOCK, AMSK_ALIGN },
260 { "h4", MARKUP_H4, MUTYPE_BLOCK, AMSK_ALIGN },
261 { "h5", MARKUP_H5, MUTYPE_BLOCK, AMSK_ALIGN },
262 { "h6", MARKUP_H6, MUTYPE_BLOCK, AMSK_ALIGN },
263 { "hr", MARKUP_HR, MUTYPE_SINGLE,
264 AMSK_ALIGN|AMSK_COLOR|AMSK_SIZE|AMSK_WIDTH },
265 { "i", MARKUP_I, MUTYPE_FONT, 0 },
266 { "img", MARKUP_IMG, MUTYPE_SINGLE,
267 AMSK_ALIGN|AMSK_ALT|AMSK_BORDER|AMSK_HEIGHT|
268 AMSK_HSPACE|AMSK_SRC|AMSK_VSPACE|AMSK_WIDTH },
269 { "kbd", MARKUP_KBD, MUTYPE_FONT, 0 },
@@ -271,11 +273,11 @@
271 AMSK_TYPE|AMSK_VALUE },
272 { "nobr", MARKUP_NOBR, MUTYPE_FONT, 0 },
273 { "nowiki", MARKUP_NOWIKI, MUTYPE_SPECIAL, 0 },
274 { "ol", MARKUP_OL, MUTYPE_LIST,
275 AMSK_START|AMSK_TYPE|AMSK_COMPACT },
276 { "p", MARKUP_P, MUTYPE_BLOCK, AMSK_ALIGN },
277 { "pre", MARKUP_PRE, MUTYPE_BLOCK, 0 },
278 { "s", MARKUP_S, MUTYPE_FONT, 0 },
279 { "samp", MARKUP_SAMP, MUTYPE_FONT, 0 },
280 { "small", MARKUP_SMALL, MUTYPE_FONT, 0 },
281 { "strike", MARKUP_STRIKE, MUTYPE_FONT, 0 },
@@ -282,19 +284,19 @@
282 { "strong", MARKUP_STRONG, MUTYPE_FONT, 0 },
283 { "sub", MARKUP_SUB, MUTYPE_FONT, 0 },
284 { "sup", MARKUP_SUP, MUTYPE_FONT, 0 },
285 { "table", MARKUP_TABLE, MUTYPE_TABLE,
286 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_BORDER|AMSK_CELLPADDING|
287 AMSK_CELLSPACING|AMSK_HSPACE|AMSK_VSPACE },
288 { "td", MARKUP_TD, MUTYPE_TD,
289 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_COLSPAN|
290 AMSK_ROWSPAN|AMSK_VALIGN },
291 { "th", MARKUP_TH, MUTYPE_TD,
292 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_COLSPAN|
293 AMSK_ROWSPAN|AMSK_VALIGN },
294 { "tr", MARKUP_TR, MUTYPE_TR,
295 AMSK_ALIGN|AMSK_BGCOLOR||AMSK_VALIGN },
296 { "tt", MARKUP_TT, MUTYPE_FONT, 0 },
297 { "u", MARKUP_U, MUTYPE_FONT, 0 },
298 { "ul", MARKUP_UL, MUTYPE_LIST,
299 AMSK_TYPE|AMSK_COMPACT },
300 { "var", MARKUP_VAR, MUTYPE_FONT, 0 },
301
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -89,10 +89,11 @@
89 #define AMSK_TYPE 0x0100000
90 #define AMSK_VALIGN 0x0200000
91 #define AMSK_VALUE 0x0400000
92 #define AMSK_VSPACE 0x0800000
93 #define AMSK_WIDTH 0x1000000
94 #define AMSK_CLASS 0x2000000
95
96 static const struct AllowedAttribute {
97 const char *zName;
98 unsigned int iMask;
99 } aAttribute[] = {
@@ -101,10 +102,11 @@
102 { "alt", AMSK_ALT, },
103 { "bgcolor", AMSK_BGCOLOR, },
104 { "border", AMSK_BORDER, },
105 { "cellpadding", AMSK_CELLPADDING, },
106 { "cellspacing", AMSK_CELLSPACING, },
107 { "class", AMSK_CLASS, },
108 { "clear", AMSK_CLEAR, },
109 { "color", AMSK_COLOR, },
110 { "colspan", AMSK_COLSPAN, },
111 { "compact", AMSK_COMPACT, },
112 { "face", AMSK_FACE, },
@@ -235,11 +237,11 @@
237 short int iType; /* The MUTYPE_* code */
238 int allowedAttr; /* Allowed attributes on this markup */
239 } aMarkup[] = {
240 { 0, MARKUP_INVALID, 0, 0 },
241 { "a", MARKUP_A, MUTYPE_HYPERLINK,
242 AMSK_HREF|AMSK_NAME|AMSK_CLASS },
243 { "address", MARKUP_ADDRESS, MUTYPE_BLOCK, 0 },
244 { "b", MARKUP_B, MUTYPE_FONT, 0 },
245 { "big", MARKUP_BIG, MUTYPE_FONT, 0 },
246 { "blockquote", MARKUP_BLOCKQUOTE, MUTYPE_BLOCK, 0 },
247 { "br", MARKUP_BR, MUTYPE_SINGLE, AMSK_CLEAR },
@@ -246,24 +248,24 @@
248 { "center", MARKUP_CENTER, MUTYPE_BLOCK, 0 },
249 { "cite", MARKUP_CITE, MUTYPE_FONT, 0 },
250 { "code", MARKUP_CODE, MUTYPE_FONT, 0 },
251 { "dd", MARKUP_DD, MUTYPE_LI, 0 },
252 { "dfn", MARKUP_DFN, MUTYPE_FONT, 0 },
253 { "div", MARKUP_DIV, MUTYPE_BLOCK, AMSK_ID|AMSK_CLASS },
254 { "dl", MARKUP_DL, MUTYPE_LIST, AMSK_COMPACT },
255 { "dt", MARKUP_DT, MUTYPE_LI, 0 },
256 { "em", MARKUP_EM, MUTYPE_FONT, 0 },
257 { "font", MARKUP_FONT, MUTYPE_FONT,
258 AMSK_COLOR|AMSK_FACE|AMSK_SIZE },
259 { "h1", MARKUP_H1, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
260 { "h2", MARKUP_H2, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
261 { "h3", MARKUP_H3, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
262 { "h4", MARKUP_H4, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
263 { "h5", MARKUP_H5, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
264 { "h6", MARKUP_H6, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
265 { "hr", MARKUP_HR, MUTYPE_SINGLE,
266 AMSK_ALIGN|AMSK_COLOR|AMSK_SIZE|AMSK_WIDTH|AMSK_CLASS },
267 { "i", MARKUP_I, MUTYPE_FONT, 0 },
268 { "img", MARKUP_IMG, MUTYPE_SINGLE,
269 AMSK_ALIGN|AMSK_ALT|AMSK_BORDER|AMSK_HEIGHT|
270 AMSK_HSPACE|AMSK_SRC|AMSK_VSPACE|AMSK_WIDTH },
271 { "kbd", MARKUP_KBD, MUTYPE_FONT, 0 },
@@ -271,11 +273,11 @@
273 AMSK_TYPE|AMSK_VALUE },
274 { "nobr", MARKUP_NOBR, MUTYPE_FONT, 0 },
275 { "nowiki", MARKUP_NOWIKI, MUTYPE_SPECIAL, 0 },
276 { "ol", MARKUP_OL, MUTYPE_LIST,
277 AMSK_START|AMSK_TYPE|AMSK_COMPACT },
278 { "p", MARKUP_P, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
279 { "pre", MARKUP_PRE, MUTYPE_BLOCK, 0 },
280 { "s", MARKUP_S, MUTYPE_FONT, 0 },
281 { "samp", MARKUP_SAMP, MUTYPE_FONT, 0 },
282 { "small", MARKUP_SMALL, MUTYPE_FONT, 0 },
283 { "strike", MARKUP_STRIKE, MUTYPE_FONT, 0 },
@@ -282,19 +284,19 @@
284 { "strong", MARKUP_STRONG, MUTYPE_FONT, 0 },
285 { "sub", MARKUP_SUB, MUTYPE_FONT, 0 },
286 { "sup", MARKUP_SUP, MUTYPE_FONT, 0 },
287 { "table", MARKUP_TABLE, MUTYPE_TABLE,
288 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_BORDER|AMSK_CELLPADDING|
289 AMSK_CELLSPACING|AMSK_HSPACE|AMSK_VSPACE|AMSK_CLASS },
290 { "td", MARKUP_TD, MUTYPE_TD,
291 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_COLSPAN|
292 AMSK_ROWSPAN|AMSK_VALIGN|AMSK_CLASS },
293 { "th", MARKUP_TH, MUTYPE_TD,
294 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_COLSPAN|
295 AMSK_ROWSPAN|AMSK_VALIGN|AMSK_CLASS },
296 { "tr", MARKUP_TR, MUTYPE_TR,
297 AMSK_ALIGN|AMSK_BGCOLOR||AMSK_VALIGN|AMSK_CLASS },
298 { "tt", MARKUP_TT, MUTYPE_FONT, 0 },
299 { "u", MARKUP_U, MUTYPE_FONT, 0 },
300 { "ul", MARKUP_UL, MUTYPE_LIST,
301 AMSK_TYPE|AMSK_COMPACT },
302 { "var", MARKUP_VAR, MUTYPE_FONT, 0 },
303

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button