The branch, master, has been updated.

- Log -----------------------------------------------------------------

commit cd17d87e47d522c3c848a49ac63602a0a8a1b635
Author: Julien Rioux <[email protected]>
Date:   Mon Jan 14 17:26:55 2013 +0100

    Implement plain text export of BibTeX bibliography (fixes #8487).

diff --git a/src/insets/InsetBibtex.cpp b/src/insets/InsetBibtex.cpp
index 04d8d25..26f0de4 100644
--- a/src/insets/InsetBibtex.cpp
+++ b/src/insets/InsetBibtex.cpp
@@ -928,6 +928,54 @@ void InsetBibtex::validate(LaTeXFeatures & features) const
 }
 
 
+int InsetBibtex::plaintext(odocstream & os, OutputParams const &) const
+{
+       BiblioInfo bibinfo = buffer().masterBibInfo();
+       bibinfo.makeCitationLabels(buffer());
+       vector<docstring> const & cites = bibinfo.citedEntries();
+       CiteEngineType const engine_type = buffer().params().citeEngineType();
+       bool const numbers = (engine_type == ENGINE_TYPE_NUMERICAL);
+
+       docstring refoutput;
+       docstring const reflabel = buffer().B_("References");
+
+       refoutput += reflabel + "\n\n";
+
+       // Now we loop over the entries
+       vector<docstring>::const_iterator vit = cites.begin();
+       vector<docstring>::const_iterator const ven = cites.end();
+       for (; vit != ven; ++vit) {
+               BiblioInfo::const_iterator const biit = bibinfo.find(*vit);
+               if (biit == bibinfo.end())
+                       continue;
+               BibTeXInfo const & entry = biit->second;
+               docstring citekey;
+               if (numbers)
+                       citekey = entry.citeNumber();
+               else {
+                       docstring const auth = 
entry.getAbbreviatedAuthor(buffer(), false);
+                       // we do it this way so as to access the xref, if 
necessary
+                       // note that this also gives us the modifier
+                       docstring const year = bibinfo.getYear(*vit, buffer(), 
true);
+                       if (!auth.empty() && !year.empty())
+                               citekey = auth + ' ' + year;
+               }
+               if (citekey.empty()) {
+                       citekey = entry.label();
+                       if (citekey.empty())
+                               citekey = entry.key();
+               }
+               refoutput += "[" + citekey + "] ";
+               // FIXME Right now, we are calling BibInfo::getInfo on the key,
+               // which will give us all the cross-referenced info. But for 
every
+               // entry, so there's a lot of repitition. This should be fixed.
+               refoutput += bibinfo.getInfo(entry.key(), buffer(), false) + 
"\n\n";
+       }
+       os << refoutput;
+       return refoutput.size();
+}
+
+
 // FIXME
 // docstring InsetBibtex::entriesAsXHTML(vector<docstring> const & entries)
 // And then here just: entriesAsXHTML(buffer().masterBibInfo().citedEntries())
diff --git a/src/insets/InsetBibtex.h b/src/insets/InsetBibtex.h
index 3b85101..6883191 100644
--- a/src/insets/InsetBibtex.h
+++ b/src/insets/InsetBibtex.h
@@ -52,6 +52,8 @@ public:
        ///
        void latex(otexstream &, OutputParams const &) const;
        ///
+       int plaintext(odocstream &, OutputParams const &) const;
+       ///
        void collectBibKeys(InsetIterator const &) const;
        ///
        void validate(LaTeXFeatures &) const;

-----------------------------------------------------------------------

Summary of changes:
 src/insets/InsetBibtex.cpp |   48 ++++++++++++++++++++++++++++++++++++++++++++
 src/insets/InsetBibtex.h   |    2 +
 2 files changed, 50 insertions(+), 0 deletions(-)


hooks/post-receive
-- 
The LyX Source Repository

Reply via email to