]> git.cameronkatri.com Git - mandoc.git/blobdiff - html.h
Accent marks sync'd with current groff.
[mandoc.git] / html.h
diff --git a/html.h b/html.h
index f437cced277c8dc572ca718e75ca161eed4d030e..92dc55241d5664af760aaffbac8000763e450836 100644 (file)
--- a/html.h
+++ b/html.h
-/* $Id: html.h,v 1.1 2008/12/10 00:52:46 kristaps Exp $ */
+/*     $Id: html.h,v 1.6 2009/09/21 14:56:56 kristaps Exp $ */
 /*
- * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
+ * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
  * 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,
+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);
+
+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;
+};
 
-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 *);
+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