123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /* block-level tags for passing html blocks through the blender
- */
- #include <stdio.h>
- #define __WITHOUT_AMALLOC 1
- #include "config.h"
- #include "cstring.h"
- #include "tags.h"
- STRING(struct kw) blocktags;
- /* define a html block tag
- */
- static void
- define_one_tag(char *id, int selfclose)
- {
- struct kw *p = &EXPAND(blocktags);
- p->id = id;
- p->size = strlen(id);
- p->selfclose = selfclose;
- }
- /* case insensitive string sort (for qsort() and bsearch() of block tags)
- */
- static int
- casort(struct kw *a, struct kw *b)
- {
- if ( a->size != b->size )
- return a->size - b->size;
- return strncasecmp(a->id, b->id, b->size);
- }
- /* stupid cast to make gcc shut up about the function types being
- * passed into qsort() and bsearch()
- */
- typedef int (*stfu)(const void*,const void*);
- /* load in the standard collection of html tags that markdown supports
- */
- int
- main()
- {
- int i;
- #define KW(x) define_one_tag(x, 0)
- #define SC(x) define_one_tag(x, 1)
- KW("STYLE");
- KW("SCRIPT");
- KW("ADDRESS");
- KW("BDO");
- KW("BLOCKQUOTE");
- KW("CENTER");
- KW("DFN");
- KW("DIV");
- KW("OBJECT");
- KW("H1");
- KW("H2");
- KW("H3");
- KW("H4");
- KW("H5");
- KW("H6");
- KW("LISTING");
- KW("NOBR");
- KW("FORM");
- KW("UL");
- KW("P");
- KW("OL");
- KW("DL");
- KW("PLAINTEXT");
- KW("PRE");
- KW("TABLE");
- KW("WBR");
- KW("XMP");
- SC("HR");
- KW("IFRAME");
- KW("MAP");
- qsort(T(blocktags), S(blocktags), sizeof(struct kw), (stfu)casort);
- printf("static struct kw blocktags[] = {\n");
- for (i=0; i < S(blocktags); i++)
- printf(" { \"%s\", %d, %d },\n", T(blocktags)[i].id, T(blocktags)[i].size, T(blocktags)[i].selfclose );
- printf("};\n\n");
- printf("#define NR_blocktags %d\n", S(blocktags));
- exit(0);
- }
|