summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFridrich Štrba <fridrich.strba@bluewin.ch>2021-03-23 06:32:15 +0100
committerFridrich Štrba <fridrich.strba@bluewin.ch>2021-03-23 06:32:15 +0100
commit878c3b55c3aef12b5b1d8ad2619644a0e062368e (patch)
treed8e17e650c9338e29c4286cd634ac14ff186d556
parentd41d8f66957b3e2667e4781bffc1856627957fee (diff)
Fix the spirit grammar to cater for more cases
Change-Id: I8dd86e35c71e7657128ebd63a7cafe730c0daf47
-rw-r--r--src/lib/CDRParser.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lib/CDRParser.cpp b/src/lib/CDRParser.cpp
index c71cae5..d141591 100644
--- a/src/lib/CDRParser.cpp
+++ b/src/lib/CDRParser.cpp
@@ -153,8 +153,10 @@ static int parseColourString(const char *colourString, libcdr::CDRColor &colour,
>> (cpalette | omit[+iso8859_1::alnum]) >> lit(',')
>> *(uint_ >> lit(','))
>> omit[(repeat(8)[iso8859_1::xdigit] >> '-' >> repeat(3)[repeat(4)[iso8859_1::xdigit] >> '-'] >> repeat(12)[iso8859_1::xdigit])]
- >> -(lit(",~,") >> omit[+(iso8859_1::char_ - lit(','))] >> lit(',') >> omit[uint_] >> lit(',')
- >> repeat[+(iso8859_1::char_ - lit(",~,")) >> lit(",~,")] >> omit[*iso8859_1::char_])
+ >> -(lit(',')
+ >> -(lit("~,") >> omit[+(iso8859_1::char_ - lit(','))] >> lit(',') >> omit[uint_] >> lit(',')
+ >> repeat[+(iso8859_1::char_ - lit(",~,")) >> lit(",~,")])
+ >> omit[*iso8859_1::char_])
),
// End grammar
iso8859_1::space,