Support single quotes in font color tags. v1.6.44
authorCarl Hetherington <cth@carlh.net>
Sat, 4 Mar 2023 20:57:22 +0000 (21:57 +0100)
committerCarl Hetherington <cth@carlh.net>
Sat, 4 Mar 2023 20:57:22 +0000 (21:57 +0100)
src/subrip_reader.cc
test/subrip_reader_test.cc

index 268582dc66f37027a8965dc3cd7d1c110c5013d2..c0ef21c5848586c3f8b4e0a717f695002dd97cdc 100644 (file)
@@ -261,7 +261,7 @@ SubripReader::convert_line (string t, RawSubtitle& p)
                        p.underline = false;
                } else if (has_next(t, i, "<font") || has_next(t, i, "<Font")) {
                        maybe_content (p);
-                       boost::regex re (".*color=\"?#([[:xdigit:]]+)\"?");
+                       boost::regex re (".*color=[\"\']?#([[:xdigit:]]+)[\"\']?");
                        boost::smatch match;
                        string tag;
                        while (i < t.size() && t[i] != '>') {
index dc9698d9332497431866daf4b6992f4c47c37e59..8f23abb2556ea0962b35f6a1ec815eaebd0b32b1 100644 (file)
@@ -335,6 +335,17 @@ BOOST_AUTO_TEST_CASE (subrip_reader_convert_line_test)
        BOOST_CHECK_CLOSE (r._subs.front().colour.b, 1, 0.1);
        r._subs.clear ();
 
+       /* single quotes are apparently also allowed */
+       rs = sub::RawSubtitle();
+       r.convert_line("<font color=\'#ff00ff\'>simple color</font>", rs);
+       BOOST_CHECK_EQUAL(r._subs.size(), 1);
+       BOOST_CHECK_EQUAL(r._subs.front().text, "simple color");
+       BOOST_CHECK_EQUAL(r._subs.front().bold, false);
+       BOOST_CHECK_CLOSE(r._subs.front().colour.r, 1, 0.1);
+       BOOST_CHECK(fabs(r._subs.front().colour.g) < 0.01);
+       BOOST_CHECK_CLOSE(r._subs.front().colour.b, 1, 0.1);
+       r._subs.clear();
+
        rs = sub::RawSubtitle();
        r.convert_line ("<font color=\"#FF00FF\">simple color in capitals</font>", rs);
        BOOST_CHECK_EQUAL (r._subs.size(), 1);
@@ -616,6 +627,7 @@ BOOST_AUTO_TEST_CASE (subrip_reader_test5)
        BOOST_CHECK_CLOSE (r._subs.front().colour.b, 3.0 / 255, 0.1);
 }
 
+
 /** Test alignment */
 BOOST_AUTO_TEST_CASE (subrip_reader_test6)
 {