]> git.lyx.org Git - features.git/commitdiff
Improve argument handling for the source generation routines.
authorRichard Heck <rgheck@comcast.net>
Sat, 29 Oct 2011 20:14:48 +0000 (20:14 +0000)
committerRichard Heck <rgheck@comcast.net>
Sat, 29 Oct 2011 20:14:48 +0000 (20:14 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40069 a592a061-630c-0410-9148-cb99ea01b6c8

src/Buffer.cpp
src/Buffer.h
src/BufferList.cpp
src/graphics/PreviewLoader.cpp
src/insets/InsetInclude.cpp

index 794ae11b617958350920f622eb408b1e0be17389..0ffac77a6d0bf512a2133cb0ae4e8859ee112dc1 100644 (file)
@@ -1301,7 +1301,7 @@ bool Buffer::write(ostream & ofs) const
 bool Buffer::makeLaTeXFile(FileName const & fname,
                           string const & original_path,
                           OutputParams const & runparams_in,
-                          bool output_preamble, bool output_body) const
+                          OutputWhat output) const
 {
        OutputParams runparams = runparams_in;
 
@@ -1340,8 +1340,7 @@ bool Buffer::makeLaTeXFile(FileName const & fname,
 
        try {
                os.texrow().reset();
-               writeLaTeXSource(os, original_path,
-                     runparams, output_preamble, output_body);
+               writeLaTeXSource(os, original_path, runparams, output);
        }
        catch (EncodingException & e) {
                odocstringstream ods;
@@ -1386,7 +1385,7 @@ bool Buffer::makeLaTeXFile(FileName const & fname,
 void Buffer::writeLaTeXSource(otexstream & os,
                           string const & original_path,
                           OutputParams const & runparams_in,
-                          bool const output_preamble, bool const output_body) const
+         OutputWhat output) const
 {
        // The child documents, if any, shall be already loaded at this point.
 
@@ -1401,6 +1400,11 @@ void Buffer::writeLaTeXSource(otexstream & os,
        validate(features);
        LYXERR(Debug::LATEX, "  Buffer validation done.");
 
+       bool const output_preamble =
+               output == FullSource || output == OnlyPreamble;
+       bool const output_body =
+         output == FullSource || output == OnlyBody;
+
        // The starting paragraph of the coming rows is the
        // first paragraph of the document. (Asger)
        if (output_preamble && runparams.nice) {
@@ -1562,7 +1566,7 @@ void Buffer::writeLaTeXSource(otexstream & os,
 
 void Buffer::makeDocBookFile(FileName const & fname,
                              OutputParams const & runparams,
-                             bool const body_only) const
+                             OutputWhat output) const
 {
        LYXERR(Debug::LATEX, "makeDocBookFile...");
 
@@ -1575,7 +1579,7 @@ void Buffer::makeDocBookFile(FileName const & fname,
        updateBuffer();
        updateMacroInstances(OutputUpdate);
 
-       writeDocBookSource(ofs, fname.absFileName(), runparams, body_only);
+       writeDocBookSource(ofs, fname.absFileName(), runparams, output);
 
        ofs.close();
        if (ofs.fail())
@@ -1585,7 +1589,7 @@ void Buffer::makeDocBookFile(FileName const & fname,
 
 void Buffer::writeDocBookSource(odocstream & os, string const & fname,
                             OutputParams const & runparams,
-                            bool const only_body) const
+                            OutputWhat output) const
 {
        LaTeXFeatures features(*this, params(), runparams);
        validate(features);
@@ -1595,7 +1599,12 @@ void Buffer::writeDocBookSource(odocstream & os, string const & fname,
        DocumentClass const & tclass = params().documentClass();
        string const top_element = tclass.latexname();
 
-       if (!only_body) {
+       bool const output_preamble =
+               output == FullSource || output == OnlyPreamble;
+       bool const output_body =
+         output == FullSource || output == OnlyBody;
+
+       if (output_preamble) {
                if (runparams.flavor == OutputParams::XML)
                        os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
 
@@ -1670,7 +1679,7 @@ void Buffer::makeLyXHTMLFile(FileName const & fname,
        updateBuffer(UpdateMaster, OutputUpdate);
        updateMacroInstances(OutputUpdate);
 
-       writeLyXHTMLSource(ofs, runparams);
+       writeLyXHTMLSource(ofs, runparams, FullSource);
 
        ofs.close();
        if (ofs.fail())
@@ -1680,13 +1689,18 @@ void Buffer::makeLyXHTMLFile(FileName const & fname,
 
 void Buffer::writeLyXHTMLSource(odocstream & os,
                             OutputParams const & runparams,
-                            bool const only_body) const
+                            OutputWhat output) const
 {
        LaTeXFeatures features(*this, params(), runparams);
        validate(features);
        d->bibinfo_.makeCitationLabels(*this);
 
-       if (!only_body) {
+       bool const output_preamble =
+               output == FullSource || output == OnlyPreamble;
+       bool const output_body =
+         output == FullSource || output == OnlyBody;
+
+       if (output_preamble) {
                os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
                   << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN\" \"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd\">\n"
                   // FIXME Language should be set properly.
@@ -1734,7 +1748,7 @@ void Buffer::writeLyXHTMLSource(odocstream & os,
        XHTMLStream xs(os);
        params().documentClass().counters().reset();
        xhtmlParagraphs(text(), *this, xs, runparams);
-       if (!only_body)
+       if (output_preamble)
                os << "</body>\n</html>\n";
 }
 
@@ -3180,13 +3194,13 @@ void Buffer::getSourceCode(odocstream & os, string const format,
                d->texrow.newline();
                d->texrow.newline();
                if (params().isDocBook())
-                       writeDocBookSource(os, absFileName(), runparams, false);
+                       writeDocBookSource(os, absFileName(), runparams, FullSource);
                else if (runparams.flavor == OutputParams::HTML)
-                       writeLyXHTMLSource(os, runparams, false);
+                       writeLyXHTMLSource(os, runparams, FullSource);
                else {
                        // latex or literate
                        otexstream ots(os, d->texrow);
-                       writeLaTeXSource(ots, string(), runparams, true, true);
+                       writeLaTeXSource(ots, string(), runparams, FullSource);
                }
        } else {
                runparams.par_begin = par_begin;
index f7cc714c6d45b74805f1b612426fcab012b9624b..3a042989cb09dc9a59651f448c6d9f79127c76c1 100644 (file)
@@ -285,12 +285,17 @@ public:
        /// Fill in the ErrorList with the TeXErrors
        void bufferErrors(TeXErrors const &, ErrorList &) const;
 
+       enum OutputWhat {
+               FullSource,
+               OnlyBody,
+               OnlyPreamble
+       };
+
        /// Just a wrapper for writeLaTeXSource, first creating the ofstream.
        bool makeLaTeXFile(support::FileName const & filename,
                           std::string const & original_path,
                           OutputParams const &,
-                          bool output_preamble = true,
-                          bool output_body = true) const;
+                          OutputWhat output = FullSource) const;
        /** Export the buffer to LaTeX.
            If \p os is a file stream, and params().inputenc is "auto" or
            "default", and the buffer contains text in different languages
@@ -316,23 +321,22 @@ public:
        void writeLaTeXSource(otexstream & os,
                           std::string const & original_path,
                           OutputParams const &,
-                          bool output_preamble = true,
-                          bool output_body = true) const;
+                          OutputWhat output = FullSource) const;
        ///
        void makeDocBookFile(support::FileName const & filename,
                             OutputParams const & runparams_in,
-                            bool only_body = false) const;
+                            OutputWhat output = FullSource) const;
        ///
        void writeDocBookSource(odocstream & os, std::string const & filename,
                             OutputParams const & runparams_in,
-                            bool only_body = false) const;
+                            OutputWhat output = FullSource) const;
        ///
        void makeLyXHTMLFile(support::FileName const & filename,
                             OutputParams const & runparams_in) const;
        ///
        void writeLyXHTMLSource(odocstream & os,
                             OutputParams const & runparams_in,
-                            bool only_body = false) const;
+                            OutputWhat output = FullSource) const;
        /// returns the main language for the buffer (document)
        Language const * language() const;
        /// get l10n translated to the buffers language
index e19c8aa63d3f86523e7da5f4609fef018c28cb82..5143c1312666886941c88c782148ffde38847ce4 100644 (file)
@@ -213,7 +213,7 @@ void BufferList::updateIncludedTeXfiles(string const & masterTmpDir,
                if (!(*it)->isDepClean(masterTmpDir)) {
                        string writefile = addName(masterTmpDir, (*it)->latexName());
                        (*it)->makeLaTeXFile(FileName(writefile), masterTmpDir,
-                                            runparams, false);
+                                            runparams, Buffer::OnlyBody);
                        (*it)->markDepClean(masterTmpDir);
                }
        }
index 6b6e1bad7173a32322661cf5671a06aab695dd37..26c9b3c977d04f192359d4259e0ca16f3add424a 100644 (file)
@@ -716,7 +716,7 @@ void PreviewLoader::Impl::dumpPreamble(otexstream & os) const
        runparams.nice = true;
        runparams.moving_arg = true;
        runparams.free_spacing = true;
-       buffer_.writeLaTeXSource(os, buffer_.filePath(), runparams, true, false);
+       buffer_.writeLaTeXSource(os, buffer_.filePath(), runparams, Buffer::OnlyPreamble);
 
        // FIXME! This is a HACK! The proper fix is to control the 'true'
        // passed to WriteStream below:
index 42b4d8f652f424297ebf19d625f8d0d231b5457a..e7f9da374754862e4fdaee973b0b4ec7365c7229 100644 (file)
@@ -624,7 +624,7 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const
                runparams.par_begin = 0;
                runparams.par_end = tmp->paragraphs().size();
                if (!tmp->makeLaTeXFile(tmpwritefile, masterFileName(buffer()).
-                               onlyPath().absFileName(), runparams, false)) {
+                               onlyPath().absFileName(), runparams, Buffer::OnlyBody)) {
                        docstring msg = bformat(_("Included file `%1$s' "
                                        "was not exported correctly.\nWarning: "
                                        "LaTeX export is probably incomplete."),
@@ -793,7 +793,7 @@ docstring InsetInclude::xhtml(XHTMLStream & xs, OutputParams const & rp) const
        if (all_pars) {
                op.par_begin = 0;
                op.par_end = 0;
-               ibuf->writeLyXHTMLSource(xs.os(), op, true);
+               ibuf->writeLyXHTMLSource(xs.os(), op, Buffer::OnlyBody);
        } else
                xs << XHTMLStream::ESCAPE_NONE 
                   << "<!-- Included file: " 
@@ -863,7 +863,7 @@ int InsetInclude::docbook(odocstream & os, OutputParams const & runparams) const
                LYXERR(Debug::LATEX, "exportfile:" << exportfile);
                LYXERR(Debug::LATEX, "writefile:" << writefile);
 
-               tmp->makeDocBookFile(writefile, runparams, true);
+               tmp->makeDocBookFile(writefile, runparams, Buffer::OnlyBody);
        }
 
        runparams.exportdata->addExternalFile("docbook", writefile,