/* * main.c * * Copyright 2022 Jonathan Schöbel <jonathan@Ubermos-2019> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * * */ #include <stdio.h> #include <stdlib.h> #include <sefht/sefht.h> static inline void test_html_generation () { SH_Data * data; SH_Fragment * root; SH_Fragment * child1; SH_Fragment * child2; SH_Fragment * child3; SH_Text * text; data = SH_Data_new (NULL); root = SH_NodeFragment_new ("html", data, NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)root, "lang", "de", NULL); child1 = SH_NodeFragment_new ("head", data, NULL); SH_NodeFragment_append_child ((struct SH_NodeFragment *) root, child1, NULL); child2 = SH_NodeFragment_new ("meta", data, NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "charset", "utf-8", NULL); SH_NodeFragment_append_child ((struct SH_NodeFragment *) child1, child2, NULL); child2 = SH_NodeFragment_new ("title", data, NULL); SH_NodeFragment_append_child ((struct SH_NodeFragment *) child1, child2, NULL); child2 = SH_NodeFragment_new ("link", data, NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "rel", "stylesheet", NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "type", "text/css", NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "href", "/global.css", NULL); SH_NodeFragment_append_child ((struct SH_NodeFragment *) child1, child2, NULL); child2 = SH_NodeFragment_new ("link", data, NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "rel", "stylesheet", NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "type", "text/css", NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "href", "index.css", NULL); SH_NodeFragment_append_child ((struct SH_NodeFragment *) child1, child2, NULL); child2 = SH_NodeFragment_new ("meta", data, NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "name", "author", NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "content", "Jonathan Schöbel", NULL); SH_NodeFragment_append_child ((struct SH_NodeFragment *) child1, child2, NULL); child2 = SH_NodeFragment_new ("meta", data, NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "name", "date", NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "content", "2020-05-16T01:15:49+0200", NULL); SH_NodeFragment_append_child ((struct SH_NodeFragment *) child1, child2, NULL); child2 = SH_NodeFragment_new ("meta", data, NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "name", "description", NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "content", "Homepage of www2.xn--schbel-yxa.info", NULL); SH_NodeFragment_append_child ((struct SH_NodeFragment *) child1, child2, NULL); child2 = SH_NodeFragment_new ("meta", data, NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "name", "keywords", NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "content", "", NULL); SH_NodeFragment_append_child ((struct SH_NodeFragment *) child1, child2, NULL); child2 = SH_NodeFragment_new ("meta", data, NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "name", "copyright", NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "content", "Jonathan Schöbel 2020", NULL); SH_NodeFragment_append_child ((struct SH_NodeFragment *) child1, child2, NULL); child2 = SH_NodeFragment_new ("meta", data, NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "name", "generator", NULL); SH_NodeFragment_append_attr_new ((struct SH_NodeFragment *)child2, "content", "Bluefish 2.2.7", NULL); SH_NodeFragment_append_child ((struct SH_NodeFragment *) child1, child2, NULL); child1 = SH_NodeFragment_new ("body", data, NULL); SH_NodeFragment_append_child ((struct SH_NodeFragment *) root, child1, NULL); child2 = SH_NodeFragment_new ("header", data, NULL); SH_NodeFragment_append_child ((struct SH_NodeFragment *) child1, child2, NULL); child3 = SH_NodeFragment_new ("h1", data, NULL); SH_NodeFragment_append_child ((struct SH_NodeFragment *) child2, child3, NULL); child3 = SH_NodeFragment_new ("nav", data, NULL); SH_NodeFragment_append_child ((struct SH_NodeFragment *) child2, child3, NULL); child2 = SH_NodeFragment_new ("main", data, NULL); SH_NodeFragment_append_child ((struct SH_NodeFragment *) child1, child2, NULL); child2 = SH_NodeFragment_new ("footer", data, NULL); SH_NodeFragment_append_child ((struct SH_NodeFragment *) child1, child2, NULL); text = SH_Fragment_to_html (root, WRAP, 0, 1, INDENT_TEXT, NULL); SH_Text_print (text); printf ("\n"); SH_Text_free (text); text = SH_Fragment_to_html (root, INLINE, 0, 1, INDENT_TEXT, NULL); SH_Text_print (text); printf ("\n"); SH_Text_free (text); SH_Fragment_free (root); SH_Data_free (data); return; } int main(int argc, char **argv) { page_t page; /* startup */ SH_Cms * cms = SH_Cms_new (NULL); /* startup */ page = SH_Cms_register_page (cms, "Startpage", NULL); /* shutdown */ SH_Cms_free (cms); /* shutdown */ (void) argc; (void) argv; (void) page; test_html_generation (); return 0; }