forked from AuroraMiddleware/gtk
cssparser: Add gtk_css_parser_try_delim()
For parsing single code point delimiters. Also port calc() to use this.
This commit is contained in:
parent
23080d47b5
commit
5f3e5a0406
@ -366,7 +366,7 @@ gtk_css_calc_value_parse_product (GtkCssParser *parser,
|
||||
if (actual_flags != GTK_CSS_PARSE_NUMBER && !is_number (result))
|
||||
actual_flags = GTK_CSS_PARSE_NUMBER;
|
||||
|
||||
if (_gtk_css_parser_try (parser, "*", TRUE))
|
||||
if (gtk_css_parser_try_delim (parser, '*'))
|
||||
{
|
||||
value = gtk_css_calc_value_parse_product (parser, actual_flags);
|
||||
if (value == NULL)
|
||||
@ -379,7 +379,7 @@ gtk_css_calc_value_parse_product (GtkCssParser *parser,
|
||||
_gtk_css_value_unref (result);
|
||||
result = temp;
|
||||
}
|
||||
else if (_gtk_css_parser_try (parser, "/", TRUE))
|
||||
else if (gtk_css_parser_try_delim (parser, '/'))
|
||||
{
|
||||
value = gtk_css_calc_value_parse_product (parser, GTK_CSS_PARSE_NUMBER);
|
||||
if (value == NULL)
|
||||
@ -422,13 +422,13 @@ gtk_css_calc_value_parse_sum (GtkCssParser *parser,
|
||||
{
|
||||
GtkCssValue *next, *temp;
|
||||
|
||||
if (_gtk_css_parser_try (parser, "+", TRUE))
|
||||
if (gtk_css_parser_try_delim (parser, '+'))
|
||||
{
|
||||
next = gtk_css_calc_value_parse_product (parser, flags);
|
||||
if (next == NULL)
|
||||
goto fail;
|
||||
}
|
||||
else if (_gtk_css_parser_try (parser, "-", TRUE))
|
||||
else if (gtk_css_parser_try_delim (parser, '-'))
|
||||
{
|
||||
temp = gtk_css_calc_value_parse_product (parser, flags);
|
||||
if (temp == NULL)
|
||||
|
@ -320,6 +320,17 @@ gtk_css_parser_try_ident (GtkCssParser *parser,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gtk_css_parser_try_delim (GtkCssParser *parser,
|
||||
gunichar delim)
|
||||
{
|
||||
if (*parser->data != delim)
|
||||
return FALSE;
|
||||
parser->data += 1;
|
||||
_gtk_css_parser_skip_whitespace (parser);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gtk_css_parser_try_token (GtkCssParser *parser,
|
||||
GtkCssTokenType type)
|
||||
|
@ -79,6 +79,8 @@ gboolean gtk_css_parser_has_function (GtkCssParser *parser
|
||||
*/
|
||||
gboolean gtk_css_parser_try_ident (GtkCssParser *parser,
|
||||
const char *ident);
|
||||
gboolean gtk_css_parser_try_delim (GtkCssParser *parser,
|
||||
gunichar delim);
|
||||
gboolean gtk_css_parser_try_at_keyword (GtkCssParser *parser,
|
||||
const char *keyword);
|
||||
gboolean gtk_css_parser_try_token (GtkCssParser *parser,
|
||||
|
@ -155,7 +155,7 @@ parse_border_radius (GtkCssShorthandProperty *shorthand,
|
||||
for (; i < 4; i++)
|
||||
x[i] = _gtk_css_value_ref (x[(i - 1) >> 1]);
|
||||
|
||||
if (_gtk_css_parser_try (parser, "/", TRUE))
|
||||
if (gtk_css_parser_try_delim (parser, '/'))
|
||||
{
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
@ -293,7 +293,7 @@ parse_border_image (GtkCssShorthandProperty *shorthand,
|
||||
if (values[1] == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (_gtk_css_parser_try (parser, "/", TRUE))
|
||||
if (gtk_css_parser_try_delim (parser, '/'))
|
||||
{
|
||||
values[2] = _gtk_css_border_value_parse (parser,
|
||||
GTK_CSS_PARSE_PERCENT
|
||||
@ -529,7 +529,7 @@ parse_one_background (GtkCssShorthandProperty *shorthand,
|
||||
values[1] = value;
|
||||
value = NULL;
|
||||
|
||||
if (_gtk_css_parser_try (parser, "/", TRUE) &&
|
||||
if (gtk_css_parser_try_delim (parser, '/') &&
|
||||
(value = _gtk_css_bg_size_value_parse (parser)))
|
||||
{
|
||||
values[2] = value;
|
||||
|
Loading…
Reference in New Issue
Block a user