Fossil SCM

Correct spelling of the word "literal."

andygoth 2015-05-17 21:54 trunk
Commit 73720a34cbf1adebf090356aaf70e730d9dcacb3
1 file changed +56 -56
--- src/markdown_html.c
+++ src/markdown_html.c
@@ -34,16 +34,16 @@
3434
3535
/* INTER_BLOCK -- skip a line between block level elements */
3636
#define INTER_BLOCK(ob) \
3737
do { if( blob_size(ob)>0 ) blob_append(ob, "\n", 1); } while (0)
3838
39
-/* BLOB_APPEND_LITTERAL -- append a string litteral to a blob */
40
-#define BLOB_APPEND_LITTERAL(blob, litteral) \
41
- blob_append((blob), "" litteral, (sizeof litteral)-1)
39
+/* BLOB_APPEND_LITERAL -- append a string literal to a blob */
40
+#define BLOB_APPEND_LITERAL(blob, literal) \
41
+ blob_append((blob), "" literal, (sizeof literal)-1)
4242
/*
4343
* The empty string in the second argument leads to a syntax error
44
- * when the macro is not used with a string litteral. Unfortunately
44
+ * when the macro is not used with a string literal. Unfortunately
4545
* the error is not overly explicit.
4646
*/
4747
4848
/* BLOB_APPEND_BLOB -- append blob contents to another */
4949
#define BLOB_APPEND_BLOB(dest, src) \
@@ -65,17 +65,17 @@
6565
i++;
6666
}
6767
blob_append(ob, data+beg, i-beg);
6868
while( i<size ){
6969
if( data[i]=='<' ){
70
- BLOB_APPEND_LITTERAL(ob, "&lt;");
70
+ BLOB_APPEND_LITERAL(ob, "&lt;");
7171
}else if( data[i]=='>' ){
72
- BLOB_APPEND_LITTERAL(ob, "&gt;");
72
+ BLOB_APPEND_LITERAL(ob, "&gt;");
7373
}else if( data[i]=='&' ){
74
- BLOB_APPEND_LITTERAL(ob, "&amp;");
74
+ BLOB_APPEND_LITERAL(ob, "&amp;");
7575
}else if( data[i]=='"' ){
76
- BLOB_APPEND_LITTERAL(ob, "&quot;");
76
+ BLOB_APPEND_LITERAL(ob, "&quot;");
7777
}else{
7878
break;
7979
}
8080
i++;
8181
}
@@ -88,41 +88,41 @@
8888
/* Size of the prolog: "<div class='markdown'>\n" */
8989
#define PROLOG_SIZE 23
9090
9191
static void html_prolog(struct Blob *ob, void *opaque){
9292
INTER_BLOCK(ob);
93
- BLOB_APPEND_LITTERAL(ob, "<div class=\"markdown\">\n");
93
+ BLOB_APPEND_LITERAL(ob, "<div class=\"markdown\">\n");
9494
assert( blob_size(ob)==PROLOG_SIZE );
9595
}
9696
9797
static void html_epilog(struct Blob *ob, void *opaque){
9898
INTER_BLOCK(ob);
99
- BLOB_APPEND_LITTERAL(ob, "</div>\n");
99
+ BLOB_APPEND_LITERAL(ob, "</div>\n");
100100
}
101101
102102
static void html_raw_block(struct Blob *ob, struct Blob *text, void *opaque){
103103
char *data = blob_buffer(text);
104104
size_t first = 0, size = blob_size(text);
105105
INTER_BLOCK(ob);
106106
while( first<size && data[first]=='\n' ) first++;
107107
while( size>first && data[size-1]=='\n' ) size--;
108108
blob_append(ob, data+first, size-first);
109
- BLOB_APPEND_LITTERAL(ob, "\n");
109
+ BLOB_APPEND_LITERAL(ob, "\n");
110110
}
111111
112112
static void html_blockcode(struct Blob *ob, struct Blob *text, void *opaque){
113113
INTER_BLOCK(ob);
114
- BLOB_APPEND_LITTERAL(ob, "<pre><code>");
114
+ BLOB_APPEND_LITERAL(ob, "<pre><code>");
115115
html_escape(ob, blob_buffer(text), blob_size(text));
116
- BLOB_APPEND_LITTERAL(ob, "</code></pre>\n");
116
+ BLOB_APPEND_LITERAL(ob, "</code></pre>\n");
117117
}
118118
119119
static void html_blockquote(struct Blob *ob, struct Blob *text, void *opaque){
120120
INTER_BLOCK(ob);
121
- BLOB_APPEND_LITTERAL(ob, "<blockquote>\n");
121
+ BLOB_APPEND_LITERAL(ob, "<blockquote>\n");
122122
BLOB_APPEND_BLOB(ob, text);
123
- BLOB_APPEND_LITTERAL(ob, "</blockquote>\n");
123
+ BLOB_APPEND_LITERAL(ob, "</blockquote>\n");
124124
}
125125
126126
static void html_header(
127127
struct Blob *ob,
128128
struct Blob *text,
@@ -141,11 +141,11 @@
141141
blob_appendf(ob, "</h%d>", level);
142142
}
143143
144144
static void html_hrule(struct Blob *ob, void *opaque){
145145
INTER_BLOCK(ob);
146
- BLOB_APPEND_LITTERAL(ob, "<hr />\n");
146
+ BLOB_APPEND_LITERAL(ob, "<hr />\n");
147147
}
148148
149149
150150
static void html_list(
151151
struct Blob *ob,
@@ -169,20 +169,20 @@
169169
void *opaque
170170
){
171171
char *text_data = blob_buffer(text);
172172
size_t text_size = blob_size(text);
173173
while( text_size>0 && text_data[text_size-1]=='\n' ) text_size--;
174
- BLOB_APPEND_LITTERAL(ob, "<li>");
174
+ BLOB_APPEND_LITERAL(ob, "<li>");
175175
blob_append(ob, text_data, text_size);
176
- BLOB_APPEND_LITTERAL(ob, "</li>\n");
176
+ BLOB_APPEND_LITERAL(ob, "</li>\n");
177177
}
178178
179179
static void html_paragraph(struct Blob *ob, struct Blob *text, void *opaque){
180180
INTER_BLOCK(ob);
181
- BLOB_APPEND_LITTERAL(ob, "<p>");
181
+ BLOB_APPEND_LITERAL(ob, "<p>");
182182
BLOB_APPEND_BLOB(ob, text);
183
- BLOB_APPEND_LITTERAL(ob, "</p>\n");
183
+ BLOB_APPEND_LITERAL(ob, "</p>\n");
184184
}
185185
186186
187187
static void html_table(
188188
struct Blob *ob,
@@ -189,68 +189,68 @@
189189
struct Blob *head_row,
190190
struct Blob *rows,
191191
void *opaque
192192
){
193193
INTER_BLOCK(ob);
194
- BLOB_APPEND_LITTERAL(ob, "<table>\n");
194
+ BLOB_APPEND_LITERAL(ob, "<table>\n");
195195
if( head_row && blob_size(head_row)>0 ){
196
- BLOB_APPEND_LITTERAL(ob, "<thead>\n");
196
+ BLOB_APPEND_LITERAL(ob, "<thead>\n");
197197
BLOB_APPEND_BLOB(ob, head_row);
198
- BLOB_APPEND_LITTERAL(ob, "</thead>\n<tbody>\n");
198
+ BLOB_APPEND_LITERAL(ob, "</thead>\n<tbody>\n");
199199
}
200200
if( rows ){
201201
BLOB_APPEND_BLOB(ob, rows);
202202
}
203203
if( head_row && blob_size(head_row)>0 ){
204
- BLOB_APPEND_LITTERAL(ob, "</tbody>\n");
204
+ BLOB_APPEND_LITERAL(ob, "</tbody>\n");
205205
}
206
- BLOB_APPEND_LITTERAL(ob, "</table>\n");
206
+ BLOB_APPEND_LITERAL(ob, "</table>\n");
207207
}
208208
209209
static void html_table_cell(
210210
struct Blob *ob,
211211
struct Blob *text,
212212
int flags,
213213
void *opaque
214214
){
215215
if( flags & MKD_CELL_HEAD ){
216
- BLOB_APPEND_LITTERAL(ob, " <th");
216
+ BLOB_APPEND_LITERAL(ob, " <th");
217217
}else{
218
- BLOB_APPEND_LITTERAL(ob, " <td");
218
+ BLOB_APPEND_LITERAL(ob, " <td");
219219
}
220220
switch( flags & MKD_CELL_ALIGN_MASK ){
221221
case MKD_CELL_ALIGN_LEFT: {
222
- BLOB_APPEND_LITTERAL(ob, " align=\"left\"");
222
+ BLOB_APPEND_LITERAL(ob, " align=\"left\"");
223223
break;
224224
}
225225
case MKD_CELL_ALIGN_RIGHT: {
226
- BLOB_APPEND_LITTERAL(ob, " align=\"right\"");
226
+ BLOB_APPEND_LITERAL(ob, " align=\"right\"");
227227
break;
228228
}
229229
case MKD_CELL_ALIGN_CENTER: {
230
- BLOB_APPEND_LITTERAL(ob, " align=\"center\"");
230
+ BLOB_APPEND_LITERAL(ob, " align=\"center\"");
231231
break;
232232
}
233233
}
234
- BLOB_APPEND_LITTERAL(ob, ">");
234
+ BLOB_APPEND_LITERAL(ob, ">");
235235
BLOB_APPEND_BLOB(ob, text);
236236
if( flags & MKD_CELL_HEAD ){
237
- BLOB_APPEND_LITTERAL(ob, "</th>\n");
237
+ BLOB_APPEND_LITERAL(ob, "</th>\n");
238238
}else{
239
- BLOB_APPEND_LITTERAL(ob, "</td>\n");
239
+ BLOB_APPEND_LITERAL(ob, "</td>\n");
240240
}
241241
}
242242
243243
static void html_table_row(
244244
struct Blob *ob,
245245
struct Blob *cells,
246246
int flags,
247247
void *opaque
248248
){
249
- BLOB_APPEND_LITTERAL(ob, " <tr>\n");
249
+ BLOB_APPEND_LITERAL(ob, " <tr>\n");
250250
BLOB_APPEND_BLOB(ob, cells);
251
- BLOB_APPEND_LITTERAL(ob, " </tr>\n");
251
+ BLOB_APPEND_LITERAL(ob, " </tr>\n");
252252
}
253253
254254
255255
256256
/* HTML span tags */
@@ -265,52 +265,52 @@
265265
struct Blob *link,
266266
enum mkd_autolink type,
267267
void *opaque
268268
){
269269
if( !link || blob_size(link)<=0 ) return 0;
270
- BLOB_APPEND_LITTERAL(ob, "<a href=\"");
271
- if( type==MKDA_IMPLICIT_EMAIL ) BLOB_APPEND_LITTERAL(ob, "mailto:");
270
+ BLOB_APPEND_LITERAL(ob, "<a href=\"");
271
+ if( type==MKDA_IMPLICIT_EMAIL ) BLOB_APPEND_LITERAL(ob, "mailto:");
272272
html_escape(ob, blob_buffer(link), blob_size(link));
273
- BLOB_APPEND_LITTERAL(ob, "\">");
273
+ BLOB_APPEND_LITERAL(ob, "\">");
274274
if( type==MKDA_EXPLICIT_EMAIL && blob_size(link)>7 ){
275275
/* remove "mailto:" from displayed text */
276276
html_escape(ob, blob_buffer(link)+7, blob_size(link)-7);
277277
}else{
278278
html_escape(ob, blob_buffer(link), blob_size(link));
279279
}
280
- BLOB_APPEND_LITTERAL(ob, "</a>");
280
+ BLOB_APPEND_LITERAL(ob, "</a>");
281281
return 1;
282282
}
283283
284284
static int html_code_span(struct Blob *ob, struct Blob *text, void *opaque){
285
- BLOB_APPEND_LITTERAL(ob, "<code>");
285
+ BLOB_APPEND_LITERAL(ob, "<code>");
286286
html_escape(ob, blob_buffer(text), blob_size(text));
287
- BLOB_APPEND_LITTERAL(ob, "</code>");
287
+ BLOB_APPEND_LITERAL(ob, "</code>");
288288
return 1;
289289
}
290290
291291
static int html_double_emphasis(
292292
struct Blob *ob,
293293
struct Blob *text,
294294
char c,
295295
void *opaque
296296
){
297
- BLOB_APPEND_LITTERAL(ob, "<strong>");
297
+ BLOB_APPEND_LITERAL(ob, "<strong>");
298298
BLOB_APPEND_BLOB(ob, text);
299
- BLOB_APPEND_LITTERAL(ob, "</strong>");
299
+ BLOB_APPEND_LITERAL(ob, "</strong>");
300300
return 1;
301301
}
302302
303303
static int html_emphasis(
304304
struct Blob *ob,
305305
struct Blob *text,
306306
char c,
307307
void *opaque
308308
){
309
- BLOB_APPEND_LITTERAL(ob, "<em>");
309
+ BLOB_APPEND_LITERAL(ob, "<em>");
310310
BLOB_APPEND_BLOB(ob, text);
311
- BLOB_APPEND_LITTERAL(ob, "</em>");
311
+ BLOB_APPEND_LITERAL(ob, "</em>");
312312
return 1;
313313
}
314314
315315
static int html_image(
316316
struct Blob *ob,
@@ -317,24 +317,24 @@
317317
struct Blob *link,
318318
struct Blob *title,
319319
struct Blob *alt,
320320
void *opaque
321321
){
322
- BLOB_APPEND_LITTERAL(ob, "<img src=\"");
322
+ BLOB_APPEND_LITERAL(ob, "<img src=\"");
323323
html_escape(ob, blob_buffer(link), blob_size(link));
324
- BLOB_APPEND_LITTERAL(ob, "\" alt=\"");
324
+ BLOB_APPEND_LITERAL(ob, "\" alt=\"");
325325
html_escape(ob, blob_buffer(alt), blob_size(alt));
326326
if( title && blob_size(title)>0 ){
327
- BLOB_APPEND_LITTERAL(ob, "\" title=\"");
327
+ BLOB_APPEND_LITERAL(ob, "\" title=\"");
328328
html_escape(ob, blob_buffer(title), blob_size(title));
329329
}
330
- BLOB_APPEND_LITTERAL(ob, "\" />");
330
+ BLOB_APPEND_LITERAL(ob, "\" />");
331331
return 1;
332332
}
333333
334334
static int html_line_break(struct Blob *ob, void *opaque){
335
- BLOB_APPEND_LITTERAL(ob, "<br />\n");
335
+ BLOB_APPEND_LITERAL(ob, "<br />\n");
336336
return 1;
337337
}
338338
339339
static int html_link(
340340
struct Blob *ob,
@@ -341,31 +341,31 @@
341341
struct Blob *link,
342342
struct Blob *title,
343343
struct Blob *content,
344344
void *opaque
345345
){
346
- BLOB_APPEND_LITTERAL(ob, "<a href=\"");
346
+ BLOB_APPEND_LITERAL(ob, "<a href=\"");
347347
html_escape(ob, blob_buffer(link), blob_size(link));
348348
if( title && blob_size(title)>0 ){
349
- BLOB_APPEND_LITTERAL(ob, "\" title=\"");
349
+ BLOB_APPEND_LITERAL(ob, "\" title=\"");
350350
html_escape(ob, blob_buffer(title), blob_size(title));
351351
}
352
- BLOB_APPEND_LITTERAL(ob, "\">");
352
+ BLOB_APPEND_LITERAL(ob, "\">");
353353
BLOB_APPEND_BLOB(ob, content);
354
- BLOB_APPEND_LITTERAL(ob, "</a>");
354
+ BLOB_APPEND_LITERAL(ob, "</a>");
355355
return 1;
356356
}
357357
358358
static int html_triple_emphasis(
359359
struct Blob *ob,
360360
struct Blob *text,
361361
char c,
362362
void *opaque
363363
){
364
- BLOB_APPEND_LITTERAL(ob, "<strong><em>");
364
+ BLOB_APPEND_LITERAL(ob, "<strong><em>");
365365
BLOB_APPEND_BLOB(ob, text);
366
- BLOB_APPEND_LITTERAL(ob, "</em></strong>");
366
+ BLOB_APPEND_LITERAL(ob, "</em></strong>");
367367
return 1;
368368
}
369369
370370
371371
static void html_normal_text(struct Blob *ob, struct Blob *text, void *opaque){
372372
--- src/markdown_html.c
+++ src/markdown_html.c
@@ -34,16 +34,16 @@
34
35 /* INTER_BLOCK -- skip a line between block level elements */
36 #define INTER_BLOCK(ob) \
37 do { if( blob_size(ob)>0 ) blob_append(ob, "\n", 1); } while (0)
38
39 /* BLOB_APPEND_LITTERAL -- append a string litteral to a blob */
40 #define BLOB_APPEND_LITTERAL(blob, litteral) \
41 blob_append((blob), "" litteral, (sizeof litteral)-1)
42 /*
43 * The empty string in the second argument leads to a syntax error
44 * when the macro is not used with a string litteral. Unfortunately
45 * the error is not overly explicit.
46 */
47
48 /* BLOB_APPEND_BLOB -- append blob contents to another */
49 #define BLOB_APPEND_BLOB(dest, src) \
@@ -65,17 +65,17 @@
65 i++;
66 }
67 blob_append(ob, data+beg, i-beg);
68 while( i<size ){
69 if( data[i]=='<' ){
70 BLOB_APPEND_LITTERAL(ob, "&lt;");
71 }else if( data[i]=='>' ){
72 BLOB_APPEND_LITTERAL(ob, "&gt;");
73 }else if( data[i]=='&' ){
74 BLOB_APPEND_LITTERAL(ob, "&amp;");
75 }else if( data[i]=='"' ){
76 BLOB_APPEND_LITTERAL(ob, "&quot;");
77 }else{
78 break;
79 }
80 i++;
81 }
@@ -88,41 +88,41 @@
88 /* Size of the prolog: "<div class='markdown'>\n" */
89 #define PROLOG_SIZE 23
90
91 static void html_prolog(struct Blob *ob, void *opaque){
92 INTER_BLOCK(ob);
93 BLOB_APPEND_LITTERAL(ob, "<div class=\"markdown\">\n");
94 assert( blob_size(ob)==PROLOG_SIZE );
95 }
96
97 static void html_epilog(struct Blob *ob, void *opaque){
98 INTER_BLOCK(ob);
99 BLOB_APPEND_LITTERAL(ob, "</div>\n");
100 }
101
102 static void html_raw_block(struct Blob *ob, struct Blob *text, void *opaque){
103 char *data = blob_buffer(text);
104 size_t first = 0, size = blob_size(text);
105 INTER_BLOCK(ob);
106 while( first<size && data[first]=='\n' ) first++;
107 while( size>first && data[size-1]=='\n' ) size--;
108 blob_append(ob, data+first, size-first);
109 BLOB_APPEND_LITTERAL(ob, "\n");
110 }
111
112 static void html_blockcode(struct Blob *ob, struct Blob *text, void *opaque){
113 INTER_BLOCK(ob);
114 BLOB_APPEND_LITTERAL(ob, "<pre><code>");
115 html_escape(ob, blob_buffer(text), blob_size(text));
116 BLOB_APPEND_LITTERAL(ob, "</code></pre>\n");
117 }
118
119 static void html_blockquote(struct Blob *ob, struct Blob *text, void *opaque){
120 INTER_BLOCK(ob);
121 BLOB_APPEND_LITTERAL(ob, "<blockquote>\n");
122 BLOB_APPEND_BLOB(ob, text);
123 BLOB_APPEND_LITTERAL(ob, "</blockquote>\n");
124 }
125
126 static void html_header(
127 struct Blob *ob,
128 struct Blob *text,
@@ -141,11 +141,11 @@
141 blob_appendf(ob, "</h%d>", level);
142 }
143
144 static void html_hrule(struct Blob *ob, void *opaque){
145 INTER_BLOCK(ob);
146 BLOB_APPEND_LITTERAL(ob, "<hr />\n");
147 }
148
149
150 static void html_list(
151 struct Blob *ob,
@@ -169,20 +169,20 @@
169 void *opaque
170 ){
171 char *text_data = blob_buffer(text);
172 size_t text_size = blob_size(text);
173 while( text_size>0 && text_data[text_size-1]=='\n' ) text_size--;
174 BLOB_APPEND_LITTERAL(ob, "<li>");
175 blob_append(ob, text_data, text_size);
176 BLOB_APPEND_LITTERAL(ob, "</li>\n");
177 }
178
179 static void html_paragraph(struct Blob *ob, struct Blob *text, void *opaque){
180 INTER_BLOCK(ob);
181 BLOB_APPEND_LITTERAL(ob, "<p>");
182 BLOB_APPEND_BLOB(ob, text);
183 BLOB_APPEND_LITTERAL(ob, "</p>\n");
184 }
185
186
187 static void html_table(
188 struct Blob *ob,
@@ -189,68 +189,68 @@
189 struct Blob *head_row,
190 struct Blob *rows,
191 void *opaque
192 ){
193 INTER_BLOCK(ob);
194 BLOB_APPEND_LITTERAL(ob, "<table>\n");
195 if( head_row && blob_size(head_row)>0 ){
196 BLOB_APPEND_LITTERAL(ob, "<thead>\n");
197 BLOB_APPEND_BLOB(ob, head_row);
198 BLOB_APPEND_LITTERAL(ob, "</thead>\n<tbody>\n");
199 }
200 if( rows ){
201 BLOB_APPEND_BLOB(ob, rows);
202 }
203 if( head_row && blob_size(head_row)>0 ){
204 BLOB_APPEND_LITTERAL(ob, "</tbody>\n");
205 }
206 BLOB_APPEND_LITTERAL(ob, "</table>\n");
207 }
208
209 static void html_table_cell(
210 struct Blob *ob,
211 struct Blob *text,
212 int flags,
213 void *opaque
214 ){
215 if( flags & MKD_CELL_HEAD ){
216 BLOB_APPEND_LITTERAL(ob, " <th");
217 }else{
218 BLOB_APPEND_LITTERAL(ob, " <td");
219 }
220 switch( flags & MKD_CELL_ALIGN_MASK ){
221 case MKD_CELL_ALIGN_LEFT: {
222 BLOB_APPEND_LITTERAL(ob, " align=\"left\"");
223 break;
224 }
225 case MKD_CELL_ALIGN_RIGHT: {
226 BLOB_APPEND_LITTERAL(ob, " align=\"right\"");
227 break;
228 }
229 case MKD_CELL_ALIGN_CENTER: {
230 BLOB_APPEND_LITTERAL(ob, " align=\"center\"");
231 break;
232 }
233 }
234 BLOB_APPEND_LITTERAL(ob, ">");
235 BLOB_APPEND_BLOB(ob, text);
236 if( flags & MKD_CELL_HEAD ){
237 BLOB_APPEND_LITTERAL(ob, "</th>\n");
238 }else{
239 BLOB_APPEND_LITTERAL(ob, "</td>\n");
240 }
241 }
242
243 static void html_table_row(
244 struct Blob *ob,
245 struct Blob *cells,
246 int flags,
247 void *opaque
248 ){
249 BLOB_APPEND_LITTERAL(ob, " <tr>\n");
250 BLOB_APPEND_BLOB(ob, cells);
251 BLOB_APPEND_LITTERAL(ob, " </tr>\n");
252 }
253
254
255
256 /* HTML span tags */
@@ -265,52 +265,52 @@
265 struct Blob *link,
266 enum mkd_autolink type,
267 void *opaque
268 ){
269 if( !link || blob_size(link)<=0 ) return 0;
270 BLOB_APPEND_LITTERAL(ob, "<a href=\"");
271 if( type==MKDA_IMPLICIT_EMAIL ) BLOB_APPEND_LITTERAL(ob, "mailto:");
272 html_escape(ob, blob_buffer(link), blob_size(link));
273 BLOB_APPEND_LITTERAL(ob, "\">");
274 if( type==MKDA_EXPLICIT_EMAIL && blob_size(link)>7 ){
275 /* remove "mailto:" from displayed text */
276 html_escape(ob, blob_buffer(link)+7, blob_size(link)-7);
277 }else{
278 html_escape(ob, blob_buffer(link), blob_size(link));
279 }
280 BLOB_APPEND_LITTERAL(ob, "</a>");
281 return 1;
282 }
283
284 static int html_code_span(struct Blob *ob, struct Blob *text, void *opaque){
285 BLOB_APPEND_LITTERAL(ob, "<code>");
286 html_escape(ob, blob_buffer(text), blob_size(text));
287 BLOB_APPEND_LITTERAL(ob, "</code>");
288 return 1;
289 }
290
291 static int html_double_emphasis(
292 struct Blob *ob,
293 struct Blob *text,
294 char c,
295 void *opaque
296 ){
297 BLOB_APPEND_LITTERAL(ob, "<strong>");
298 BLOB_APPEND_BLOB(ob, text);
299 BLOB_APPEND_LITTERAL(ob, "</strong>");
300 return 1;
301 }
302
303 static int html_emphasis(
304 struct Blob *ob,
305 struct Blob *text,
306 char c,
307 void *opaque
308 ){
309 BLOB_APPEND_LITTERAL(ob, "<em>");
310 BLOB_APPEND_BLOB(ob, text);
311 BLOB_APPEND_LITTERAL(ob, "</em>");
312 return 1;
313 }
314
315 static int html_image(
316 struct Blob *ob,
@@ -317,24 +317,24 @@
317 struct Blob *link,
318 struct Blob *title,
319 struct Blob *alt,
320 void *opaque
321 ){
322 BLOB_APPEND_LITTERAL(ob, "<img src=\"");
323 html_escape(ob, blob_buffer(link), blob_size(link));
324 BLOB_APPEND_LITTERAL(ob, "\" alt=\"");
325 html_escape(ob, blob_buffer(alt), blob_size(alt));
326 if( title && blob_size(title)>0 ){
327 BLOB_APPEND_LITTERAL(ob, "\" title=\"");
328 html_escape(ob, blob_buffer(title), blob_size(title));
329 }
330 BLOB_APPEND_LITTERAL(ob, "\" />");
331 return 1;
332 }
333
334 static int html_line_break(struct Blob *ob, void *opaque){
335 BLOB_APPEND_LITTERAL(ob, "<br />\n");
336 return 1;
337 }
338
339 static int html_link(
340 struct Blob *ob,
@@ -341,31 +341,31 @@
341 struct Blob *link,
342 struct Blob *title,
343 struct Blob *content,
344 void *opaque
345 ){
346 BLOB_APPEND_LITTERAL(ob, "<a href=\"");
347 html_escape(ob, blob_buffer(link), blob_size(link));
348 if( title && blob_size(title)>0 ){
349 BLOB_APPEND_LITTERAL(ob, "\" title=\"");
350 html_escape(ob, blob_buffer(title), blob_size(title));
351 }
352 BLOB_APPEND_LITTERAL(ob, "\">");
353 BLOB_APPEND_BLOB(ob, content);
354 BLOB_APPEND_LITTERAL(ob, "</a>");
355 return 1;
356 }
357
358 static int html_triple_emphasis(
359 struct Blob *ob,
360 struct Blob *text,
361 char c,
362 void *opaque
363 ){
364 BLOB_APPEND_LITTERAL(ob, "<strong><em>");
365 BLOB_APPEND_BLOB(ob, text);
366 BLOB_APPEND_LITTERAL(ob, "</em></strong>");
367 return 1;
368 }
369
370
371 static void html_normal_text(struct Blob *ob, struct Blob *text, void *opaque){
372
--- src/markdown_html.c
+++ src/markdown_html.c
@@ -34,16 +34,16 @@
34
35 /* INTER_BLOCK -- skip a line between block level elements */
36 #define INTER_BLOCK(ob) \
37 do { if( blob_size(ob)>0 ) blob_append(ob, "\n", 1); } while (0)
38
39 /* BLOB_APPEND_LITERAL -- append a string literal to a blob */
40 #define BLOB_APPEND_LITERAL(blob, literal) \
41 blob_append((blob), "" literal, (sizeof literal)-1)
42 /*
43 * The empty string in the second argument leads to a syntax error
44 * when the macro is not used with a string literal. Unfortunately
45 * the error is not overly explicit.
46 */
47
48 /* BLOB_APPEND_BLOB -- append blob contents to another */
49 #define BLOB_APPEND_BLOB(dest, src) \
@@ -65,17 +65,17 @@
65 i++;
66 }
67 blob_append(ob, data+beg, i-beg);
68 while( i<size ){
69 if( data[i]=='<' ){
70 BLOB_APPEND_LITERAL(ob, "&lt;");
71 }else if( data[i]=='>' ){
72 BLOB_APPEND_LITERAL(ob, "&gt;");
73 }else if( data[i]=='&' ){
74 BLOB_APPEND_LITERAL(ob, "&amp;");
75 }else if( data[i]=='"' ){
76 BLOB_APPEND_LITERAL(ob, "&quot;");
77 }else{
78 break;
79 }
80 i++;
81 }
@@ -88,41 +88,41 @@
88 /* Size of the prolog: "<div class='markdown'>\n" */
89 #define PROLOG_SIZE 23
90
91 static void html_prolog(struct Blob *ob, void *opaque){
92 INTER_BLOCK(ob);
93 BLOB_APPEND_LITERAL(ob, "<div class=\"markdown\">\n");
94 assert( blob_size(ob)==PROLOG_SIZE );
95 }
96
97 static void html_epilog(struct Blob *ob, void *opaque){
98 INTER_BLOCK(ob);
99 BLOB_APPEND_LITERAL(ob, "</div>\n");
100 }
101
102 static void html_raw_block(struct Blob *ob, struct Blob *text, void *opaque){
103 char *data = blob_buffer(text);
104 size_t first = 0, size = blob_size(text);
105 INTER_BLOCK(ob);
106 while( first<size && data[first]=='\n' ) first++;
107 while( size>first && data[size-1]=='\n' ) size--;
108 blob_append(ob, data+first, size-first);
109 BLOB_APPEND_LITERAL(ob, "\n");
110 }
111
112 static void html_blockcode(struct Blob *ob, struct Blob *text, void *opaque){
113 INTER_BLOCK(ob);
114 BLOB_APPEND_LITERAL(ob, "<pre><code>");
115 html_escape(ob, blob_buffer(text), blob_size(text));
116 BLOB_APPEND_LITERAL(ob, "</code></pre>\n");
117 }
118
119 static void html_blockquote(struct Blob *ob, struct Blob *text, void *opaque){
120 INTER_BLOCK(ob);
121 BLOB_APPEND_LITERAL(ob, "<blockquote>\n");
122 BLOB_APPEND_BLOB(ob, text);
123 BLOB_APPEND_LITERAL(ob, "</blockquote>\n");
124 }
125
126 static void html_header(
127 struct Blob *ob,
128 struct Blob *text,
@@ -141,11 +141,11 @@
141 blob_appendf(ob, "</h%d>", level);
142 }
143
144 static void html_hrule(struct Blob *ob, void *opaque){
145 INTER_BLOCK(ob);
146 BLOB_APPEND_LITERAL(ob, "<hr />\n");
147 }
148
149
150 static void html_list(
151 struct Blob *ob,
@@ -169,20 +169,20 @@
169 void *opaque
170 ){
171 char *text_data = blob_buffer(text);
172 size_t text_size = blob_size(text);
173 while( text_size>0 && text_data[text_size-1]=='\n' ) text_size--;
174 BLOB_APPEND_LITERAL(ob, "<li>");
175 blob_append(ob, text_data, text_size);
176 BLOB_APPEND_LITERAL(ob, "</li>\n");
177 }
178
179 static void html_paragraph(struct Blob *ob, struct Blob *text, void *opaque){
180 INTER_BLOCK(ob);
181 BLOB_APPEND_LITERAL(ob, "<p>");
182 BLOB_APPEND_BLOB(ob, text);
183 BLOB_APPEND_LITERAL(ob, "</p>\n");
184 }
185
186
187 static void html_table(
188 struct Blob *ob,
@@ -189,68 +189,68 @@
189 struct Blob *head_row,
190 struct Blob *rows,
191 void *opaque
192 ){
193 INTER_BLOCK(ob);
194 BLOB_APPEND_LITERAL(ob, "<table>\n");
195 if( head_row && blob_size(head_row)>0 ){
196 BLOB_APPEND_LITERAL(ob, "<thead>\n");
197 BLOB_APPEND_BLOB(ob, head_row);
198 BLOB_APPEND_LITERAL(ob, "</thead>\n<tbody>\n");
199 }
200 if( rows ){
201 BLOB_APPEND_BLOB(ob, rows);
202 }
203 if( head_row && blob_size(head_row)>0 ){
204 BLOB_APPEND_LITERAL(ob, "</tbody>\n");
205 }
206 BLOB_APPEND_LITERAL(ob, "</table>\n");
207 }
208
209 static void html_table_cell(
210 struct Blob *ob,
211 struct Blob *text,
212 int flags,
213 void *opaque
214 ){
215 if( flags & MKD_CELL_HEAD ){
216 BLOB_APPEND_LITERAL(ob, " <th");
217 }else{
218 BLOB_APPEND_LITERAL(ob, " <td");
219 }
220 switch( flags & MKD_CELL_ALIGN_MASK ){
221 case MKD_CELL_ALIGN_LEFT: {
222 BLOB_APPEND_LITERAL(ob, " align=\"left\"");
223 break;
224 }
225 case MKD_CELL_ALIGN_RIGHT: {
226 BLOB_APPEND_LITERAL(ob, " align=\"right\"");
227 break;
228 }
229 case MKD_CELL_ALIGN_CENTER: {
230 BLOB_APPEND_LITERAL(ob, " align=\"center\"");
231 break;
232 }
233 }
234 BLOB_APPEND_LITERAL(ob, ">");
235 BLOB_APPEND_BLOB(ob, text);
236 if( flags & MKD_CELL_HEAD ){
237 BLOB_APPEND_LITERAL(ob, "</th>\n");
238 }else{
239 BLOB_APPEND_LITERAL(ob, "</td>\n");
240 }
241 }
242
243 static void html_table_row(
244 struct Blob *ob,
245 struct Blob *cells,
246 int flags,
247 void *opaque
248 ){
249 BLOB_APPEND_LITERAL(ob, " <tr>\n");
250 BLOB_APPEND_BLOB(ob, cells);
251 BLOB_APPEND_LITERAL(ob, " </tr>\n");
252 }
253
254
255
256 /* HTML span tags */
@@ -265,52 +265,52 @@
265 struct Blob *link,
266 enum mkd_autolink type,
267 void *opaque
268 ){
269 if( !link || blob_size(link)<=0 ) return 0;
270 BLOB_APPEND_LITERAL(ob, "<a href=\"");
271 if( type==MKDA_IMPLICIT_EMAIL ) BLOB_APPEND_LITERAL(ob, "mailto:");
272 html_escape(ob, blob_buffer(link), blob_size(link));
273 BLOB_APPEND_LITERAL(ob, "\">");
274 if( type==MKDA_EXPLICIT_EMAIL && blob_size(link)>7 ){
275 /* remove "mailto:" from displayed text */
276 html_escape(ob, blob_buffer(link)+7, blob_size(link)-7);
277 }else{
278 html_escape(ob, blob_buffer(link), blob_size(link));
279 }
280 BLOB_APPEND_LITERAL(ob, "</a>");
281 return 1;
282 }
283
284 static int html_code_span(struct Blob *ob, struct Blob *text, void *opaque){
285 BLOB_APPEND_LITERAL(ob, "<code>");
286 html_escape(ob, blob_buffer(text), blob_size(text));
287 BLOB_APPEND_LITERAL(ob, "</code>");
288 return 1;
289 }
290
291 static int html_double_emphasis(
292 struct Blob *ob,
293 struct Blob *text,
294 char c,
295 void *opaque
296 ){
297 BLOB_APPEND_LITERAL(ob, "<strong>");
298 BLOB_APPEND_BLOB(ob, text);
299 BLOB_APPEND_LITERAL(ob, "</strong>");
300 return 1;
301 }
302
303 static int html_emphasis(
304 struct Blob *ob,
305 struct Blob *text,
306 char c,
307 void *opaque
308 ){
309 BLOB_APPEND_LITERAL(ob, "<em>");
310 BLOB_APPEND_BLOB(ob, text);
311 BLOB_APPEND_LITERAL(ob, "</em>");
312 return 1;
313 }
314
315 static int html_image(
316 struct Blob *ob,
@@ -317,24 +317,24 @@
317 struct Blob *link,
318 struct Blob *title,
319 struct Blob *alt,
320 void *opaque
321 ){
322 BLOB_APPEND_LITERAL(ob, "<img src=\"");
323 html_escape(ob, blob_buffer(link), blob_size(link));
324 BLOB_APPEND_LITERAL(ob, "\" alt=\"");
325 html_escape(ob, blob_buffer(alt), blob_size(alt));
326 if( title && blob_size(title)>0 ){
327 BLOB_APPEND_LITERAL(ob, "\" title=\"");
328 html_escape(ob, blob_buffer(title), blob_size(title));
329 }
330 BLOB_APPEND_LITERAL(ob, "\" />");
331 return 1;
332 }
333
334 static int html_line_break(struct Blob *ob, void *opaque){
335 BLOB_APPEND_LITERAL(ob, "<br />\n");
336 return 1;
337 }
338
339 static int html_link(
340 struct Blob *ob,
@@ -341,31 +341,31 @@
341 struct Blob *link,
342 struct Blob *title,
343 struct Blob *content,
344 void *opaque
345 ){
346 BLOB_APPEND_LITERAL(ob, "<a href=\"");
347 html_escape(ob, blob_buffer(link), blob_size(link));
348 if( title && blob_size(title)>0 ){
349 BLOB_APPEND_LITERAL(ob, "\" title=\"");
350 html_escape(ob, blob_buffer(title), blob_size(title));
351 }
352 BLOB_APPEND_LITERAL(ob, "\">");
353 BLOB_APPEND_BLOB(ob, content);
354 BLOB_APPEND_LITERAL(ob, "</a>");
355 return 1;
356 }
357
358 static int html_triple_emphasis(
359 struct Blob *ob,
360 struct Blob *text,
361 char c,
362 void *opaque
363 ){
364 BLOB_APPEND_LITERAL(ob, "<strong><em>");
365 BLOB_APPEND_BLOB(ob, text);
366 BLOB_APPEND_LITERAL(ob, "</em></strong>");
367 return 1;
368 }
369
370
371 static void html_normal_text(struct Blob *ob, struct Blob *text, void *opaque){
372

Keyboard Shortcuts

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