diff options
| author | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2009-04-04 20:09:08 +0200 |
|---|---|---|
| committer | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2009-04-04 20:09:08 +0200 |
| commit | c572b8e7a250ecfba7836c55bb5eda4c9473280a (patch) | |
| tree | 56e513682ede75e15dba8049240ff535ef183540 /src/block-parser.h | |
| parent | cad89a1f9b9e36d7490c3f8cd1449082a1285050 (diff) | |
| download | cataract-c572b8e7a250ecfba7836c55bb5eda4c9473280a.tar.xz | |
New block parser
Diffstat (limited to 'src/block-parser.h')
| -rw-r--r-- | src/block-parser.h | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/block-parser.h b/src/block-parser.h new file mode 100644 index 0000000..41db0b1 --- /dev/null +++ b/src/block-parser.h @@ -0,0 +1,97 @@ +/* Cataract - Static web photo gallery generator + * Copyright (C) 2009 Tomas Bzatek <tbzatek@users.sourceforge.net> + * + * 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 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 <glib.h> + +typedef struct BlockParser BlockParser; + + + +BlockParser *block_parser_new (); + +void block_parser_free (BlockParser *parser); + + + +/* + * block_parser_register_key: tell parser to expect the key to catch + * key: part of the BEGIN_xxx placeholder, matched BEGIN_xxx and END_xxx as one block + * replace_key: placeholder to replace finished block with, for later use in replace_table, + * placeholder will be surrounded by "<!-- $(replace_key) -->" + * + */ +void block_parser_register_key (BlockParser *parser, const char *key, const char *replace_key); + +/* + * block_parser_get_data: return retrieved data or NULL if none read yet + * returns newly allocated string, caller is responsible for freeing + * + */ +char * block_parser_get_data (BlockParser *parser, const char *key); + +/* + * block_parser_has_unused_data: indicates whether the data have already been read and used (by calling block_parser_get_data) + * + */ +gboolean block_parser_has_unused_data (BlockParser *parser, const char *key); + +/* + * block_parser_read_and_parse: reads input from the file and returns parsed line + * - if there's a multiline block, string before the opening placeholder and + * string after closing placeholder are returned on one line, + * separated by "replace_key" placeholder as specified in registered blocks + * - only the outmost "replace_key" placeholder will be used, + * no matter how many nested blocks were inside + * - returns newly allocated string, caller is responsible for freeing + * + */ +char * block_parser_read_and_parse (BlockParser *parser, FILE *stream); + + + +#if 0 + +/* + * replace_table_add_key: add tag/value pair to replace + * + * tag, value will be referenced inside + * + */ +void replace_table_add_key (ReplaceTable *table, const gchar *tag, const gchar *value); +void replace_table_add_key_int (ReplaceTable *table, const gchar *tag, gint value); +void replace_table_add_key_printf (ReplaceTable *table, const gchar *tag, const gchar *format, ...) G_GNUC_PRINTF (3, 4); + +/* + * replace_table_process: process buffer and replace all tags filled in the replace table + * + * - reallocates source buffer + * + */ +void replace_table_process (gchar **buffer, ReplaceTable *table); + + +/* + * adjust_tags_normal: adjust string for normal HTML use + * adjust_tags_parameter: adjust string for use as tag parameter value + * - both funtions return newly allocated string + */ +void adjust_tags_normal (char **str); +void adjust_tags_parameter (char **str); + +#endif |
