/* Cataract - Static web photo gallery generator * Copyright (C) 2009 Tomas Bzatek * * 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 #include 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 "" * */ 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