]> git.cameronkatri.com Git - mandoc.git/blobdiff - html.h
Added mail archive periodically generated by hypermail.
[mandoc.git] / html.h
diff --git a/html.h b/html.h
index f437cced277c8dc572ca718e75ca161eed4d030e..b2f9e8c3560115562975d4859ffa88dd01c02e22 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.27 2010/07/23 00:08:57 kristaps Exp $ */
 /*
 /*
- * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
+ * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
  *
  * Permission to use, copy, modify, and distribute this software for any
  *
  * 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
 
  */
 #ifndef HTML_H
 #define HTML_H
 
-#include "ml.h"
-
-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,
+__BEGIN_DECLS
+
+enum   htmltag {
+       TAG_HTML,
+       TAG_HEAD,
+       TAG_BODY,
+       TAG_META,
+       TAG_TITLE,
+       TAG_DIV,
+       TAG_H1,
+       TAG_H2,
+       TAG_SPAN,
+       TAG_LINK,
+       TAG_BR,
+       TAG_A,
+       TAG_TABLE,
+       TAG_COL,
+       TAG_TR,
+       TAG_TD,
+       TAG_LI,
+       TAG_UL,
+       TAG_OL,
+       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_TARGET,
+       ATTR_ID,
+       ATTR_SUMMARY,
+       ATTR_MAX
 };
 
 };
 
-enum   html_type {
-       HTML_TYPE_4_01_STRICT = 0
+enum   htmlfont {
+       HTMLFONT_NONE = 0,
+       HTMLFONT_BOLD,
+       HTMLFONT_ITALIC,
+       HTMLFONT_MAX
 };
 
 };
 
-struct html_pair {
-       enum html_attr   attr;
-       char            *val;
+struct tag {
+       struct tag       *next;
+       enum htmltag      tag;
 };
 
 };
 
-__BEGIN_DECLS
+struct ord {
+       struct ord       *next;
+       const void       *cookie;
+       int               pos;
+};
+
+struct tagq {
+       struct tag       *head;
+};
+struct ordq {
+       struct ord       *head;
+};
+
+struct htmlpair {
+       enum htmlattr     key;
+       const char       *val;
+};
+
+#define        PAIR_INIT(p, t, v) \
+       do { \
+               (p)->key = (t); \
+               (p)->val = (v); \
+       } while (/* CONSTCOND */ 0)
+
+#define        PAIR_ID_INIT(p, v)      PAIR_INIT(p, ATTR_ID, v)
+#define        PAIR_CLASS_INIT(p, v)   PAIR_INIT(p, ATTR_CLASS, v)
+#define        PAIR_HREF_INIT(p, v)    PAIR_INIT(p, ATTR_HREF, v)
+#define        PAIR_STYLE_INIT(p, h)   PAIR_INIT(p, ATTR_STYLE, (h)->buf)
+#define        PAIR_SUMMARY_INIT(p, v) PAIR_INIT(p, ATTR_SUMMARY, v)
+
+enum   htmltype {
+       HTML_HTML_4_01_STRICT,
+       HTML_XHTML_1_0_STRICT
+};
+
+struct html {
+       int               flags;
+#define        HTML_NOSPACE     (1 << 0)
+#define        HTML_IGNDELIM    (1 << 1)
+#define        HTML_KEEP        (1 << 2)
+#define        HTML_PREKEEP     (1 << 3)
+#define        HTML_NONOSPACE   (1 << 4)
+       struct tagq       tags;
+       struct ordq       ords;
+       void             *symtab;
+       char             *base;
+       char             *base_man;
+       char             *base_includes;
+       char             *style;
+       char              buf[BUFSIZ];
+       size_t            buflen;
+       struct tag       *metaf;
+       enum htmlfont     metal;
+       enum htmlfont     metac;
+       enum htmltype     type;
+};
+
+struct roffsu;
+
+void             print_gen_decls(struct html *);
+void             print_gen_head(struct html *);
+struct tag      *print_ofont(struct html *, enum htmlfont);
+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 *);
+
+void             bufcat_su(struct html *, const char *, 
+                       const struct roffsu *);
+void             buffmt_man(struct html *, 
+                       const char *, const char *);
+void             buffmt_includes(struct html *, const char *);
+void             buffmt(struct html *, const char *, ...);
+void             bufcat(struct html *, const char *);
+void             bufcat_style(struct html *, 
+                       const char *, const char *);
+void             bufncat(struct html *, const char *, size_t);
+void             bufinit(struct html *);
 
 
-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             html_idcat(char *, const char *, int);
 
 __END_DECLS
 
 
 __END_DECLS