]> git.lyx.org Git - features.git/commitdiff
Only strip outer braces in listings options
authorJuergen Spitzmueller <spitz@lyx.org>
Wed, 17 Jan 2024 13:45:09 +0000 (14:45 +0100)
committerJuergen Spitzmueller <spitz@lyx.org>
Wed, 17 Jan 2024 13:45:09 +0000 (14:45 +0100)
trim stripped also multiple subsequent braces

src/insets/InsetInclude.cpp

index 870310ef2ddaa9c03f3186ee18d4fc39f29f3939..916196211ad0a591d84af8bff0ad2be7f2e4d18c 100644 (file)
@@ -176,6 +176,16 @@ char_type replaceCommaInBraces(docstring & params)
        return private_char;
 }
 
+docstring stripOuterBraces(docstring & str)
+{
+       // trim only first and last occurrence of { and }
+       if (prefixIs(str, from_ascii("{")))
+               str = str.substr(1, docstring::npos);
+       if (suffixIs(str, from_ascii("}")))
+               str = str.substr(0, str.size() - 1);
+       return str;
+}
+
 } // namespace
 
 
@@ -699,13 +709,15 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const
                                language = opts[i].substr(9);
                                opts.erase(opts.begin() + i--);
                        } else if (prefixIs(opts[i], from_ascii("caption="))) {
-                               caption = params().prepareCommand(runparams, trim(opts[i].substr(8), "{}"),
+                               caption = opts[i].substr(8);
+                               caption = params().prepareCommand(runparams, stripOuterBraces(caption),
                                                                  ParamInfo::HANDLING_LATEXIFY);
                                opts.erase(opts.begin() + i--);
                                if (!use_minted)
                                        latexed_opts.push_back(from_ascii("caption={") + caption + "}");
                        } else if (prefixIs(opts[i], from_ascii("label="))) {
-                               label = params().prepareCommand(runparams, trim(opts[i].substr(6), "{}"),
+                               label = opts[i].substr(6);
+                               label = params().prepareCommand(runparams, stripOuterBraces(label),
                                                                ParamInfo::HANDLING_ESCAPE);
                                opts.erase(opts.begin() + i--);
                                if (!use_minted)
@@ -713,7 +725,7 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const
                        }
                        if (use_minted && !label.empty()) {
                                if (isfloat || !caption.empty())
-                                       label = trim(label, "{}");
+                                       label = stripOuterBraces(label);
                                else
                                        opts.push_back(from_ascii("label=") + label);
                        }