Skip to content
Snippets Groups Projects
Commit 08dc6d5f authored by Jonathan Schöbel's avatar Jonathan Schöbel
Browse files

to_html for Fragment

A Fragment can output it's html. If there is an error the method aborts
and returns NULL.
parent 12400d8f
Branches
Tags
No related merge requests found
......@@ -28,7 +28,7 @@ long_line_behaviour=1
long_line_column=72
[files]
current_page=22
current_page=7
FILE_NAME_0=607;Sh;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fconfigure.ac;0;8
FILE_NAME_1=395;Make;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2FMakefile.am;0;8
FILE_NAME_2=847;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fmain.c;0;8
......@@ -36,8 +36,8 @@ FILE_NAME_3=1067;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fpr
FILE_NAME_4=1148;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fcms.h;0;8
FILE_NAME_5=3598;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fdata.c;0;8
FILE_NAME_6=1099;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fdata.h;0;8
FILE_NAME_7=2130;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Ffragment.c;0;8
FILE_NAME_8=876;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Ffragment.h;0;8
FILE_NAME_7=2599;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Ffragment.c;0;8
FILE_NAME_8=1452;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Ffragment.h;0;8
FILE_NAME_9=2416;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Ftext.c;0;8
FILE_NAME_10=896;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Ftext.h;0;8
FILE_NAME_11=3294;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fvalidator.c;0;8
......@@ -46,10 +46,10 @@ FILE_NAME_13=994;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fpr
FILE_NAME_14=881;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flog.h;0;4
FILE_NAME_15=869;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fmacro.h;0;8
FILE_NAME_16=847;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fsefht.h;0;8
FILE_NAME_17=1025;Make;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2FMakefile.am;0;8
FILE_NAME_17=1043;Make;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2FMakefile.am;0;8
FILE_NAME_18=1113;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_cms.c;0;8
FILE_NAME_19=3059;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_data.c;0;8
FILE_NAME_20=2736;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_fragment.c;0;8
FILE_NAME_20=3508;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_fragment.c;0;8
FILE_NAME_21=1860;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_text.c;0;8
FILE_NAME_22=6057;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_validator.c;0;8
FILE_NAME_23=55;None;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftodo.txt;0;8
......
......@@ -31,6 +31,7 @@
#include "log.h"
#include "data.h"
#include "text.h"
#include "validator.h"
#include "fragment.h"
......@@ -131,3 +132,60 @@ SH_Fragment_get_tag (struct SH_Fragment * fragment,
return tag;
}
struct SH_Text *
SH_Fragment_to_html (struct SH_Fragment * fragment,
struct SH_Error * error)
{
struct SH_Text * html;
html = SH_Text_new (error);
if (error != NULL && error->type != SUCCESS)
{
return NULL;
}
if (!SH_Text_append_string (html, OPEN_TAG_BEGIN, error))
{
SH_Text_free (html, NULL);
return NULL;
}
if (!SH_Text_append_string (html, fragment->tag, error))
{
SH_Text_free (html, NULL);
return NULL;
}
if (!SH_Text_append_string (html, OPEN_TAG_END, error))
{
SH_Text_free (html, NULL);
return NULL;
}
if (!SH_Text_append_string (html, CLOSE_TAG_BEGIN, error))
{
SH_Text_free (html, NULL);
return NULL;
}
if (!SH_Text_append_string (html, fragment->tag, error))
{
SH_Text_free (html, NULL);
return NULL;
}
if (!SH_Text_append_string (html, CLOSE_TAG_END, error))
{
SH_Text_free (html, NULL);
return NULL;
}
if (error != NULL)
{
error->type = SUCCESS;
}
return html;
}
......@@ -26,6 +26,7 @@
#define _FRAGMENT_H
#include "data.h"
#include "text.h"
struct SH_Fragment
......@@ -34,6 +35,11 @@ struct SH_Fragment
char * tag;
};
#define OPEN_TAG_BEGIN "<"
#define OPEN_TAG_END ">"
#define CLOSE_TAG_BEGIN "</"
#define CLOSE_TAG_END ">"
struct SH_Fragment * SH_Fragment_new (const char * tag,
struct SH_Data * data,
struct SH_Error * error);
......@@ -43,4 +49,7 @@ void SH_Fragment_free (struct SH_Fragment * fragment,
char * SH_Fragment_get_tag (struct SH_Fragment * fragment,
struct SH_Error * error);
struct SH_Text * SH_Fragment_to_html (struct SH_Fragment * fragment,
struct SH_Error * error);
#endif /* _FRAGMENT_H */
......@@ -33,6 +33,7 @@ sefht_fragment_test_SOURCES = test_fragment.c
sefht_fragment_test_LDADD =
sefht_fragment_test_LDADD += $(top_builddir)/src/fragment.o
sefht_fragment_test_LDADD += $(top_builddir)/src/data.o
sefht_fragment_test_LDADD += $(top_builddir)/src/text.o
sefht_fragment_test_LDADD += $(top_builddir)/src/validator.o
sefht_fragment_test_LDADD += $(LDADD)
......
......@@ -110,6 +110,37 @@ START_TEST(test_fragment_tag)
}
END_TEST
START_TEST(test_fragment_html)
{
struct SH_Error error;
struct SH_Fragment * fragment;
struct SH_Data * data;
struct SH_Text * text;
data = SH_Data_new (NULL);
SH_Validator_register_tag (data->validator, "html", NULL);
/* no error */
fragment = SH_Fragment_new ("html", data, NULL);
text = SH_Fragment_to_html (fragment, NULL);
ck_assert_str_eq (text->text, "<html></html>");
SH_Fragment_free (fragment, NULL);
/* error */
fragment = SH_Fragment_new ("html", data, NULL);
error.type = UNDEFINED;
text = SH_Fragment_to_html (fragment, &error);
ck_assert_str_eq (text->text, "<html></html>");
ck_assert_int_eq (error.type, SUCCESS);
SH_Fragment_free (fragment, NULL);
SH_Data_free (data, NULL);
}
END_TEST
Suite * fragment_suite (void)
{
Suite *s;
......@@ -122,6 +153,7 @@ Suite * fragment_suite (void)
tcase_add_test (tc_core, test_fragment);
tcase_add_test (tc_core, test_fragment_tag);
tcase_add_test (tc_core, test_fragment_html);
suite_add_tcase (s, tc_core);
return s;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment