summaryrefslogtreecommitdiff
path: root/src/block-parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/block-parser.h')
-rw-r--r--src/block-parser.h97
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