}
-docstring const & BibTeXInfo::getValueForField(docstring const & field) const
+docstring const & BibTeXInfo::operator[](docstring const & field) const
{
BibTeXInfo::const_iterator it = find(field);
if (it != end())
}
-docstring const & BibTeXInfo::getValueForField(string const & field) const
+docstring const & BibTeXInfo::operator[](string const & field) const
{
- return getValueForField(from_ascii(field));
+ return operator[](from_ascii(field));
}
docstring const BibTeXInfo::getAbbreviatedAuthor() const
{
if (!is_bibtex_) {
- docstring const opt = trim(getValueForField("label"));
+ docstring const opt = trim(operator[]("label"));
if (opt.empty())
return docstring();
return authors;
}
- docstring author = getValueForField("author");
+ docstring author = operator[]("author");
if (author.empty()) {
- author = getValueForField("editor");
+ author = operator[]("editor");
if (author.empty())
return bib_key_;
}
docstring const BibTeXInfo::getYear() const
{
if (!is_bibtex_) {
- docstring const opt = trim(getValueForField("label"));
+ docstring const opt = trim(operator[]("label"));
if (opt.empty())
return docstring();
return year;
}
- docstring year = getValueForField("year");
+ docstring year = operator[]("year");
if (year.empty())
year = _("No year");
return year;
// field to customize the output based upon entry type.
// Search for all possible "required" fields
- docstring author = getValueForField("author");
+ docstring author = operator[]("author");
if (author.empty())
- author = getValueForField("editor");
+ author = operator[]("editor");
- docstring year = getValueForField("year");
- docstring title = getValueForField("title");
- docstring docLoc = getValueForField("pages");
+ docstring year = operator[]("year");
+ docstring title = operator[]("title");
+ docstring docLoc = operator[]("pages");
if (docLoc.empty()) {
- docLoc = getValueForField("chapter");
+ docLoc = operator[]("chapter");
if (!docLoc.empty())
docLoc = from_ascii("Ch. ") + docLoc;
} else {
docLoc = from_ascii("pp. ") + docLoc;
}
- docstring media = getValueForField("journal");
+ docstring media = operator[]("journal");
if (media.empty()) {
- media = getValueForField("publisher");
+ media = operator[]("publisher");
if (media.empty()) {
- media = getValueForField("school");
+ media = operator[]("school");
if (media.empty())
- media = getValueForField("institution");
+ media = operator[]("institution");
}
}
- docstring volume = getValueForField("volume");
+ docstring volume = operator[]("volume");
odocstringstream result;
if (!author.empty())
/// Class to represent information about a BibTeX or
/// bibliography entry.
+/// This class basically wraps a std::map, and many of its
+/// methods simply delegate to the corresponding methods of
+/// std::map.
class BibTeXInfo {
public:
/// The keys are BibTeX fields (e.g., author, title, etc),
BibTeXInfo(bool ib) : is_bibtex_(ib) {}
/// constructor that sets the entryType
BibTeXInfo(docstring const & key, docstring const & type);
- /// Search for the given field and return the associated info.
- /// The point of this is that BibTeXInfo::operator[] has no const
- /// form.
- docstring const & getValueForField(docstring const & field) const;
- ///
- docstring const & getValueForField(std::string const & field) const;
///
bool hasField(docstring const & field) const;
/// \return the short form of an authorlist
const_iterator find(docstring const & f) const { return bimap_.find(f); }
///
const_iterator end() const { return bimap_.end(); }
- ///
+ /// \return value for field f
+ /// note that this will create an empty field if it does not exist
docstring & operator[](docstring const & f)
{ return bimap_[f]; }
+ /// \return value for field f
+ /// this one, since it is const, will simply return docstring() if
+ /// we don't have the field and will NOT create an empty field
+ docstring const & operator[](docstring const & field) const;
+ ///
+ docstring const & operator[](std::string const & field) const;
///
docstring const & allData() const { return all_data_; }
///