diff --git a/tools/ges-structure-parser.c b/tools/ges-structure-parser.c index dc4eb3c7f9..aa5fe3a66e 100644 --- a/tools/ges-structure-parser.c +++ b/tools/ges-structure-parser.c @@ -107,6 +107,26 @@ ges_structure_parser_parse_symbol (GESStructureParser * self, self->add_comma = TRUE; } +void +ges_structure_parser_parse_setter (GESStructureParser * self, + const gchar * setter) +{ + gchar *parsed_setter; + + while (*setter == '-' || *setter == ' ') + setter++; + + while (*setter != '-') + setter++; + + setter++; + + parsed_setter = g_strdup_printf ("set-property, property=%s, value=", setter); + self->add_comma = FALSE; + ges_structure_parser_parse_string (self, parsed_setter, TRUE); + g_free (parsed_setter); +} + GESStructureParser * ges_structure_parser_new (void) { diff --git a/tools/ges-structure-parser.h b/tools/ges-structure-parser.h index acdb94b666..9f1e265ddf 100644 --- a/tools/ges-structure-parser.h +++ b/tools/ges-structure-parser.h @@ -52,6 +52,7 @@ void ges_structure_parser_parse_string (GESStructureParser *self, const gchar *s void ges_structure_parser_parse_default (GESStructureParser *self, const gchar *text); void ges_structure_parser_parse_whitespace (GESStructureParser *self); void ges_structure_parser_parse_symbol (GESStructureParser *self, const gchar *symbol); +void ges_structure_parser_parse_setter (GESStructureParser *self, const gchar *setter); void ges_structure_parser_end_of_file (GESStructureParser *self); GESStructureParser *ges_structure_parser_new(void); diff --git a/tools/parse.l b/tools/parse.l index d28dd885e4..dabae18fde 100644 --- a/tools/parse.l +++ b/tools/parse.l @@ -10,16 +10,26 @@ %option never-interactive %option noinput +CLIP [ ]+--clip[ ]+|[ ]+-c[ ]+ +TRANSITION [ ]+--transition[ ]+|[ ]+-t[ ]+ +EFFECT [ ]+--effect[ ]+|[ ]+-e[ ]+ + +SETTER [ ]+--set-.[ ]+ + %% \"(\\.|[^"])*\" { ges_structure_parser_parse_string (yyextra, yytext, FALSE); } -[ ]+--clip[ ]+|[ ]+-c[ ]+|[ ]+--transition[ ]+|[ ]+-t[ ]+|[ ]+--effect[ ]+|[ ]+-e[ ]+|[ ]+--set-property[ ]+|[ ]+-s[ ]+ { +{CLIP}|{TRANSITION}|{EFFECT} { ges_structure_parser_parse_symbol (yyextra, yytext); } +{SETTER} { + ges_structure_parser_parse_setter (yyextra, yytext); +} + [ \t\n]+ { ges_structure_parser_parse_whitespace (yyextra); }