summaryrefslogtreecommitdiff
path: root/generators-replace-table.c
diff options
context:
space:
mode:
Diffstat (limited to 'generators-replace-table.c')
-rw-r--r--generators-replace-table.c39
1 files changed, 27 insertions, 12 deletions
diff --git a/generators-replace-table.c b/generators-replace-table.c
index 6a84c17..23771fc 100644
--- a/generators-replace-table.c
+++ b/generators-replace-table.c
@@ -110,16 +110,12 @@ replace_table_process_value (gpointer key, gpointer value, gpointer user_data)
g_return_if_fail (value != NULL);
g_return_if_fail (user_data != NULL);
-// g_print ("replace_table_print: key = '%s', value = '%s'\n", (gchar *) key, (gchar *) value);
-
/* replace <!-- $(xxx) --> tags */
tag = g_strdup_printf ("<!-- $(%s) -->", (gchar *) key);
tag_value = g_strdup ((gchar *) value);
- /* TODO: do something with tag_value? */
-/* fix_entities (&s1); */
-/* s1 = g_markup_escape_text (s4, -1); */
+ adjust_tags_normal (&tag_value);
while (strstr (*buffer, tag)) {
- str_replace (buffer, tag, tag_value, NULL);
+ str_replace (buffer, tag, tag_value);
}
g_free (tag_value);
g_free (tag);
@@ -127,13 +123,9 @@ replace_table_process_value (gpointer key, gpointer value, gpointer user_data)
/* replace $(xxx) tags */
tag = g_strdup_printf ("$(%s)", (gchar *) key);
tag_value = g_strdup ((gchar *) value);
- /* TODO: do something with tag_value? */
-/* fix_entities (&s1); */
-/* s1 = g_markup_escape_text (s4, -1); */
-/* line endings */
-/* remove all tags as we're tag value */
+ adjust_tags_parameter (&tag_value);
while (strstr (*buffer, tag)) {
- str_replace (buffer, tag, tag_value, NULL);
+ str_replace (buffer, tag, tag_value);
}
g_free (tag_value);
g_free (tag);
@@ -157,3 +149,26 @@ replace_table_process (gchar **buffer, ReplaceTable *table)
g_print ("replace_table_process: val = '%s'\n", val);
*/
}
+
+
+/*
+ * 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)
+{
+ fix_entities (str);
+}
+
+void
+adjust_tags_parameter (char **str)
+{
+ /* TODO: replace line endings with single space? */
+ remove_tags (str, "<!--", "-->"); /* comments */
+ remove_tags (str, "<", ">"); /* tags */
+ fix_entities (str); /* entities */
+ str_replace (str, "\"", "&quot;"); /* " */
+ str_replace (str, "'", "&apos;"); /* ' */
+}