]> git.lyx.org Git - lyx.git/blobdiff - src/tex2lyx/tex2lyx.cpp
* src/insets/InsetNote.h:
[lyx.git] / src / tex2lyx / tex2lyx.cpp
index fa0dc3ecf077a2e08ebf4a7dcf2bcdb48c3cd893..6890b370c823fe0c1bf8ce3c00fdf5cf49df2206 100644 (file)
 #include "tex2lyx.h"
 #include "Context.h"
 
-#include "debug.h"
 #include "TextClass.h"
 #include "Layout.h"
 
 #include "support/convert.h"
+#include "support/debug.h"
+#include "support/ExceptionMessage.h"
 #include "support/filetools.h"
 #include "support/lstrings.h"
-#include "support/lyxlib.h"
-#include "support/ExceptionMessage.h"
 #include "support/os.h"
 #include "support/Package.h"
-#include "support/unicode.h"
 
 #include <fstream>
 #include <iostream>
 #include <vector>
 #include <map>
 
+using namespace std;
+using namespace lyx::support;
+using namespace lyx::support::os;
 
 namespace lyx {
 
-using std::endl;
-using std::cout;
-using std::cerr;
-using std::getline;
-
-using std::ifstream;
-using std::ofstream;
-using std::istringstream;
-using std::ostringstream;
-using std::stringstream;
-using std::string;
-using std::vector;
-using std::map;
-
-using support::changeExtension;
-using support::FileName;
-using support::isStrUnsignedInt;
-using support::ltrim;
-using support::makeAbsPath;
-using support::onlyPath;
-using support::os::internal_path;
-using support::rtrim;
-
-LayoutPtr captionlayout;
-
 // Hacks to allow the thing to link in the lyxlayout stuff
-LyXErr lyxerr(std::cerr.rdbuf());
+LayoutPtr captionlayout;
 
 
 string const trim(string const & a, char const * p)
@@ -99,7 +75,7 @@ void split(string const & s, vector<string> & result, char delim)
 string join(vector<string> const & input, char const * delim)
 {
        ostringstream os;
-       for (size_t i = 0; i < input.size(); ++i) {
+       for (size_t i = 0; i != input.size(); ++i) {
                if (i)
                        os << delim;
                os << input[i];
@@ -134,7 +110,7 @@ CommandMap known_math_environments;
 
 
 void add_known_command(string const & command, string const & o1,
-                      bool o2)
+       unsigned optionalsNum)
 {
        // We have to handle the following cases:
        // definition                      o1    o2    invocation result
@@ -143,14 +119,14 @@ void add_known_command(string const & command, string const & o1,
        // \newcommand{\foo}[1][]{bar #1}  "[1]" true  \foo       bar
        // \newcommand{\foo}[1][]{bar #1}  "[1]" true  \foo[x]    bar x
        // \newcommand{\foo}[1][x]{bar #1} "[1]" true  \foo[x]    bar x
+       // and the same with \newlyxcommand
        unsigned int nargs = 0;
        vector<ArgumentType> arguments;
        string const opt1 = rtrim(ltrim(o1, "["), "]");
        if (isStrUnsignedInt(opt1)) {
                // The command has arguments
                nargs = convert<unsigned int>(opt1);
-               if (nargs > 0 && o2) {
-                       // The first argument is optional
+               for (unsigned int i = 0; i < optionalsNum; ++i) {
                        arguments.push_back(optional);
                        --nargs;
                }
@@ -170,7 +146,8 @@ namespace {
 /*!
  * Read one command definition from the syntax file
  */
-void read_command(Parser & p, string command, CommandMap & commands) {
+void read_command(Parser & p, string command, CommandMap & commands)
+{
        if (p.next_token().asInput() == "*") {
                p.get_token();
                command += '*';
@@ -362,7 +339,7 @@ void easyParse(int & argc, char * argv[])
        cmdmap["-userdir"] = parse_userdir;
 
        for (int i = 1; i < argc; ++i) {
-               std::map<string, cmd_helper>::const_iterator it
+               map<string, cmd_helper>::const_iterator it
                        = cmdmap.find(argv[i]);
 
                // don't complain if not found - may be parsed later
@@ -414,13 +391,14 @@ namespace {
  *  You must ensure that \p parentFilePath is properly set before calling
  *  this function!
  */
-void tex2lyx(std::istream & is, std::ostream & os)
+void tex2lyx(istream & is, ostream & os)
 {
        Parser p(is);
        //p.dump();
 
        stringstream ss;
-       TextClass textclass = parse_preamble(p, ss, documentclass);
+       TeX2LyXDocClass textclass;
+       parse_preamble(p, ss, documentclass, textclass);
        captionlayout = LayoutPtr(Layout::forCaption());
 
        active_environments.push_back("document");
@@ -445,7 +423,7 @@ void tex2lyx(std::istream & is, std::ostream & os)
 
 
 /// convert TeX from \p infilename to LyX and write it to \p os
-bool tex2lyx(FileName const & infilename, std::ostream & os)
+bool tex2lyx(FileName const & infilename, ostream & os)
 {
        ifstream is(infilename.toFilesystemEncoding().c_str());
        if (!is.good()) {
@@ -497,6 +475,8 @@ int main(int argc, char * argv[])
 {
        using namespace lyx;
 
+       lyxerr.setStream(cerr);
+
        easyParse(argc, argv);
 
        if (argc <= 1) {
@@ -505,15 +485,15 @@ int main(int argc, char * argv[])
                return 2;
        }
 
-       lyx::support::os::init(argc, argv);
+       os::init(argc, argv);
 
-       try { support::init_package(internal_path(to_utf8(from_local8bit(argv[0]))),
+       try { init_package(internal_path(to_utf8(from_local8bit(argv[0]))),
                cl_system_support, cl_user_support,
-               support::top_build_dir_is_two_levels_up);
-       } catch (support::ExceptionMessage const & message) {
+               top_build_dir_is_two_levels_up);
+       } catch (ExceptionMessage const & message) {
                cerr << to_utf8(message.title_) << ":\n"
                        << to_utf8(message.details_) << endl;
-               if (message.type_ == support::ErrorException)
+               if (message.type_ == ErrorException)
                        exit(1);
        }
        
@@ -530,7 +510,7 @@ int main(int argc, char * argv[])
        } else
                outfilename = changeExtension(infilename, ".lyx");
 
-       FileName const system_syntaxfile = lyx::support::libFileSearch("", "syntax.default");
+       FileName const system_syntaxfile = libFileSearch("", "syntax.default");
        if (system_syntaxfile.empty()) {
                cerr << "Error: Could not find syntax file \"syntax.default\"." << endl;
                exit(1);