* tests/markups/valid-4.gmarkup: Test attribute value delimiters.
* glib/gmarkup.c (g_markup_parse_context_parse): Support
' and " as attribute value delimiters. (#70677)
+2002-02-09 Matthias Clasen <matthias@local>
+
+ * tests/markups/valid-4.gmarkup: Test attribute value delimiters.
+
+ * glib/gmarkup.c (g_markup_parse_context_parse): Support
+ ' and " as attribute value delimiters. (#70677)
+
2002-02-09 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in: Make --disable-threads work again. (#71034)
+2002-02-09 Matthias Clasen <matthias@local>
+
+ * tests/markups/valid-4.gmarkup: Test attribute value delimiters.
+
+ * glib/gmarkup.c (g_markup_parse_context_parse): Support
+ ' and " as attribute value delimiters. (#70677)
+
2002-02-09 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in: Make --disable-threads work again. (#71034)
+2002-02-09 Matthias Clasen <matthias@local>
+
+ * tests/markups/valid-4.gmarkup: Test attribute value delimiters.
+
+ * glib/gmarkup.c (g_markup_parse_context_parse): Support
+ ' and " as attribute value delimiters. (#70677)
+
2002-02-09 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in: Make --disable-threads work again. (#71034)
+2002-02-09 Matthias Clasen <matthias@local>
+
+ * tests/markups/valid-4.gmarkup: Test attribute value delimiters.
+
+ * glib/gmarkup.c (g_markup_parse_context_parse): Support
+ ' and " as attribute value delimiters. (#70677)
+
2002-02-09 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in: Make --disable-threads work again. (#71034)
+2002-02-09 Matthias Clasen <matthias@local>
+
+ * tests/markups/valid-4.gmarkup: Test attribute value delimiters.
+
+ * glib/gmarkup.c (g_markup_parse_context_parse): Support
+ ' and " as attribute value delimiters. (#70677)
+
2002-02-09 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in: Make --disable-threads work again. (#71034)
+2002-02-09 Matthias Clasen <matthias@local>
+
+ * tests/markups/valid-4.gmarkup: Test attribute value delimiters.
+
+ * glib/gmarkup.c (g_markup_parse_context_parse): Support
+ ' and " as attribute value delimiters. (#70677)
+
2002-02-09 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in: Make --disable-threads work again. (#71034)
+2002-02-09 Matthias Clasen <matthias@local>
+
+ * tests/markups/valid-4.gmarkup: Test attribute value delimiters.
+
+ * glib/gmarkup.c (g_markup_parse_context_parse): Support
+ ' and " as attribute value delimiters. (#70677)
+
2002-02-09 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in: Make --disable-threads work again. (#71034)
+2002-02-09 Matthias Clasen <matthias@local>
+
+ * tests/markups/valid-4.gmarkup: Test attribute value delimiters.
+
+ * glib/gmarkup.c (g_markup_parse_context_parse): Support
+ ' and " as attribute value delimiters. (#70677)
+
2002-02-09 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in: Make --disable-threads work again. (#71034)
STATE_INSIDE_ATTRIBUTE_NAME,
STATE_BETWEEN_ATTRIBUTES,
STATE_AFTER_ATTRIBUTE_EQUALS_SIGN,
- STATE_INSIDE_ATTRIBUTE_VALUE,
+ STATE_INSIDE_ATTRIBUTE_VALUE_SQ,
+ STATE_INSIDE_ATTRIBUTE_VALUE_DQ,
STATE_INSIDE_TEXT,
STATE_AFTER_CLOSE_TAG_SLASH,
STATE_INSIDE_CLOSE_TAG_NAME,
break;
case STATE_AFTER_ATTRIBUTE_EQUALS_SIGN:
- /* Possible next state: INSIDE_ATTRIBUTE_VALUE */
+ /* Possible next state: INSIDE_ATTRIBUTE_VALUE_[SQ/DQ] */
if (*context->iter == '"')
{
advance_char (context);
- context->state = STATE_INSIDE_ATTRIBUTE_VALUE;
+ context->state = STATE_INSIDE_ATTRIBUTE_VALUE_DQ;
+ context->start = context->iter;
+ }
+ else if (*context->iter == '\'')
+ {
+ advance_char (context);
+ context->state = STATE_INSIDE_ATTRIBUTE_VALUE_SQ;
context->start = context->iter;
}
else
}
break;
- case STATE_INSIDE_ATTRIBUTE_VALUE:
+ case STATE_INSIDE_ATTRIBUTE_VALUE_SQ:
+ case STATE_INSIDE_ATTRIBUTE_VALUE_DQ:
/* Possible next states: BETWEEN_ATTRIBUTES */
- do
- {
- if (*context->iter == '"')
- break;
- }
- while (advance_char (context));
-
+ {
+ gchar delim;
+
+ if (context->state == STATE_INSIDE_ATTRIBUTE_VALUE_SQ)
+ {
+ delim = '\'';
+ }
+ else
+ {
+ delim = '"';
+ }
+
+ do
+ {
+ if (*context->iter == delim)
+ break;
+ }
+ while (advance_char (context));
+ }
if (context->iter == context->current_text_end)
{
/* The value hasn't necessarily ended. Merge with
"following an attribute name; no attribute value"));
break;
- case STATE_INSIDE_ATTRIBUTE_VALUE:
+ case STATE_INSIDE_ATTRIBUTE_VALUE_SQ:
+ case STATE_INSIDE_ATTRIBUTE_VALUE_DQ:
set_error (context, error, G_MARKUP_ERROR_PARSE,
_("Document ended unexpectedly while inside an attribute "
"value"));
--- /dev/null
+<foo>
+<bar a='1'/>
+<bar a="2"/>
+<bar a='3"'/>
+<bar a="4'"/>
+<bar a="5''''"/>
+</foo>
+