From ef19e114bdf64167a5df33b161484dcf9ae4b923 Mon Sep 17 00:00:00 2001 From: Guillaume MM Date: Sat, 13 May 2017 00:41:23 +0200 Subject: [PATCH] Clean-up before following bugfix Add helper function and factor code --- src/output_latex.cpp | 99 ++++++++++++++++++++------------------------ 1 file changed, 46 insertions(+), 53 deletions(-) diff --git a/src/output_latex.cpp b/src/output_latex.cpp index 69c21fb964..0f79ca1838 100644 --- a/src/output_latex.cpp +++ b/src/output_latex.cpp @@ -525,41 +525,57 @@ void popPolyglossiaLang() } +namespace { + +void addArgInsets(Paragraph const & par, string const & prefix, + Layout::LaTeXArgMap const & latexargs, + map & ilist, + vector & required) +{ + for (auto const & table : par.insetList()) { + InsetArgument const * arg = table.inset->asInsetArgument(); + if (!arg) + continue; + if (arg->name().empty()) { + LYXERR0("Error: Unnamed argument inset!"); + continue; + } + string const name = prefix.empty() ? + arg->name() : split(arg->name(), ':'); + // why converting into an integer? + unsigned int const nr = convert(name); + if (ilist.find(nr) == ilist.end()) + ilist[nr] = arg; + Layout::LaTeXArgMap::const_iterator const lit = + latexargs.find(arg->name()); + if (lit != latexargs.end()) { + Layout::latexarg const & larg = lit->second; + vector req = getVectorFromString(larg.requires); + move(req.begin(), req.end(), back_inserter(required)); + } + } +} + +} // anon namespace + + void latexArgInsets(Paragraph const & par, otexstream & os, - OutputParams const & runparams, Layout::LaTeXArgMap const & latexargs, string const & prefix) + OutputParams const & runparams, + Layout::LaTeXArgMap const & latexargs, + string const & prefix) { map ilist; vector required; - - InsetList::const_iterator it = par.insetList().begin(); - InsetList::const_iterator end = par.insetList().end(); - for (; it != end; ++it) { - if (InsetArgument const * ins = it->inset->asInsetArgument()) { - if (ins->name().empty()) - LYXERR0("Error: Unnamed argument inset!"); - else { - string const name = prefix.empty() ? ins->name() : split(ins->name(), ':'); - unsigned int const nr = convert(name); - ilist[nr] = ins; - Layout::LaTeXArgMap::const_iterator const lit = - latexargs.find(ins->name()); - if (lit != latexargs.end()) { - Layout::latexarg const & arg = (*lit).second; - if (!arg.requires.empty()) { - vector req = getVectorFromString(arg.requires); - required.insert(required.end(), req.begin(), req.end()); - } - } - } - } - } + addArgInsets(par, prefix, latexargs, ilist, required); getArgInsets(os, runparams, latexargs, ilist, required, prefix); } -void latexArgInsets(ParagraphList const & pars, ParagraphList::const_iterator pit, - otexstream & os, OutputParams const & runparams, Layout::LaTeXArgMap const & latexargs, - string const & prefix) +void latexArgInsets(ParagraphList const & pars, + ParagraphList::const_iterator pit, + otexstream & os, OutputParams const & runparams, + Layout::LaTeXArgMap const & latexargs, + string const & prefix) { map ilist; vector required; @@ -583,35 +599,12 @@ void latexArgInsets(ParagraphList const & pars, ParagraphList::const_iterator pi ParagraphList::const_iterator spit = lyx::prev(pit, offset); for (; spit != pars.end(); ++spit) { - if (spit->layout() != current_layout || spit->params().depth() < current_depth) + if (spit->layout() != current_layout || + spit->params().depth() < current_depth) break; if (spit->params().depth() > current_depth) continue; - InsetList::const_iterator it = spit->insetList().begin(); - InsetList::const_iterator end = spit->insetList().end(); - for (; it != end; ++it) { - if (it->inset->lyxCode() == ARG_CODE) { - InsetArgument const * ins = - static_cast(it->inset); - if (ins->name().empty()) - LYXERR0("Error: Unnamed argument inset!"); - else { - string const name = prefix.empty() ? ins->name() : split(ins->name(), ':'); - unsigned int const nr = convert(name); - if (ilist.find(nr) == ilist.end()) - ilist[nr] = ins; - Layout::LaTeXArgMap::const_iterator const lit = - latexargs.find(ins->name()); - if (lit != latexargs.end()) { - Layout::latexarg const & arg = (*lit).second; - if (!arg.requires.empty()) { - vector req = getVectorFromString(arg.requires); - required.insert(required.end(), req.begin(), req.end()); - } - } - } - } - } + addArgInsets(*spit, prefix, latexargs, ilist, required); } getArgInsets(os, runparams, latexargs, ilist, required, prefix); } -- 2.39.2