X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fcontrollers%2Fbiblio.h;h=55882cff56cbf998853885fe5f15ed1454d206f5;hb=e4c3ce462791c85922d919f8859e3408f57d10fa;hp=6a2c3a2330d6cc4c25984dfc4f624d2ca3400f82;hpb=cee80af9a36e6526f913fe61d814d253574aad14;p=lyx.git diff --git a/src/frontends/controllers/biblio.h b/src/frontends/controllers/biblio.h index 6a2c3a2330..55882cff56 100644 --- a/src/frontends/controllers/biblio.h +++ b/src/frontends/controllers/biblio.h @@ -6,153 +6,161 @@ * * \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 biblio -{ +namespace lyx { +namespace biblio { + +class CiteEngine_enum; + +CiteEngine_enum getEngine(Buffer const &); + + +enum CiteStyle { + CITE, + CITET, + CITEP, + CITEALT, + CITEALP, + CITEAUTHOR, + CITEYEAR, + 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; + +/// Returns a vector of bibliography keys +std::vector const getKeys(InfoMap const &); + +/** Returns the BibTeX data associated with a given key. + Empty if no info exists. */ +docstring const getInfo(InfoMap const &, std::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 +docstring const getAbbreviatedAuthor(InfoMap const & map, std::string const & key); + +// return only the family name +docstring const familyName(docstring const & name); + +/** Search a BibTeX info field for the given key and return the + associated field. */ +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, + the search criterion, + an iterator defining the starting point of the search, + an enum defining a Simple or Regex search, + an enum defining the search direction. +*/ + +std::vector::const_iterator +searchKeys(InfoMap const & map, + std::vector const & keys_to_search, + docstring const & search_expression, + std::vector::const_iterator start, + Search, + Direction, + bool caseSensitive=false); + + +class CitationStyle { +public: + /// + 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); /// - enum CiteStyle { - CITE, - CITET, - CITEP, - CITEALT, - CITEALP, - CITEAUTHOR, - CITEYEAR, - CITEYEARPAR - }; + std::string const asLatexStr() const; /// - enum Search { - /// - SIMPLE, - /// - REGEX - }; + CiteStyle style; /// - enum Direction { - /// - FORWARD, - /// - BACKWARD - }; - - /// First entry is the bibliography key, second the data - typedef std::map InfoMap; - - /// Returns a vector of bibliography keys - 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 &); - - // rturn the year from the bibtex data record - string const getYear(InfoMap const & map, string const & key); - - /// return the short form of an authorlist - string const getAbbreviatedAuthor(InfoMap const & map, string const & key); - - // return only the family name - string const familyName(string const & name); - - /** Search a BibTeX info field for the given key and return the - associated field. */ - string const parseBibTeX(string data, 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, - the search criterion, - an iterator defining the starting point of the search, - an enum defining a Simple or Regex search, - an enum defining the search direction. - */ - - std::vector::const_iterator - searchKeys(InfoMap const & map, - std::vector const & keys_to_search, - string const & search_expression, - std::vector::const_iterator start, - Search, - Direction, - bool caseSensitive=false); - - /// Type returned by getCitationStyle, below - struct CitationStyle { - /// - CitationStyle() : style(CITE), full(false), forceUCase(false) {} - /// - CiteStyle style; - /// - bool full; - /// - 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); - - /** - "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, - 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, - InfoMap const & map, - std::vector const & styles); + bool full; + /// + bool forceUCase; +}; + + +/// Returns a vector of available Citation styles. +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(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(std::string const & key, + InfoMap const & map, + std::vector const & styles); + } // namespace biblio +} // namespace lyx #endif // BIBLIOHELPERS_H