X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fcontrollers%2Fbiblio.h;h=55882cff56cbf998853885fe5f15ed1454d206f5;hb=e4c3ce462791c85922d919f8859e3408f57d10fa;hp=7271b82d0f396bd529abbd9b7e27f84b1ff0858d;hpb=ce708d095c65866617424f940c1dac6b7e236d61;p=lyx.git diff --git a/src/frontends/controllers/biblio.h b/src/frontends/controllers/biblio.h index 7271b82d0f..55882cff56 100644 --- a/src/frontends/controllers/biblio.h +++ b/src/frontends/controllers/biblio.h @@ -6,24 +6,28 @@ * * \author Angus Leeming * - * Full author contact details are available in file CREDITS + * Full author contact details are available in file CREDITS. */ #ifndef BIBLIOHELPERS_H #define BIBLIOHELPERS_H -#ifdef __GNUG__ -#pragma interface -#endif +#include "support/docstring.h" -#include "LString.h" #include #include +class Buffer; + /** Functions of use to citation and bibtex GUI controllers and views */ +namespace lyx { namespace biblio { -/// +class CiteEngine_enum; + +CiteEngine_enum getEngine(Buffer const &); + + enum CiteStyle { CITE, CITET, @@ -35,48 +39,52 @@ enum CiteStyle { CITEYEARPAR }; -/// + enum Search { - /// SIMPLE, - /// REGEX }; -/// + enum Direction { - /// FORWARD, - /// BACKWARD }; + +/** Each citation engine recognizes only a subset of all possible + * citation commands. Given a latex command \c input, this function + * returns an appropriate command, valid for \c engine. + */ +std::string const asValidLatexCommand(std::string const & input, + CiteEngine_enum const & engine); + /// First entry is the bibliography key, second the data -typedef std::map InfoMap; +typedef std::map InfoMap; /// Returns a vector of bibliography keys -std::vector const getKeys(InfoMap const &); +std::vector const getKeys(InfoMap const &); /** Returns the BibTeX data associated with a given key. Empty if no info exists. */ -string const getInfo(InfoMap const &, string const &); +docstring const getInfo(InfoMap const &, std::string const & key); -// rturn the year from the bibtex data record -string const getYear(InfoMap const & map, string const & key); +/// return the year from the bibtex data record +docstring const getYear(InfoMap const & map, std::string const & key); /// return the short form of an authorlist -string const getAbbreviatedAuthor(InfoMap const & map, string const & key); +docstring const getAbbreviatedAuthor(InfoMap const & map, std::string const & key); // return only the family name -string const familyName(string const & name); +docstring const familyName(docstring const & name); /** Search a BibTeX info field for the given key and return the associated field. */ -string const parseBibTeX(string data, string const & findkey); +docstring const parseBibTeX(docstring data, std::string const & findkey); /** Returns an iterator to the first key that meets the search criterion, or end() if unsuccessful. - + User supplies : the InfoMap of bibkeys info, the vector of keys to be searched, @@ -86,19 +94,25 @@ string const parseBibTeX(string data, string const & findkey); an enum defining the search direction. */ -std::vector::const_iterator +std::vector::const_iterator searchKeys(InfoMap const & map, - std::vector const & keys_to_search, - string const & search_expression, - std::vector::const_iterator start, + std::vector const & keys_to_search, + docstring const & search_expression, + std::vector::const_iterator start, Search, Direction, bool caseSensitive=false); -/// Type returned by getCitationStyle, below -struct CitationStyle { + +class CitationStyle { +public: /// - CitationStyle() : style(CITE), full(false), forceUCase(false) {} + CitationStyle(CiteStyle s = CITE, bool f = false, bool force = false) + : style(s), full(f), forceUCase(force) {} + /// \param latex_str a LaTeX command, "cite", "Citep*", etc + CitationStyle(std::string const & latex_str); + /// + std::string const asLatexStr() const; /// CiteStyle style; /// @@ -107,55 +121,46 @@ struct CitationStyle { bool forceUCase; }; -/// Given the LaTeX command, return the appropriate CitationStyle -CitationStyle const getCitationStyle(string const & command); - -/** Returns the LaTeX citation command - -User supplies : -The CiteStyle enum, -a flag forcing the full author list, -a flag forcing upper case, e.g. "della Casa" becomes "Della Case" -*/ -string const getCiteCommand(CiteStyle, bool full, bool forceUCase); /// Returns a vector of available Citation styles. -std::vector const getCiteStyles(bool usingNatbib); +std::vector const getCiteStyles(CiteEngine_enum const &); /** "Translates" the available Citation Styles into strings for this key. The returned string is displayed by the GUI. - - + + [XX] is used in place of the actual reference Eg, the vector will contain: [XX], Jones et al. [XX], ... - + User supplies : the key, the InfoMap of bibkeys info, the available citation styles */ -std::vector const -getNumericalStrings(string const & key, +std::vector const +getNumericalStrings(std::string const & key, InfoMap const & map, std::vector const & styles); /** "Translates" the available Citation Styles into strings for this key. The returned string is displayed by the GUI. - + Eg, the vector will contain: Jones et al. (1990), (Jones et al. 1990), Jones et al. 1990, ... - + User supplies : the key, the InfoMap of bibkeys info, the available citation styles */ -std::vector const -getAuthorYearStrings(string const & key, +std::vector const +getAuthorYearStrings(std::string const & key, InfoMap const & map, std::vector const & styles); + } // namespace biblio +} // namespace lyx #endif // BIBLIOHELPERS_H