From: Bruno Haible Date: Tue, 12 Dec 2006 14:20:38 +0000 (+0000) Subject: New module 'html-styled-ostream'. X-Git-Tag: v0.17~599 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c8e124acf250a5c4651ba27a0c8182d015039449;p=thirdparty%2Fgettext.git New module 'html-styled-ostream'. --- diff --git a/gnulib-local/ChangeLog b/gnulib-local/ChangeLog index 0d4dda556..cc9ad2e4a 100644 --- a/gnulib-local/ChangeLog +++ b/gnulib-local/ChangeLog @@ -1,3 +1,10 @@ +2006-12-01 Bruno Haible + + * modules/html-styled-ostream: New file. + * lib/html-styled-ostream.oo.c: New file. + * lib/html-styled-ostream.oo.h: New file. + * Makefile.am (EXTRA_DIST): Add the new files. + 2006-12-01 Bruno Haible * modules/styled-ostream: New file. diff --git a/gnulib-local/Makefile.am b/gnulib-local/Makefile.am index 8a801d0fe..2395a1e60 100644 --- a/gnulib-local/Makefile.am +++ b/gnulib-local/Makefile.am @@ -68,6 +68,8 @@ lib/hash.c \ lib/hash.h \ lib/html-ostream.oo.c \ lib/html-ostream.oo.h \ +lib/html-styled-ostream.oo.c \ +lib/html-styled-ostream.oo.h \ lib/iconv-ostream.oo.c \ lib/iconv-ostream.oo.h \ lib/javacomp.c.diff \ @@ -283,6 +285,7 @@ modules/gettext-tools-misc \ modules/gettext-tools-libgettextpo-misc \ modules/hash \ modules/html-ostream \ +modules/html-styled-ostream \ modules/iconv-ostream \ modules/java \ modules/javacomp.diff \ diff --git a/gnulib-local/lib/html-styled-ostream.oo.c b/gnulib-local/lib/html-styled-ostream.oo.c new file mode 100644 index 000000000..3a322876f --- /dev/null +++ b/gnulib-local/lib/html-styled-ostream.oo.c @@ -0,0 +1,159 @@ +/* Output stream for CSS styled text, producing HTML output. + Copyright (C) 2006 Free Software Foundation, Inc. + Written by Bruno Haible , 2006. + + 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, 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 + +/* Specification. */ +#include "html-styled-ostream.h" + +#include +#include +#include + +#include "html-ostream.h" + +#include "binary-io.h" +#ifndef O_TEXT +# define O_TEXT 0 +#endif + +#include "error.h" +#include "safe-read.h" +#include "exit.h" +#include "xalloc.h" +#include "gettext.h" + +#define _(str) gettext (str) + + +struct html_styled_ostream : struct styled_ostream +{ +fields: + /* The destination stream. */ + ostream_t destination; + /* A HTML aware wrapper around the destination stream. */ + html_ostream_t html_destination; +}; + +/* Implementation of ostream_t methods. */ + +static void +html_styled_ostream::write_mem (html_styled_ostream_t stream, + const void *data, size_t len) +{ + html_ostream_write_mem (stream->html_destination, data, len); +} + +static void +html_styled_ostream::flush (html_styled_ostream_t stream) +{ + html_ostream_flush (stream->html_destination); +} + +static void +html_styled_ostream::free (html_styled_ostream_t stream) +{ + html_ostream_free (stream->html_destination); + ostream_write_str (stream->destination, "\n"); + ostream_write_str (stream->destination, "\n"); +} + +/* Implementation of styled_ostream_t methods. */ + +static void +html_styled_ostream::begin_use_class (html_styled_ostream_t stream, + const char *classname) +{ + html_ostream_begin_span (stream->html_destination, classname); +} + +static void +html_styled_ostream::end_use_class (html_styled_ostream_t stream, + const char *classname) +{ + html_ostream_end_span (stream->html_destination, classname); +} + +/* Constructor. */ + +html_styled_ostream_t +html_styled_ostream_create (ostream_t destination, const char *css_filename) +{ + html_styled_ostream_t stream = + XMALLOC (struct html_styled_ostream_representation); + + stream->base.base.vtable = &html_styled_ostream_vtable; + stream->destination = destination; + stream->html_destination = html_ostream_create (destination); + + ostream_write_str (stream->destination, "\n"); + /* HTML 4.01 or XHTML 1.0? + Use HTML 4.01. This is conservative. Before switching to XHTML 1.0, + verify that in the output + - all HTML element names are in lowercase, + - all empty elements are denoted like
or

, + - every attribute specification is in assignment form, like + , + - every element also has an 'id' attribute, + - special characters like < > & " are escaped in the \n"); + } + ostream_write_str (stream->destination, "\n"); + ostream_write_str (stream->destination, "\n"); + + return stream; +} diff --git a/gnulib-local/lib/html-styled-ostream.oo.h b/gnulib-local/lib/html-styled-ostream.oo.h new file mode 100644 index 000000000..241ae6ed2 --- /dev/null +++ b/gnulib-local/lib/html-styled-ostream.oo.h @@ -0,0 +1,49 @@ +/* Output stream for CSS styled text, producing HTML output. + Copyright (C) 2006 Free Software Foundation, Inc. + Written by Bruno Haible , 2006. + + 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, 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. */ + +#ifndef _HTML_STYLED_OSTREAM_H +#define _HTML_STYLED_OSTREAM_H + +#include "styled-ostream.h" + + +struct html_styled_ostream : struct styled_ostream +{ +methods: +}; + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Create an output stream that takes input in the UTF-8 encoding and + writes it in HTML form on DESTINATION, styled with the file CSS_FILENAME. + Note that the resulting stream must be closed before DESTINATION can be + closed. */ +extern html_styled_ostream_t + html_styled_ostream_create (ostream_t destination, + const char *css_filename); + + +#ifdef __cplusplus +} +#endif + +#endif /* _HTML_STYLED_OSTREAM_H */ diff --git a/gnulib-local/modules/html-styled-ostream b/gnulib-local/modules/html-styled-ostream new file mode 100644 index 000000000..9ac89ba3a --- /dev/null +++ b/gnulib-local/modules/html-styled-ostream @@ -0,0 +1,36 @@ +Description: +Output stream for CSS styled text, producing HTML output. + +Files: +lib/html-styled-ostream.oo.h +lib/html-styled-ostream.oo.c + +Depends-on: +styled-ostream +unistd +html-ostream +binary-io +error +safe-read +exit +xalloc +gettext-h + +configure.ac: + +Makefile.am: +lib_SOURCES += html-styled-ostream.c +html-styled-ostream.h html-styled-ostream.c : $(top_srcdir)/build-aux/moopp html-styled-ostream.oo.h html-styled-ostream.oo.c styled-ostream.oo.h ostream.oo.h + $(top_srcdir)/build-aux/moopp $(srcdir)/html-styled-ostream.oo.c $(srcdir)/html-styled-ostream.oo.h $(srcdir)/styled-ostream.oo.h $(srcdir)/ostream.oo.h +BUILT_SOURCES += html-styled-ostream.h html-styled-ostream.c html_styled_ostream.priv.h html_styled_ostream.vt.h +CLEANFILES += html-styled-ostream.h html-styled-ostream.c html_styled_ostream.priv.h html_styled_ostream.vt.h + +Include: +"html-styled-ostream.h" + +License: +GPL + +Maintainer: +Bruno Haible +