forked from AuroraMiddleware/gtk
builder-tool: Pass through CDATA where it makes sense
This avoids a ton of escaping for GtkBuilderListItemFactory::bytes.
This commit is contained in:
parent
2f21003064
commit
21eac434c3
@ -264,6 +264,36 @@ keep_for_rewrite (const char *class_name,
|
|||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
has_attribute (Element *elt,
|
||||||
|
const char *name,
|
||||||
|
const char *value)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; elt->attribute_names[i]; i++)
|
||||||
|
{
|
||||||
|
if (strcmp (elt->attribute_names[i], name) == 0 &&
|
||||||
|
(value == NULL || strcmp (elt->attribute_values[i], value) == 0))
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
is_cdata_property (Element *element)
|
||||||
|
{
|
||||||
|
if (g_str_equal (element->element_name, "property") &&
|
||||||
|
has_attribute (element, "name", "bytes") &&
|
||||||
|
element->parent != NULL &&
|
||||||
|
g_str_equal (element->parent->element_name, "object") &&
|
||||||
|
has_attribute (element->parent, "class", "GtkBuilderListItemFactory"))
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
is_pcdata_element (Element *element)
|
is_pcdata_element (Element *element)
|
||||||
{
|
{
|
||||||
@ -486,23 +516,6 @@ value_is_default (Element *element,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
|
||||||
has_attribute (Element *elt,
|
|
||||||
const char *name,
|
|
||||||
const char *value)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; elt->attribute_names[i]; i++)
|
|
||||||
{
|
|
||||||
if (strcmp (elt->attribute_names[i], name) == 0 &&
|
|
||||||
(value == NULL || strcmp (elt->attribute_values[i], value) == 0))
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char *
|
static const char *
|
||||||
get_attribute_value (Element *element,
|
get_attribute_value (Element *element,
|
||||||
const char *name)
|
const char *name)
|
||||||
@ -1792,12 +1805,21 @@ dump_element (Element *element,
|
|||||||
}
|
}
|
||||||
g_fprintf (output, "%*s", indent, "");
|
g_fprintf (output, "%*s", indent, "");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (is_cdata_property (element))
|
||||||
|
{
|
||||||
|
g_fprintf (output, "<![CDATA[");
|
||||||
|
g_fprintf (output, "%s", element->data);
|
||||||
|
g_fprintf (output, "]]>");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
char *escaped = g_markup_escape_text (element->data, -1);
|
char *escaped = g_markup_escape_text (element->data, -1);
|
||||||
g_fprintf (output, "%s", escaped);
|
g_fprintf (output, "%s", escaped);
|
||||||
g_free (escaped);
|
g_free (escaped);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
g_fprintf (output, "</%s>\n", element->element_name);
|
g_fprintf (output, "</%s>\n", element->element_name);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user