X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FCiteEnginesList.cpp;h=6a1cef1a1185c97421f6a9750ad33003c74fafef;hb=7f1cb306f942709601314f3e396f0e01defdc45d;hp=0e3f45543d3bd970d99ff904d3cf3d271eafedd2;hpb=adc93015f9c356d4e5d594df86c888faaab8ad8b;p=lyx.git diff --git a/src/CiteEnginesList.cpp b/src/CiteEnginesList.cpp index 0e3f45543d..6a1cef1a11 100644 --- a/src/CiteEnginesList.cpp +++ b/src/CiteEnginesList.cpp @@ -4,7 +4,7 @@ * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * - * \author Richard Heck + * \author Richard Kimberly Heck * \author Jürgen Spitzmüller * * Full author contact details are available in file CREDITS. @@ -14,7 +14,6 @@ #include "CiteEnginesList.h" -#include "Citation.h" #include "LaTeXFeatures.h" #include "Lexer.h" @@ -38,12 +37,11 @@ CiteEnginesList theCiteEnginesList; LyXCiteEngine::LyXCiteEngine(string const & n, string const & i, - vector const & cet, vector const & dbs, - string const & d, vector const & p, - vector const & r, vector const & e): - name_(n), id_(i), engine_types_(cet), default_biblios_(dbs), description_(d), - package_list_(p), required_engines_(r), excluded_engines_(e), - checked_(false), available_(false) + vector const & cet, string const & cfm, + vector const & dbs, + string const & d, vector const & p): + name_(n), id_(i), engine_types_(cet), cite_framework_(cfm), default_biblios_(dbs), + description_(d), package_list_(p), checked_(false), available_(false) { filename_ = id_ + ".citeengine"; } @@ -85,48 +83,12 @@ bool LyXCiteEngine::hasEngineType(CiteEngineType const & et) const } -bool LyXCiteEngine::isCompatible(string const & cename) const -{ - // do we exclude it? - if (find(excluded_engines_.begin(), excluded_engines_.end(), cename) != - excluded_engines_.end()) - return false; - - LyXCiteEngine const * const lm = theCiteEnginesList[cename]; - if (!lm) - return true; - - // does it exclude us? - vector const excengs = lm->getExcludedEngines(); - if (find(excengs.begin(), excengs.end(), id_) != excengs.end()) - return false; - - return true; -} - - -bool LyXCiteEngine::areCompatible(string const & eng1, string const & eng2) -{ - LyXCiteEngine const * const lm1 = theCiteEnginesList[eng1]; - if (lm1) - return lm1->isCompatible(eng2); - LyXCiteEngine const * const lm2 = theCiteEnginesList[eng2]; - if (lm2) - return lm2->isCompatible(eng1); - // Can't check it either way. - return true; -} - - string LyXCiteEngine::getDefaultBiblio(CiteEngineType const & cet) const { string res; string const etp = theCiteEnginesList.getTypeAsString(cet) + ":"; //check whether all of the required packages are available - vector::const_iterator it = default_biblios_.begin(); - vector::const_iterator end = default_biblios_.end(); - for (; it != end; ++it) { - string const s = *it; + for (string const &s: default_biblios_) { if (prefixIs(s, etp)) res = split(s, ':'); else if (!contains(s, ':') && res.empty()) @@ -138,10 +100,18 @@ string LyXCiteEngine::getDefaultBiblio(CiteEngineType const & cet) const bool LyXCiteEngine::isDefaultBiblio(string const & bf) const { - if (find(default_biblios_.begin(), default_biblios_.end(), bf) != default_biblios_.end()) - return true; - string const bfp = ":" + bf; - return find(default_biblios_.begin(), default_biblios_.end(), bfp) != default_biblios_.end(); + string const bfs = ":" + bf; + for (string const & s: default_biblios_) + if (suffixIs(s, bfs) || bf == s) + return true; + + return false; +} + + +bool LyXCiteEngine::required(string const & p) const +{ + return find(package_list_.begin(), package_list_.end(), p) != package_list_.end(); } @@ -177,7 +147,7 @@ CiteEngineTypeTranslator const & citeenginetypetranslator() return translator; } -} // namespace anon +} // namespace string CiteEnginesList::getTypeAsString(CiteEngineType const & et) const @@ -244,6 +214,10 @@ bool CiteEnginesList::read() cet = split(cet, p, '|'); cets.push_back(p); } + if (!lex.next(true)) + break; + string const citeframework = lex.getString(); + LYXERR(Debug::TCLASS, "CiteFramework: " << citeframework); if (!lex.next(true)) break; string db = lex.getString(); @@ -269,29 +243,9 @@ bool CiteEnginesList::read() str = split(str, p, ','); pkgs.push_back(p); } - if (!lex.next()) - break; - str = lex.getString(); - LYXERR(Debug::TCLASS, "Required: " << str); - vector req; - while (!str.empty()) { - string p; - str = split(str, p, '|'); - req.push_back(p); - } - if (!lex.next()) - break; - str = lex.getString(); - LYXERR(Debug::TCLASS, "Excluded: " << str); - vector exc; - while (!str.empty()) { - string p; - str = split(str, p, '|'); - exc.push_back(p); - } // This code is run when we have - // cename, fname, desc, pkgs, req and exc - addCiteEngine(cename, fname, cets, dbs, desc, pkgs, req, exc); + // cename, fname, cets, citeframework, dbs, desc, pkgs + addCiteEngine(cename, fname, cets, citeframework, dbs, desc, pkgs); } // end switch } //end while @@ -305,11 +259,10 @@ bool CiteEnginesList::read() void CiteEnginesList::addCiteEngine(string const & cename, string const & filename, vector const & cets, - vector const & dbs, string const & description, - vector const & pkgs, vector const & req, - vector const & exc) + string const & citeframework, vector const & dbs, + string const & description, vector const & pkgs) { - LyXCiteEngine ce(cename, filename, cets, dbs, description, pkgs, req, exc); + LyXCiteEngine ce(cename, filename, cets, citeframework, dbs, description, pkgs); englist_.push_back(ce); } @@ -340,25 +293,21 @@ LyXCiteEnginesList::iterator CiteEnginesList::end() LyXCiteEngine const * CiteEnginesList::operator[](string const & str) const { - LyXCiteEnginesList::const_iterator it = englist_.begin(); - for (; it != englist_.end(); ++it) - if (it->getID() == str) { - LyXCiteEngine const & eng = *it; + for (auto const & eng : englist_) + if (eng.getID() == str) { return ŋ } - return 0; + return nullptr; } LyXCiteEngine * CiteEnginesList::operator[](string const & str) { - LyXCiteEnginesList::iterator it = englist_.begin(); - for (; it != englist_.end(); ++it) - if (it->getID() == str) { - LyXCiteEngine & eng = *it; + for (auto & eng : englist_) + if (eng.getID() == str) { return ŋ } - return 0; + return nullptr; } } // namespace lyx