#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/fs_extras.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 <boost/function.hpp>
-#include <boost/filesystem/operations.hpp>
-#include <boost/filesystem/path.hpp>
#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::rtrim;
-using support::isFileReadable;
-
-namespace fs = boost::filesystem;
-
-
// 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)
if (a.empty() || !*p)
return a;
- string::size_type r = a.find_last_not_of(p);
- string::size_type l = a.find_first_not_of(p);
+ size_t r = a.find_last_not_of(p);
+ size_t l = a.find_first_not_of(p);
// Is this the minimal test? (lgb)
if (r == string::npos && l == string::npos)
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];
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
// \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;
}
/*!
* 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 += '*';
/// return the number of arguments consumed
-typedef boost::function<int(string const &, string const &)> cmd_helper;
+typedef int (*cmd_helper)(string const &, string const &);
int parse_help(string const &, string const &)
cerr << "Missing syntaxfile string after -s switch" << endl;
exit(1);
}
- syntaxfile = arg;
+ syntaxfile = internal_path(arg);
return 1;
}
cerr << "Missing directory for -sysdir switch" << endl;
exit(1);
}
- cl_system_support = arg;
+ cl_system_support = internal_path(arg);
return 1;
}
cerr << "Missing directory for -userdir switch" << endl;
exit(1);
}
- cl_user_support = arg;
+ cl_user_support = internal_path(arg);
return 1;
}
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
* 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);
+ captionlayout = LayoutPtr(Layout::forCaption());
active_environments.push_back("document");
Context context(true, textclass);
/// 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()) {
} // anonymous namespace
-bool tex2lyx(string const &infilename, FileName const &outfilename)
+bool tex2lyx(string const & infilename, FileName const & outfilename)
{
- if (isFileReadable(outfilename)) {
+ if (outfilename.isReadableFile()) {
if (overwrite_files) {
cerr << "Overwriting existing file "
<< outfilename << endl;
int main(int argc, char * argv[])
{
using namespace lyx;
- fs::path::default_name_check(fs::no_check);
+
+ lyxerr.setStream(cerr);
easyParse(argc, argv);
return 2;
}
- lyx::support::os::init(argc, argv);
+ os::init(argc, argv);
- try { support::init_package(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);
}
-
+
// Now every known option is parsed. Look for input and output
// file name (the latter is optional).
- string const infilename = makeAbsPath(to_utf8(from_local8bit(argv[1]))).absFilename();
+ string infilename = internal_path(to_utf8(from_local8bit(argv[1])));
+ infilename = makeAbsPath(infilename).absFilename();
+
string outfilename;
if (argc > 2) {
- outfilename = to_utf8(from_local8bit(argv[2]));
+ outfilename = internal_path(to_utf8(from_local8bit(argv[2])));
if (outfilename != "-")
- outfilename = makeAbsPath(to_utf8(from_local8bit(argv[2]))).absFilename();
+ outfilename = makeAbsPath(outfilename).absFilename();
} 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);