]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetBibtex.cpp
New attempt on #9906: allow following hyperlinks via context menu.
[lyx.git] / src / insets / InsetBibtex.cpp
index 3e59d654ceba136f59b4f070c414ef5e55630246..876adea54b1770ad15a140a3a8d50eb2890edff5 100644 (file)
@@ -1183,28 +1183,26 @@ void InsetBibtex::docbook(XMLStream & xs, OutputParams const &) const
                string html = to_utf8(bibinfo.getInfo(entry.key(), buffer(), ci));
                regex tagRegex("<span class=\"bib-([^\"]*)\">([^<]*)</span>");
                smatch match;
-               auto tagIt = std::sregex_iterator(html.cbegin(), html.cend(), tagRegex, regex_constants::match_default);
-               auto tagEnd = std::sregex_iterator();
+               auto tagIt = lyx::sregex_iterator(html.cbegin(), html.cend(), tagRegex, regex_constants::match_default);
+               auto tagEnd = lyx::sregex_iterator();
                map<string, string> delayedTags;
 
                // Read all tags from HTML and convert those that have a 1:1 matching.
                while (tagIt != tagEnd) {
                        string tag = tagIt->str(); // regex_match cannot work with temporary strings.
                        ++tagIt;
-                       std::regex_match(tag, match, tagRegex);
 
-                       if (toDocBookTag.find(match[1]) == toDocBookTag.end()) {
+                       if (regex_match(tag, match, tagRegex)) {
+                               if (toDocBookTag[match[1]] == "SPECIFIC") {
+                                       delayedTags[match[1]] = match[2];
+                               } else {
+                                       xs << xml::StartTag(toDocBookTag[match[1]]);
+                                       xs << from_utf8(match[2].str());
+                                       xs << xml::EndTag(toDocBookTag[match[1]]);
+                               }
+                       } else {
                                LYXERR0("The BibTeX field " << match[1].str() << " is unknown.");
                                xs << XMLStream::ESCAPE_NONE << from_utf8("<!-- Output Error: The BibTeX field " + match[1].str() + " is unknown -->\n");
-                               continue;
-                       }
-
-                       if (toDocBookTag[match[1]] == "SPECIFIC") {
-                               delayedTags[match[1]] = match[2];
-                       } else {
-                               xs << xml::StartTag(toDocBookTag[match[1]]);
-                               xs << from_utf8(match[2].str());
-                               xs << xml::EndTag(toDocBookTag[match[1]]);
                        }
                }