-/* $Id: html.h,v 1.3 2008/12/10 12:09:47 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,
- HTML_ATTR_ALIGN = 8
+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