#include "support/lyxlib.h"
#include "support/os.h"
#include "support/package.h"
+#include "support/unicode.h"
#include <boost/function.hpp>
#include <boost/filesystem/operations.hpp>
#include <vector>
#include <map>
+
+namespace lyx {
+
using std::endl;
using std::cout;
using std::cerr;
using std::vector;
using std::map;
-using lyx::support::ChangeExtension;
+using lyx::support::changeExtension;
using lyx::support::isStrUnsignedInt;
using lyx::support::ltrim;
-using lyx::support::MakeAbsPath;
-using lyx::support::OnlyPath;
+using lyx::support::makeAbsPath;
+using lyx::support::onlyPath;
using lyx::support::rtrim;
using lyx::support::isFileReadable;
namespace fs = boost::filesystem;
+IconvProcessor & utf8ToUcs4()
+{
+ static IconvProcessor iconv(ucs4_codeset, "UTF-8");
+ return iconv;
+}
+
+
// Hacks to allow the thing to link in the lyxlayout stuff
LyXErr lyxerr(std::cerr.rdbuf());
}
+bool noweb_mode = false;
+
+
namespace {
"\t-userdir dir try to set user directory to dir\n"
"\t-sysdir dir try to set system directory to dir\n"
"\t-c textclass declare the textclass\n"
+ "\t-n translate a noweb (aka literate programming) file.\n"
"\t-s syntaxfile read additional syntax file" << endl;
exit(0);
}
}
+int parse_noweb(string const &, string const &)
+{
+ noweb_mode = true;
+ return 0;
+}
+
+
void easyParse(int & argc, char * argv[])
{
map<string, cmd_helper> cmdmap;
cmdmap["-s"] = parse_syntaxfile;
cmdmap["-help"] = parse_help;
cmdmap["--help"] = parse_help;
+ cmdmap["-n"] = parse_noweb;
cmdmap["-sysdir"] = parse_sysdir;
cmdmap["-userdir"] = parse_userdir;
active_environments.push_back("document");
Context context(true, textclass);
parse_text(p, ss, FLAG_END, true, context);
+ if (Context::empty)
+ // Empty document body. LyX needs at least one paragraph.
+ context.check_layout(ss);
context.check_end_layout(ss);
ss << "\n\\end_body\n\\end_document\n";
active_environments.pop_back();
/// convert TeX from \p infilename to LyX and write it to \p os
bool tex2lyx(string const &infilename, std::ostream &os)
{
- BOOST_ASSERT(lyx::support::AbsolutePath(infilename));
+ BOOST_ASSERT(lyx::support::absolutePath(infilename));
ifstream is(infilename.c_str());
if (!is.good()) {
cerr << "Could not open input file \"" << infilename
return false;
}
string const oldParentFilePath = parentFilePath;
- parentFilePath = OnlyPath(infilename);
+ parentFilePath = onlyPath(infilename);
tex2lyx(is, os);
parentFilePath = oldParentFilePath;
return true;
return tex2lyx(infilename, os);
}
+} // namespace lyx
+
int main(int argc, char * argv[])
{
+ using namespace lyx;
fs::path::default_name_check(fs::no_check);
easyParse(argc, argv);
// Now every known option is parsed. Look for input and output
// file name (the latter is optional).
- string const infilename = MakeAbsPath(argv[1]);
+ string const infilename = makeAbsPath(argv[1]);
string outfilename;
if (argc > 2) {
outfilename = argv[2];
if (outfilename != "-")
- outfilename = MakeAbsPath(argv[2]);
+ outfilename = makeAbsPath(argv[2]);
} else
- outfilename = ChangeExtension(infilename, ".lyx");
+ outfilename = changeExtension(infilename, ".lyx");
- string const system_syntaxfile = lyx::support::LibFileSearch("", "syntax.default");
+ string const system_syntaxfile = lyx::support::libFileSearch("", "syntax.default");
if (system_syntaxfile.empty()) {
cerr << "Error: Could not find syntax file \"syntax.default\"." << endl;
exit(1);
if (!syntaxfile.empty())
read_syntaxfile(syntaxfile);
- masterFilePath = OnlyPath(infilename);
+ masterFilePath = onlyPath(infilename);
parentFilePath = masterFilePath;
if (outfilename == "-") {