Fossil SCM

Allow the style= attribute in wiki markup.

drh 2012-08-10 12:59 trunk
Commit 717cd2782c41addd04e1b37107d0505645562dfa
1 file changed +104 -85
+104 -85
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -54,43 +54,45 @@
5454
#define ATTR_NAME 17
5555
#define ATTR_ROWSPAN 18
5656
#define ATTR_SIZE 19
5757
#define ATTR_SRC 20
5858
#define ATTR_START 21
59
-#define ATTR_TARGET 22
60
-#define ATTR_TYPE 23
61
-#define ATTR_VALIGN 24
62
-#define ATTR_VALUE 25
63
-#define ATTR_VSPACE 26
64
-#define ATTR_WIDTH 27
65
-#define AMSK_ALIGN 0x0000001
66
-#define AMSK_ALT 0x0000002
67
-#define AMSK_BGCOLOR 0x0000004
68
-#define AMSK_BORDER 0x0000008
69
-#define AMSK_CELLPADDING 0x0000010
70
-#define AMSK_CELLSPACING 0x0000020
71
-#define AMSK_CLEAR 0x0000040
72
-#define AMSK_COLOR 0x0000080
73
-#define AMSK_COLSPAN 0x0000100
74
-#define AMSK_COMPACT 0x0000200
75
-#define AMSK_FACE 0x0000400
76
-#define AMSK_HEIGHT 0x0000800
77
-#define AMSK_HREF 0x0001000
78
-#define AMSK_HSPACE 0x0002000
79
-#define AMSK_ID 0x0004000
80
-#define AMSK_NAME 0x0008000
81
-#define AMSK_ROWSPAN 0x0010000
82
-#define AMSK_SIZE 0x0020000
83
-#define AMSK_SRC 0x0040000
84
-#define AMSK_START 0x0080000
85
-#define AMSK_TYPE 0x0100000
86
-#define AMSK_VALIGN 0x0200000
87
-#define AMSK_VALUE 0x0400000
88
-#define AMSK_VSPACE 0x0800000
89
-#define AMSK_WIDTH 0x1000000
90
-#define AMSK_CLASS 0x2000000
91
-#define AMSK_TARGET 0x4000000
59
+#define ATTR_STYLE 22
60
+#define ATTR_TARGET 23
61
+#define ATTR_TYPE 24
62
+#define ATTR_VALIGN 25
63
+#define ATTR_VALUE 26
64
+#define ATTR_VSPACE 27
65
+#define ATTR_WIDTH 28
66
+#define AMSK_ALIGN 0x00000001
67
+#define AMSK_ALT 0x00000002
68
+#define AMSK_BGCOLOR 0x00000004
69
+#define AMSK_BORDER 0x00000008
70
+#define AMSK_CELLPADDING 0x00000010
71
+#define AMSK_CELLSPACING 0x00000020
72
+#define AMSK_CLASS 0x00000040
73
+#define AMSK_CLEAR 0x00000080
74
+#define AMSK_COLOR 0x00000100
75
+#define AMSK_COLSPAN 0x00000200
76
+#define AMSK_COMPACT 0x00000400
77
+#define AMSK_FACE 0x00000800
78
+#define AMSK_HEIGHT 0x00001000
79
+#define AMSK_HREF 0x00002000
80
+#define AMSK_HSPACE 0x00004000
81
+#define AMSK_ID 0x00008000
82
+#define AMSK_NAME 0x00010000
83
+#define AMSK_ROWSPAN 0x00020000
84
+#define AMSK_SIZE 0x00040000
85
+#define AMSK_SRC 0x00080000
86
+#define AMSK_START 0x00100000
87
+#define AMSK_STYLE 0x00200000
88
+#define AMSK_TARGET 0x00400000
89
+#define AMSK_TYPE 0x00800000
90
+#define AMSK_VALIGN 0x01000000
91
+#define AMSK_VALUE 0x02000000
92
+#define AMSK_VSPACE 0x04000000
93
+#define AMSK_WIDTH 0x08000000
9294
9395
static const struct AllowedAttribute {
9496
const char *zName;
9597
unsigned int iMask;
9698
} aAttribute[] = {
@@ -114,10 +116,11 @@
114116
{ "name", AMSK_NAME, },
115117
{ "rowspan", AMSK_ROWSPAN, },
116118
{ "size", AMSK_SIZE, },
117119
{ "src", AMSK_SRC, },
118120
{ "start", AMSK_START, },
121
+ { "style", AMSK_STYLE, },
119122
{ "target", AMSK_TARGET, },
120123
{ "type", AMSK_TYPE, },
121124
{ "valign", AMSK_VALIGN, },
122125
{ "value", AMSK_VALUE, },
123126
{ "vspace", AMSK_VSPACE, },
@@ -241,80 +244,96 @@
241244
short int iType; /* The MUTYPE_* code */
242245
int allowedAttr; /* Allowed attributes on this markup */
243246
} aMarkup[] = {
244247
{ 0, MARKUP_INVALID, 0, 0 },
245248
{ "a", MARKUP_A, MUTYPE_HYPERLINK,
246
- AMSK_HREF|AMSK_NAME|AMSK_CLASS|AMSK_TARGET },
247
- { "address", MARKUP_ADDRESS, MUTYPE_BLOCK, 0 },
248
- { "b", MARKUP_B, MUTYPE_FONT, 0 },
249
- { "big", MARKUP_BIG, MUTYPE_FONT, 0 },
250
- { "blockquote", MARKUP_BLOCKQUOTE, MUTYPE_BLOCK, 0 },
251
- { "br", MARKUP_BR, MUTYPE_SINGLE, AMSK_CLEAR },
252
- { "center", MARKUP_CENTER, MUTYPE_BLOCK, 0 },
253
- { "cite", MARKUP_CITE, MUTYPE_FONT, 0 },
254
- { "code", MARKUP_CODE, MUTYPE_FONT, 0 },
249
+ AMSK_HREF|AMSK_NAME|AMSK_CLASS|AMSK_TARGET|AMSK_STYLE },
250
+ { "address", MARKUP_ADDRESS, MUTYPE_BLOCK, AMSK_STYLE },
251
+ { "b", MARKUP_B, MUTYPE_FONT, AMSK_STYLE },
252
+ { "big", MARKUP_BIG, MUTYPE_FONT, AMSK_STYLE },
253
+ { "blockquote", MARKUP_BLOCKQUOTE, MUTYPE_BLOCK, AMSK_STYLE },
254
+ { "br", MARKUP_BR, MUTYPE_SINGLE, AMSK_CLEAR },
255
+ { "center", MARKUP_CENTER, MUTYPE_BLOCK, AMSK_STYLE },
256
+ { "cite", MARKUP_CITE, MUTYPE_FONT, AMSK_STYLE },
257
+ { "code", MARKUP_CODE, MUTYPE_FONT, AMSK_STYLE },
255258
{ "col", MARKUP_COL, MUTYPE_SINGLE,
256
- AMSK_ALIGN|AMSK_CLASS|AMSK_COLSPAN|AMSK_WIDTH },
259
+ AMSK_ALIGN|AMSK_CLASS|AMSK_COLSPAN|AMSK_WIDTH|AMSK_STYLE },
257260
{ "colgroup", MARKUP_COLGROUP, MUTYPE_BLOCK,
258
- AMSK_ALIGN|AMSK_CLASS|AMSK_COLSPAN|AMSK_WIDTH},
259
- { "dd", MARKUP_DD, MUTYPE_LI, 0 },
260
- { "dfn", MARKUP_DFN, MUTYPE_FONT, 0 },
261
- { "div", MARKUP_DIV, MUTYPE_BLOCK, AMSK_ID|AMSK_CLASS },
262
- { "dl", MARKUP_DL, MUTYPE_LIST, AMSK_COMPACT },
263
- { "dt", MARKUP_DT, MUTYPE_LI, 0 },
264
- { "em", MARKUP_EM, MUTYPE_FONT, 0 },
261
+ AMSK_ALIGN|AMSK_CLASS|AMSK_COLSPAN|AMSK_WIDTH|AMSK_STYLE},
262
+ { "dd", MARKUP_DD, MUTYPE_LI, AMSK_STYLE },
263
+ { "dfn", MARKUP_DFN, MUTYPE_FONT, AMSK_STYLE },
264
+ { "div", MARKUP_DIV, MUTYPE_BLOCK,
265
+ AMSK_ID|AMSK_CLASS|AMSK_STYLE },
266
+ { "dl", MARKUP_DL, MUTYPE_LIST,
267
+ AMSK_COMPACT|AMSK_STYLE },
268
+ { "dt", MARKUP_DT, MUTYPE_LI, AMSK_STYLE },
269
+ { "em", MARKUP_EM, MUTYPE_FONT, AMSK_STYLE },
265270
{ "font", MARKUP_FONT, MUTYPE_FONT,
266
- AMSK_COLOR|AMSK_FACE|AMSK_SIZE },
267
- { "h1", MARKUP_H1, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
268
- { "h2", MARKUP_H2, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
269
- { "h3", MARKUP_H3, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
270
- { "h4", MARKUP_H4, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
271
- { "h5", MARKUP_H5, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
272
- { "h6", MARKUP_H6, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
271
+ AMSK_COLOR|AMSK_FACE|AMSK_SIZE|AMSK_STYLE },
272
+ { "h1", MARKUP_H1, MUTYPE_BLOCK,
273
+ AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
274
+ { "h2", MARKUP_H2, MUTYPE_BLOCK,
275
+ AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
276
+ { "h3", MARKUP_H3, MUTYPE_BLOCK,
277
+ AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
278
+ { "h4", MARKUP_H4, MUTYPE_BLOCK,
279
+ AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
280
+ { "h5", MARKUP_H5, MUTYPE_BLOCK,
281
+ AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
282
+ { "h6", MARKUP_H6, MUTYPE_BLOCK,
283
+ AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
273284
{ "hr", MARKUP_HR, MUTYPE_SINGLE,
274
- AMSK_ALIGN|AMSK_COLOR|AMSK_SIZE|AMSK_WIDTH|AMSK_CLASS },
275
- { "i", MARKUP_I, MUTYPE_FONT, 0 },
285
+ AMSK_ALIGN|AMSK_COLOR|AMSK_SIZE|AMSK_WIDTH|
286
+ AMSK_STYLE|AMSK_CLASS },
287
+ { "i", MARKUP_I, MUTYPE_FONT, AMSK_STYLE },
276288
{ "img", MARKUP_IMG, MUTYPE_SINGLE,
277289
AMSK_ALIGN|AMSK_ALT|AMSK_BORDER|AMSK_HEIGHT|
278
- AMSK_HSPACE|AMSK_SRC|AMSK_VSPACE|AMSK_WIDTH },
279
- { "kbd", MARKUP_KBD, MUTYPE_FONT, 0 },
290
+ AMSK_HSPACE|AMSK_SRC|AMSK_VSPACE|AMSK_WIDTH|AMSK_STYLE },
291
+ { "kbd", MARKUP_KBD, MUTYPE_FONT, AMSK_STYLE },
280292
{ "li", MARKUP_LI, MUTYPE_LI,
281
- AMSK_TYPE|AMSK_VALUE },
293
+ AMSK_TYPE|AMSK_VALUE|AMSK_STYLE },
282294
{ "nobr", MARKUP_NOBR, MUTYPE_FONT, 0 },
283295
{ "nowiki", MARKUP_NOWIKI, MUTYPE_SPECIAL, 0 },
284296
{ "ol", MARKUP_OL, MUTYPE_LIST,
285
- AMSK_START|AMSK_TYPE|AMSK_COMPACT },
286
- { "p", MARKUP_P, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
287
- { "pre", MARKUP_PRE, MUTYPE_BLOCK, 0 },
288
- { "s", MARKUP_S, MUTYPE_FONT, 0 },
289
- { "samp", MARKUP_SAMP, MUTYPE_FONT, 0 },
290
- { "small", MARKUP_SMALL, MUTYPE_FONT, 0 },
291
- { "span", MARKUP_SPAN, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
292
- { "strike", MARKUP_STRIKE, MUTYPE_FONT, 0 },
293
- { "strong", MARKUP_STRONG, MUTYPE_FONT, 0 },
294
- { "sub", MARKUP_SUB, MUTYPE_FONT, 0 },
295
- { "sup", MARKUP_SUP, MUTYPE_FONT, 0 },
297
+ AMSK_START|AMSK_TYPE|AMSK_COMPACT|AMSK_STYLE },
298
+ { "p", MARKUP_P, MUTYPE_BLOCK,
299
+ AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
300
+ { "pre", MARKUP_PRE, MUTYPE_BLOCK, AMSK_STYLE },
301
+ { "s", MARKUP_S, MUTYPE_FONT, AMSK_STYLE },
302
+ { "samp", MARKUP_SAMP, MUTYPE_FONT, AMSK_STYLE },
303
+ { "small", MARKUP_SMALL, MUTYPE_FONT, AMSK_STYLE },
304
+ { "span", MARKUP_SPAN, MUTYPE_BLOCK,
305
+ AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
306
+ { "strike", MARKUP_STRIKE, MUTYPE_FONT, AMSK_STYLE },
307
+ { "strong", MARKUP_STRONG, MUTYPE_FONT, AMSK_STYLE },
308
+ { "sub", MARKUP_SUB, MUTYPE_FONT, AMSK_STYLE },
309
+ { "sup", MARKUP_SUP, MUTYPE_FONT, AMSK_STYLE },
296310
{ "table", MARKUP_TABLE, MUTYPE_TABLE,
297311
AMSK_ALIGN|AMSK_BGCOLOR|AMSK_BORDER|AMSK_CELLPADDING|
298
- AMSK_CELLSPACING|AMSK_HSPACE|AMSK_VSPACE|AMSK_CLASS },
299
- { "tbody", MARKUP_TBODY, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
312
+ AMSK_CELLSPACING|AMSK_HSPACE|AMSK_VSPACE|AMSK_CLASS|
313
+ AMSK_STYLE },
314
+ { "tbody", MARKUP_TBODY, MUTYPE_BLOCK,
315
+ AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
300316
{ "td", MARKUP_TD, MUTYPE_TD,
301317
AMSK_ALIGN|AMSK_BGCOLOR|AMSK_COLSPAN|
302
- AMSK_ROWSPAN|AMSK_VALIGN|AMSK_CLASS },
303
- { "tfoot", MARKUP_TFOOT, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
318
+ AMSK_ROWSPAN|AMSK_VALIGN|AMSK_CLASS|AMSK_STYLE },
319
+ { "tfoot", MARKUP_TFOOT, MUTYPE_BLOCK,
320
+ AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
304321
{ "th", MARKUP_TH, MUTYPE_TD,
305322
AMSK_ALIGN|AMSK_BGCOLOR|AMSK_COLSPAN|
306
- AMSK_ROWSPAN|AMSK_VALIGN|AMSK_CLASS },
307
- { "thead", MARKUP_THEAD, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
323
+ AMSK_ROWSPAN|AMSK_VALIGN|AMSK_CLASS|AMSK_STYLE },
324
+ { "thead", MARKUP_THEAD, MUTYPE_BLOCK,
325
+ AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
308326
{ "tr", MARKUP_TR, MUTYPE_TR,
309
- AMSK_ALIGN|AMSK_BGCOLOR|AMSK_VALIGN|AMSK_CLASS },
310
- { "tt", MARKUP_TT, MUTYPE_FONT, 0 },
311
- { "u", MARKUP_U, MUTYPE_FONT, 0 },
327
+ AMSK_ALIGN|AMSK_BGCOLOR|AMSK_VALIGN|AMSK_CLASS|AMSK_STYLE },
328
+ { "tt", MARKUP_TT, MUTYPE_FONT, AMSK_STYLE },
329
+ { "u", MARKUP_U, MUTYPE_FONT, AMSK_STYLE },
312330
{ "ul", MARKUP_UL, MUTYPE_LIST,
313
- AMSK_TYPE|AMSK_COMPACT },
314
- { "var", MARKUP_VAR, MUTYPE_FONT, 0 },
315
- { "verbatim", MARKUP_VERBATIM, MUTYPE_SPECIAL, AMSK_ID|AMSK_TYPE },
331
+ AMSK_TYPE|AMSK_COMPACT|AMSK_STYLE },
332
+ { "var", MARKUP_VAR, MUTYPE_FONT, AMSK_STYLE },
333
+ { "verbatim", MARKUP_VERBATIM, MUTYPE_SPECIAL,
334
+ AMSK_ID|AMSK_TYPE },
316335
};
317336
318337
void show_allowed_wiki_markup( void ){
319338
int i; /* loop over allowedAttr */
320339
321340
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -54,43 +54,45 @@
54 #define ATTR_NAME 17
55 #define ATTR_ROWSPAN 18
56 #define ATTR_SIZE 19
57 #define ATTR_SRC 20
58 #define ATTR_START 21
59 #define ATTR_TARGET 22
60 #define ATTR_TYPE 23
61 #define ATTR_VALIGN 24
62 #define ATTR_VALUE 25
63 #define ATTR_VSPACE 26
64 #define ATTR_WIDTH 27
65 #define AMSK_ALIGN 0x0000001
66 #define AMSK_ALT 0x0000002
67 #define AMSK_BGCOLOR 0x0000004
68 #define AMSK_BORDER 0x0000008
69 #define AMSK_CELLPADDING 0x0000010
70 #define AMSK_CELLSPACING 0x0000020
71 #define AMSK_CLEAR 0x0000040
72 #define AMSK_COLOR 0x0000080
73 #define AMSK_COLSPAN 0x0000100
74 #define AMSK_COMPACT 0x0000200
75 #define AMSK_FACE 0x0000400
76 #define AMSK_HEIGHT 0x0000800
77 #define AMSK_HREF 0x0001000
78 #define AMSK_HSPACE 0x0002000
79 #define AMSK_ID 0x0004000
80 #define AMSK_NAME 0x0008000
81 #define AMSK_ROWSPAN 0x0010000
82 #define AMSK_SIZE 0x0020000
83 #define AMSK_SRC 0x0040000
84 #define AMSK_START 0x0080000
85 #define AMSK_TYPE 0x0100000
86 #define AMSK_VALIGN 0x0200000
87 #define AMSK_VALUE 0x0400000
88 #define AMSK_VSPACE 0x0800000
89 #define AMSK_WIDTH 0x1000000
90 #define AMSK_CLASS 0x2000000
91 #define AMSK_TARGET 0x4000000
 
 
92
93 static const struct AllowedAttribute {
94 const char *zName;
95 unsigned int iMask;
96 } aAttribute[] = {
@@ -114,10 +116,11 @@
114 { "name", AMSK_NAME, },
115 { "rowspan", AMSK_ROWSPAN, },
116 { "size", AMSK_SIZE, },
117 { "src", AMSK_SRC, },
118 { "start", AMSK_START, },
 
119 { "target", AMSK_TARGET, },
120 { "type", AMSK_TYPE, },
121 { "valign", AMSK_VALIGN, },
122 { "value", AMSK_VALUE, },
123 { "vspace", AMSK_VSPACE, },
@@ -241,80 +244,96 @@
241 short int iType; /* The MUTYPE_* code */
242 int allowedAttr; /* Allowed attributes on this markup */
243 } aMarkup[] = {
244 { 0, MARKUP_INVALID, 0, 0 },
245 { "a", MARKUP_A, MUTYPE_HYPERLINK,
246 AMSK_HREF|AMSK_NAME|AMSK_CLASS|AMSK_TARGET },
247 { "address", MARKUP_ADDRESS, MUTYPE_BLOCK, 0 },
248 { "b", MARKUP_B, MUTYPE_FONT, 0 },
249 { "big", MARKUP_BIG, MUTYPE_FONT, 0 },
250 { "blockquote", MARKUP_BLOCKQUOTE, MUTYPE_BLOCK, 0 },
251 { "br", MARKUP_BR, MUTYPE_SINGLE, AMSK_CLEAR },
252 { "center", MARKUP_CENTER, MUTYPE_BLOCK, 0 },
253 { "cite", MARKUP_CITE, MUTYPE_FONT, 0 },
254 { "code", MARKUP_CODE, MUTYPE_FONT, 0 },
255 { "col", MARKUP_COL, MUTYPE_SINGLE,
256 AMSK_ALIGN|AMSK_CLASS|AMSK_COLSPAN|AMSK_WIDTH },
257 { "colgroup", MARKUP_COLGROUP, MUTYPE_BLOCK,
258 AMSK_ALIGN|AMSK_CLASS|AMSK_COLSPAN|AMSK_WIDTH},
259 { "dd", MARKUP_DD, MUTYPE_LI, 0 },
260 { "dfn", MARKUP_DFN, MUTYPE_FONT, 0 },
261 { "div", MARKUP_DIV, MUTYPE_BLOCK, AMSK_ID|AMSK_CLASS },
262 { "dl", MARKUP_DL, MUTYPE_LIST, AMSK_COMPACT },
263 { "dt", MARKUP_DT, MUTYPE_LI, 0 },
264 { "em", MARKUP_EM, MUTYPE_FONT, 0 },
 
 
265 { "font", MARKUP_FONT, MUTYPE_FONT,
266 AMSK_COLOR|AMSK_FACE|AMSK_SIZE },
267 { "h1", MARKUP_H1, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
268 { "h2", MARKUP_H2, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
269 { "h3", MARKUP_H3, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
270 { "h4", MARKUP_H4, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
271 { "h5", MARKUP_H5, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
272 { "h6", MARKUP_H6, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
 
 
 
 
 
 
273 { "hr", MARKUP_HR, MUTYPE_SINGLE,
274 AMSK_ALIGN|AMSK_COLOR|AMSK_SIZE|AMSK_WIDTH|AMSK_CLASS },
275 { "i", MARKUP_I, MUTYPE_FONT, 0 },
 
276 { "img", MARKUP_IMG, MUTYPE_SINGLE,
277 AMSK_ALIGN|AMSK_ALT|AMSK_BORDER|AMSK_HEIGHT|
278 AMSK_HSPACE|AMSK_SRC|AMSK_VSPACE|AMSK_WIDTH },
279 { "kbd", MARKUP_KBD, MUTYPE_FONT, 0 },
280 { "li", MARKUP_LI, MUTYPE_LI,
281 AMSK_TYPE|AMSK_VALUE },
282 { "nobr", MARKUP_NOBR, MUTYPE_FONT, 0 },
283 { "nowiki", MARKUP_NOWIKI, MUTYPE_SPECIAL, 0 },
284 { "ol", MARKUP_OL, MUTYPE_LIST,
285 AMSK_START|AMSK_TYPE|AMSK_COMPACT },
286 { "p", MARKUP_P, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
287 { "pre", MARKUP_PRE, MUTYPE_BLOCK, 0 },
288 { "s", MARKUP_S, MUTYPE_FONT, 0 },
289 { "samp", MARKUP_SAMP, MUTYPE_FONT, 0 },
290 { "small", MARKUP_SMALL, MUTYPE_FONT, 0 },
291 { "span", MARKUP_SPAN, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
292 { "strike", MARKUP_STRIKE, MUTYPE_FONT, 0 },
293 { "strong", MARKUP_STRONG, MUTYPE_FONT, 0 },
294 { "sub", MARKUP_SUB, MUTYPE_FONT, 0 },
295 { "sup", MARKUP_SUP, MUTYPE_FONT, 0 },
 
 
296 { "table", MARKUP_TABLE, MUTYPE_TABLE,
297 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_BORDER|AMSK_CELLPADDING|
298 AMSK_CELLSPACING|AMSK_HSPACE|AMSK_VSPACE|AMSK_CLASS },
299 { "tbody", MARKUP_TBODY, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
 
 
300 { "td", MARKUP_TD, MUTYPE_TD,
301 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_COLSPAN|
302 AMSK_ROWSPAN|AMSK_VALIGN|AMSK_CLASS },
303 { "tfoot", MARKUP_TFOOT, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
 
304 { "th", MARKUP_TH, MUTYPE_TD,
305 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_COLSPAN|
306 AMSK_ROWSPAN|AMSK_VALIGN|AMSK_CLASS },
307 { "thead", MARKUP_THEAD, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_CLASS },
 
308 { "tr", MARKUP_TR, MUTYPE_TR,
309 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_VALIGN|AMSK_CLASS },
310 { "tt", MARKUP_TT, MUTYPE_FONT, 0 },
311 { "u", MARKUP_U, MUTYPE_FONT, 0 },
312 { "ul", MARKUP_UL, MUTYPE_LIST,
313 AMSK_TYPE|AMSK_COMPACT },
314 { "var", MARKUP_VAR, MUTYPE_FONT, 0 },
315 { "verbatim", MARKUP_VERBATIM, MUTYPE_SPECIAL, AMSK_ID|AMSK_TYPE },
 
316 };
317
318 void show_allowed_wiki_markup( void ){
319 int i; /* loop over allowedAttr */
320
321
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -54,43 +54,45 @@
54 #define ATTR_NAME 17
55 #define ATTR_ROWSPAN 18
56 #define ATTR_SIZE 19
57 #define ATTR_SRC 20
58 #define ATTR_START 21
59 #define ATTR_STYLE 22
60 #define ATTR_TARGET 23
61 #define ATTR_TYPE 24
62 #define ATTR_VALIGN 25
63 #define ATTR_VALUE 26
64 #define ATTR_VSPACE 27
65 #define ATTR_WIDTH 28
66 #define AMSK_ALIGN 0x00000001
67 #define AMSK_ALT 0x00000002
68 #define AMSK_BGCOLOR 0x00000004
69 #define AMSK_BORDER 0x00000008
70 #define AMSK_CELLPADDING 0x00000010
71 #define AMSK_CELLSPACING 0x00000020
72 #define AMSK_CLASS 0x00000040
73 #define AMSK_CLEAR 0x00000080
74 #define AMSK_COLOR 0x00000100
75 #define AMSK_COLSPAN 0x00000200
76 #define AMSK_COMPACT 0x00000400
77 #define AMSK_FACE 0x00000800
78 #define AMSK_HEIGHT 0x00001000
79 #define AMSK_HREF 0x00002000
80 #define AMSK_HSPACE 0x00004000
81 #define AMSK_ID 0x00008000
82 #define AMSK_NAME 0x00010000
83 #define AMSK_ROWSPAN 0x00020000
84 #define AMSK_SIZE 0x00040000
85 #define AMSK_SRC 0x00080000
86 #define AMSK_START 0x00100000
87 #define AMSK_STYLE 0x00200000
88 #define AMSK_TARGET 0x00400000
89 #define AMSK_TYPE 0x00800000
90 #define AMSK_VALIGN 0x01000000
91 #define AMSK_VALUE 0x02000000
92 #define AMSK_VSPACE 0x04000000
93 #define AMSK_WIDTH 0x08000000
94
95 static const struct AllowedAttribute {
96 const char *zName;
97 unsigned int iMask;
98 } aAttribute[] = {
@@ -114,10 +116,11 @@
116 { "name", AMSK_NAME, },
117 { "rowspan", AMSK_ROWSPAN, },
118 { "size", AMSK_SIZE, },
119 { "src", AMSK_SRC, },
120 { "start", AMSK_START, },
121 { "style", AMSK_STYLE, },
122 { "target", AMSK_TARGET, },
123 { "type", AMSK_TYPE, },
124 { "valign", AMSK_VALIGN, },
125 { "value", AMSK_VALUE, },
126 { "vspace", AMSK_VSPACE, },
@@ -241,80 +244,96 @@
244 short int iType; /* The MUTYPE_* code */
245 int allowedAttr; /* Allowed attributes on this markup */
246 } aMarkup[] = {
247 { 0, MARKUP_INVALID, 0, 0 },
248 { "a", MARKUP_A, MUTYPE_HYPERLINK,
249 AMSK_HREF|AMSK_NAME|AMSK_CLASS|AMSK_TARGET|AMSK_STYLE },
250 { "address", MARKUP_ADDRESS, MUTYPE_BLOCK, AMSK_STYLE },
251 { "b", MARKUP_B, MUTYPE_FONT, AMSK_STYLE },
252 { "big", MARKUP_BIG, MUTYPE_FONT, AMSK_STYLE },
253 { "blockquote", MARKUP_BLOCKQUOTE, MUTYPE_BLOCK, AMSK_STYLE },
254 { "br", MARKUP_BR, MUTYPE_SINGLE, AMSK_CLEAR },
255 { "center", MARKUP_CENTER, MUTYPE_BLOCK, AMSK_STYLE },
256 { "cite", MARKUP_CITE, MUTYPE_FONT, AMSK_STYLE },
257 { "code", MARKUP_CODE, MUTYPE_FONT, AMSK_STYLE },
258 { "col", MARKUP_COL, MUTYPE_SINGLE,
259 AMSK_ALIGN|AMSK_CLASS|AMSK_COLSPAN|AMSK_WIDTH|AMSK_STYLE },
260 { "colgroup", MARKUP_COLGROUP, MUTYPE_BLOCK,
261 AMSK_ALIGN|AMSK_CLASS|AMSK_COLSPAN|AMSK_WIDTH|AMSK_STYLE},
262 { "dd", MARKUP_DD, MUTYPE_LI, AMSK_STYLE },
263 { "dfn", MARKUP_DFN, MUTYPE_FONT, AMSK_STYLE },
264 { "div", MARKUP_DIV, MUTYPE_BLOCK,
265 AMSK_ID|AMSK_CLASS|AMSK_STYLE },
266 { "dl", MARKUP_DL, MUTYPE_LIST,
267 AMSK_COMPACT|AMSK_STYLE },
268 { "dt", MARKUP_DT, MUTYPE_LI, AMSK_STYLE },
269 { "em", MARKUP_EM, MUTYPE_FONT, AMSK_STYLE },
270 { "font", MARKUP_FONT, MUTYPE_FONT,
271 AMSK_COLOR|AMSK_FACE|AMSK_SIZE|AMSK_STYLE },
272 { "h1", MARKUP_H1, MUTYPE_BLOCK,
273 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
274 { "h2", MARKUP_H2, MUTYPE_BLOCK,
275 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
276 { "h3", MARKUP_H3, MUTYPE_BLOCK,
277 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
278 { "h4", MARKUP_H4, MUTYPE_BLOCK,
279 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
280 { "h5", MARKUP_H5, MUTYPE_BLOCK,
281 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
282 { "h6", MARKUP_H6, MUTYPE_BLOCK,
283 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
284 { "hr", MARKUP_HR, MUTYPE_SINGLE,
285 AMSK_ALIGN|AMSK_COLOR|AMSK_SIZE|AMSK_WIDTH|
286 AMSK_STYLE|AMSK_CLASS },
287 { "i", MARKUP_I, MUTYPE_FONT, AMSK_STYLE },
288 { "img", MARKUP_IMG, MUTYPE_SINGLE,
289 AMSK_ALIGN|AMSK_ALT|AMSK_BORDER|AMSK_HEIGHT|
290 AMSK_HSPACE|AMSK_SRC|AMSK_VSPACE|AMSK_WIDTH|AMSK_STYLE },
291 { "kbd", MARKUP_KBD, MUTYPE_FONT, AMSK_STYLE },
292 { "li", MARKUP_LI, MUTYPE_LI,
293 AMSK_TYPE|AMSK_VALUE|AMSK_STYLE },
294 { "nobr", MARKUP_NOBR, MUTYPE_FONT, 0 },
295 { "nowiki", MARKUP_NOWIKI, MUTYPE_SPECIAL, 0 },
296 { "ol", MARKUP_OL, MUTYPE_LIST,
297 AMSK_START|AMSK_TYPE|AMSK_COMPACT|AMSK_STYLE },
298 { "p", MARKUP_P, MUTYPE_BLOCK,
299 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
300 { "pre", MARKUP_PRE, MUTYPE_BLOCK, AMSK_STYLE },
301 { "s", MARKUP_S, MUTYPE_FONT, AMSK_STYLE },
302 { "samp", MARKUP_SAMP, MUTYPE_FONT, AMSK_STYLE },
303 { "small", MARKUP_SMALL, MUTYPE_FONT, AMSK_STYLE },
304 { "span", MARKUP_SPAN, MUTYPE_BLOCK,
305 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
306 { "strike", MARKUP_STRIKE, MUTYPE_FONT, AMSK_STYLE },
307 { "strong", MARKUP_STRONG, MUTYPE_FONT, AMSK_STYLE },
308 { "sub", MARKUP_SUB, MUTYPE_FONT, AMSK_STYLE },
309 { "sup", MARKUP_SUP, MUTYPE_FONT, AMSK_STYLE },
310 { "table", MARKUP_TABLE, MUTYPE_TABLE,
311 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_BORDER|AMSK_CELLPADDING|
312 AMSK_CELLSPACING|AMSK_HSPACE|AMSK_VSPACE|AMSK_CLASS|
313 AMSK_STYLE },
314 { "tbody", MARKUP_TBODY, MUTYPE_BLOCK,
315 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
316 { "td", MARKUP_TD, MUTYPE_TD,
317 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_COLSPAN|
318 AMSK_ROWSPAN|AMSK_VALIGN|AMSK_CLASS|AMSK_STYLE },
319 { "tfoot", MARKUP_TFOOT, MUTYPE_BLOCK,
320 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
321 { "th", MARKUP_TH, MUTYPE_TD,
322 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_COLSPAN|
323 AMSK_ROWSPAN|AMSK_VALIGN|AMSK_CLASS|AMSK_STYLE },
324 { "thead", MARKUP_THEAD, MUTYPE_BLOCK,
325 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE },
326 { "tr", MARKUP_TR, MUTYPE_TR,
327 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_VALIGN|AMSK_CLASS|AMSK_STYLE },
328 { "tt", MARKUP_TT, MUTYPE_FONT, AMSK_STYLE },
329 { "u", MARKUP_U, MUTYPE_FONT, AMSK_STYLE },
330 { "ul", MARKUP_UL, MUTYPE_LIST,
331 AMSK_TYPE|AMSK_COMPACT|AMSK_STYLE },
332 { "var", MARKUP_VAR, MUTYPE_FONT, AMSK_STYLE },
333 { "verbatim", MARKUP_VERBATIM, MUTYPE_SPECIAL,
334 AMSK_ID|AMSK_TYPE },
335 };
336
337 void show_allowed_wiki_markup( void ){
338 int i; /* loop over allowedAttr */
339
340

Keyboard Shortcuts

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