]> git.lyx.org Git - lyx.git/blobdiff - src/CiteEnginesList.cpp
Bulk cleanup/fix incorrect annotation at the end of namespaces.
[lyx.git] / src / CiteEnginesList.cpp
index 209c8bc840d3a3f7ecb1b327f7f7c5a0171cf74b..58b686511b0eda996efd99dd093001ccc5f543bf 100644 (file)
@@ -38,12 +38,11 @@ CiteEnginesList theCiteEnginesList;
 
 
 LyXCiteEngine::LyXCiteEngine(string const & n, string const & i,
-                            vector<string> const & cet, string const & d,
-                            vector<string> const & p,
-                            vector<string> const & r, vector<string> const & e):
-       name_(n), id_(i), engine_types_(cet), description_(d), package_list_(p),
-       required_engines_(r), excluded_engines_(e),
-       checked_(false), available_(false)
+                            vector<string> const & cet, string const & cfm,
+                            vector<string> const & dbs,
+                            string const & d, vector<string> 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,36 +84,35 @@ bool LyXCiteEngine::hasEngineType(CiteEngineType const & et) const
 }
 
 
-bool LyXCiteEngine::isCompatible(string const & cename) const
+string LyXCiteEngine::getDefaultBiblio(CiteEngineType const & cet) const
 {
-       // do we exclude it?
-       if (find(excluded_engines_.begin(), excluded_engines_.end(), cename) !=
-                       excluded_engines_.end())
-               return false;
+       string res;
+       string const etp = theCiteEnginesList.getTypeAsString(cet) + ":";
+       //check whether all of the required packages are available
+       for (string const &s: default_biblios_) {
+               if (prefixIs(s, etp))
+                       res = split(s, ':');
+               else if (!contains(s, ':') && res.empty())
+                       res = s;
+       }
+       return res;
+}
 
-       LyXCiteEngine const * const lm = theCiteEnginesList[cename];
-       if (!lm)
-               return true;
 
-       // does it exclude us?
-       vector<string> const excengs = lm->getExcludedEngines();
-       if (find(excengs.begin(), excengs.end(), id_) != excengs.end())
-               return false;
+bool LyXCiteEngine::isDefaultBiblio(string const & bf) const
+{
+       string const bfs = ":" + bf;
+       for (string const &s: default_biblios_)
+               if (suffixIs(s, bfs) || bf == s)
+                       return true;
 
-       return true;
+       return false;
 }
 
 
-bool LyXCiteEngine::areCompatible(string const & eng1, string const & eng2)
+bool LyXCiteEngine::requires(const string p) const
 {
-       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;
+       return find(package_list_.begin(), package_list_.end(), p) != package_list_.end();
 }
 
 
@@ -150,7 +148,7 @@ CiteEngineTypeTranslator const & citeenginetypetranslator()
        return translator;
 }
 
-} // namespace anon
+} // namespace
 
 
 string CiteEnginesList::getTypeAsString(CiteEngineType const & et) const
@@ -217,6 +215,20 @@ 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();
+                       LYXERR(Debug::TCLASS, "Default Biblio: " << db);
+                       vector<string> dbs;
+                       while (!db.empty()) {
+                               string p;
+                               db = split(db, p, '|');
+                               dbs.push_back(p);
+                       }
                        if (!lex.next(true))
                                break;
                        string const desc = lex.getString();
@@ -232,29 +244,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<string> 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<string> 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, desc, pkgs, req, exc);
+                       // cename, fname, cets, citeframework, dbs, desc, pkgs
+                       addCiteEngine(cename, fname, cets, citeframework, dbs, desc, pkgs);
                } // end switch
        } //end while
 
@@ -267,11 +259,11 @@ bool CiteEnginesList::read()
 
 
 void CiteEnginesList::addCiteEngine(string const & cename,
-       string const & filename, vector<string> const & cets, string const & description,
-       vector<string> const & pkgs, vector<string> const & req,
-       vector<string> const & exc)
+       string const & filename, vector<string> const & cets,
+       string const & citeframework, vector<string> const & dbs,
+       string const & description, vector<string> const & pkgs)
 {
-       LyXCiteEngine ce(cename, filename, cets, description, pkgs, req, exc);
+       LyXCiteEngine ce(cename, filename, cets, citeframework, dbs, description, pkgs);
        englist_.push_back(ce);
 }