=================================================================== RCS file: /cvs/mandoc/html.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- mandoc/html.h 2008/12/15 01:54:58 1.5 +++ mandoc/html.h 2009/09/21 14:56:56 1.6 @@ -1,85 +1,101 @@ -/* $Id: html.h,v 1.5 2008/12/15 01:54:58 kristaps dead $ */ +/* $Id: html.h,v 1.6 2009/09/21 14:56:56 kristaps Exp $ */ /* - * Copyright (c) 2008 Kristaps Dzonsons + * Copyright (c) 2008, 2009 Kristaps Dzonsons * * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef HTML_H #define HTML_H -#include "ml.h" +__BEGIN_DECLS -enum html_tag { - HTML_TAG_SPAN = 0, - HTML_TAG_HTML = 1, - HTML_TAG_HEAD = 2, - HTML_TAG_META = 3, - HTML_TAG_TITLE = 4, - HTML_TAG_STYLE = 5, - HTML_TAG_LINK = 6, - HTML_TAG_BODY = 7, - HTML_TAG_DIV = 8, - HTML_TAG_TABLE = 9, - HTML_TAG_TD = 10, - HTML_TAG_TR = 11, - HTML_TAG_OL = 12, - HTML_TAG_UL = 13, - HTML_TAG_LI = 14, - HTML_TAG_H1 = 15, - HTML_TAG_H2 = 16, - HTML_TAG_A = 17 +enum htmltag { + TAG_HTML, + TAG_HEAD, + TAG_BODY, + TAG_META, + TAG_TITLE, + TAG_DIV, + TAG_H1, + TAG_H2, + TAG_P, + TAG_SPAN, + TAG_LINK, + TAG_BR, + TAG_A, + TAG_TABLE, + TAG_COL, + TAG_TR, + TAG_TD, + TAG_LI, + TAG_UL, + TAG_OL, + TAG_BASE, + TAG_MAX }; -enum html_attr { - HTML_ATTR_CLASS = 0, - HTML_ATTR_HTTP_EQUIV = 1, - HTML_ATTR_CONTENT = 2, - HTML_ATTR_NAME = 3, - HTML_ATTR_TYPE = 4, - HTML_ATTR_REL = 5, - HTML_ATTR_HREF = 6, - HTML_ATTR_WIDTH = 7, - HTML_ATTR_ALIGN = 8, - HTML_ATTR_VALIGN = 9, - HTML_ATTR_NOWRAP = 10 +enum htmlattr { + ATTR_HTTPEQUIV, + ATTR_CONTENT, + ATTR_NAME, + ATTR_REL, + ATTR_HREF, + ATTR_TYPE, + ATTR_MEDIA, + ATTR_CLASS, + ATTR_STYLE, + ATTR_WIDTH, + ATTR_VALIGN, + ATTR_MAX }; -enum html_type { - HTML_TYPE_4_01_STRICT = 0 +struct tag { + enum htmltag tag; + SLIST_ENTRY(tag) entry; }; -struct html_pair { - enum html_attr attr; - char *val; +struct ord { + int pos; + const void *cookie; + SLIST_ENTRY(ord) entry; }; -__BEGIN_DECLS +SLIST_HEAD(tagq, tag); +SLIST_HEAD(ordq, ord); -int html_typeput(struct md_mbuf *, - enum html_type, size_t *); -int html_commentput(struct md_mbuf *, - enum ml_scope, size_t *); -int html_tput(struct md_mbuf *, - enum ml_scope, enum html_tag, size_t *); -int html_aput(struct md_mbuf *, enum ml_scope, - enum html_tag, size_t *, - int, const struct html_pair *); -int html_stput(struct md_mbuf *, - enum html_tag, size_t *); -int html_saput(struct md_mbuf *, enum html_tag, - size_t *, int, const struct html_pair *); +struct htmlpair { + enum htmlattr key; + char *val; +}; + +struct html { + int flags; +#define HTML_NOSPACE (1 << 0) +#define HTML_NEWLINE (1 << 1) + struct tagq tags; + struct ordq ords; + void *symtab; + char *base; + char *style; +}; + +void print_gen_doctype(struct html *); +void print_gen_head(struct html *); +struct tag *print_otag(struct html *, enum htmltag, + int, const struct htmlpair *); +void print_tagq(struct html *, const struct tag *); +void print_stagq(struct html *, const struct tag *); +void print_text(struct html *, const char *); __END_DECLS