]> git.lyx.org Git - lyx.git/blobdiff - src/output_plaintext.C
* output_plaintext.C: cosmetics in comment: line length cannot be < 0
[lyx.git] / src / output_plaintext.C
index 2327206b9f072a294e96c07cd245104aeec9bda2..4ffc0c655382b1ba8f151e127caa41bd32149591 100644 (file)
 #include "ParagraphParameters.h"
 
 #include "support/lstrings.h"
-#include "support/unicode.h"
 
-#include <fstream>
 
-using lyx::support::ascii_lowercase;
-using lyx::support::compare_ascii_no_case;
-using lyx::support::compare_no_case;
-using lyx::support::contains;
+namespace lyx {
+
+using support::ascii_lowercase;
+using support::compare_ascii_no_case;
+using support::compare_no_case;
+using support::contains;
+using support::FileName;
 
-using lyx::pos_type;
 using std::endl;
 using std::ostream;
-using std::ofstream;
 using std::pair;
 using std::string;
 
 
-void writeFileAscii(Buffer const & buf,
-                   string const & fname,
-                   OutputParams const & runparams)
+void writePlaintextFile(Buffer const & buf, FileName const & fname,
+       OutputParams const & runparams)
 {
-       ofstream ofs;
-       if (!::openFileWrite(ofs, fname))
+       odocfstream ofs;
+       if (!openFileWrite(ofs, fname))
                return;
-       writeFileAscii(buf, ofs, runparams);
+       writePlaintextFile(buf, ofs, runparams);
 }
 
 
-void writeFileAscii(Buffer const & buf, ostream & os,
+void writePlaintextFile(Buffer const & buf, odocstream & os,
        OutputParams const & runparams)
 {
        bool ref_printed = false;
@@ -60,7 +58,7 @@ void writeFileAscii(Buffer const & buf, ostream & os,
        ParagraphList::const_iterator end = par.end();
        ParagraphList::const_iterator it = beg;
        for (; it != end; ++it) {
-               asciiParagraph(buf, *it, os, runparams, ref_printed);
+               writePlaintextParagraph(buf, *it, os, runparams, ref_printed);
        }
        os << "\n";
 }
@@ -68,26 +66,26 @@ void writeFileAscii(Buffer const & buf, ostream & os,
 
 namespace {
 
-pair<int, string> const addDepth(int depth, int ldepth)
+pair<int, docstring> const addDepth(int depth, int ldepth)
 {
        int d = depth * 2;
        if (ldepth > depth)
                d += (ldepth - depth) * 2;
-       return make_pair(d, string(d, ' '));
+       return make_pair(d, docstring(d, ' '));
 }
 
 }
 
 
-void asciiParagraph(Buffer const & buf,
+void writePlaintextParagraph(Buffer const & buf,
                    Paragraph const & par,
-                   ostream & os,
+                   odocstream & os,
                    OutputParams const & runparams,
                    bool & ref_printed)
 {
        int ltype = 0;
-       Paragraph::depth_type ltype_depth = 0;
-       Paragraph::depth_type depth = par.params().depth();
+       depth_type ltype_depth = 0;
+       depth_type depth = par.params().depth();
 
        // First write the layout
        string const & tmp = par.layout()->name();
@@ -129,14 +127,14 @@ void asciiParagraph(Buffer const & buf,
 
        /* what about the alignment */
 
-       // runparams.linelen <= 0 is special and means we don't have paragraph breaks
+       // runparams.linelen == 0 is special and means we don't have paragraph breaks
 
        string::size_type currlinelen = 0;
 
        if (runparams.linelen > 0)
                os << "\n\n";
 
-       os << string(depth * 2, ' ');
+       os << docstring(depth * 2, ' ');
        currlinelen += depth * 2;
 
        //--
@@ -155,7 +153,7 @@ void asciiParagraph(Buffer const & buf,
                        os << _("Abstract") << "\n\n";
                        currlinelen = 0;
                } else {
-                       string const abst = _("Abstract: ");
+                       docstring const abst = _("Abstract: ");
                        os << abst;
                        currlinelen += abst.length();
                }
@@ -167,7 +165,7 @@ void asciiParagraph(Buffer const & buf,
                                os << _("References") << "\n\n";
                                currlinelen = 0;
                        } else {
-                               string const refs = _("References: ");
+                               docstring const refs = _("References: ");
                                os << refs;
                                currlinelen += refs.length();
                        }
@@ -176,7 +174,7 @@ void asciiParagraph(Buffer const & buf,
                break;
 
        default: {
-               string const label = par.params().labelString();
+               docstring const label = par.params().labelString();
                os << label << ' ';
                currlinelen += label.length() + 1;
                break;
@@ -185,7 +183,7 @@ void asciiParagraph(Buffer const & buf,
        }
 
        if (!currlinelen) {
-               pair<int, string> p = addDepth(depth, ltype_depth);
+               pair<int, docstring> p = addDepth(depth, ltype_depth);
                os << p.second;
                currlinelen += p.first;
        }
@@ -194,18 +192,16 @@ void asciiParagraph(Buffer const & buf,
        // intelligent hopefully! (only in the case where we have a
        // max runparams.linelength!) (Jug)
 
-       string word;
+       docstring word;
 
        for (pos_type i = 0; i < par.size(); ++i) {
-               lyx::char_type c = par.getUChar(buf.params(), i);
+               char_type c = par.getUChar(buf.params(), i);
                switch (c) {
                case Paragraph::META_INSET: {
                        InsetBase const * inset = par.getInset(i);
-                       if (runparams.linelen > 0) {
-                               os << word;
-                               currlinelen += word.length();
-                               word.erase();
-                       }
+                       os << word;
+                       currlinelen += word.length();
+                       word.erase();
                        OutputParams rp = runparams;
                        rp.depth = par.params().depth();
                        if (inset->plaintext(buf, os, rp)) {
@@ -218,8 +214,8 @@ void asciiParagraph(Buffer const & buf,
                case ' ':
                        if (runparams.linelen > 0 &&
                            currlinelen + word.length() > runparams.linelen - 10) {
-                               os << "\n";
-                               pair<int, string> p = addDepth(depth, ltype_depth);
+                               os << '\n';
+                               pair<int, docstring> p = addDepth(depth, ltype_depth);
                                os << p.second;
                                currlinelen = p.first;
                        }
@@ -230,23 +226,24 @@ void asciiParagraph(Buffer const & buf,
 
                case '\0':
                        lyxerr[Debug::INFO] <<
-                               "writeAsciiFile: NULL char in structure." << endl;
+                               "writePlaintextFile: NULL char in structure." << endl;
                        break;
 
-               default: {
-                       std::vector<char> const tmp = ucs4_to_utf8(c);
-                       word.append(tmp.begin(), tmp.end());
+               default:
+                       word += c;
                        if (runparams.linelen > 0 &&
                            currlinelen + word.length() > runparams.linelen)
                        {
-                               os << "\n";
-                               pair<int, string> p = addDepth(depth, ltype_depth);
+                               os << '\n';
+                               pair<int, docstring> p = addDepth(depth, ltype_depth);
                                os << p.second;
                                currlinelen = p.first;
                        }
                        break;
                }
-               }
        }
        os << word;
 }
+
+
+} // namespace lyx