#include "Buffer.h"
#include "BufferParams.h"
#include "ConverterCache.h"
+#include "TextClass.h"
#include "Encoding.h"
#include "ErrorList.h"
#include "Format.h"
string const token_path("$$p");
string const token_orig_path("$$r");
string const token_orig_from("$$f");
+string const token_textclass("$$c");
+string const token_modules("$$m");
string const token_encoding("$$e");
string const token_latex_encoding("$$E");
string const token_python("$${python}");
}
+void Converter::setCommand(std::string const & command)
+{
+ command_ = subst(command, token_python, os::python());
+}
+
+
Converter const * Converters::getConverter(string const & from,
string const & to) const
{
return FAILURE;
}
- // buffer is only invalid for importing, and then runparams is not
+ // buffer can only be null for importing, and then runparams is not
// used anyway.
OutputParams runparams(buffer ? &buffer->params().encoding() : nullptr);
runparams.flavor = getFlavor(edgepath, buffer);
to_utf8(makeRelPath(from_utf8(outfile.absFileName()), from_utf8(path)));
string command = conv.command();
+ BufferParams const & bparams = buffer ? buffer->params() : defaultBufferParams();
command = subst(command, token_from, quoteName(infile2));
command = subst(command, token_base, quoteName(from_base));
command = subst(command, token_to, quoteName(outfile2));
command = subst(command, token_path, quoteName(onlyPath(infile.absFileName())));
command = subst(command, token_orig_path, quoteName(onlyPath(orig_from.absFileName())));
command = subst(command, token_orig_from, quoteName(onlyFileName(orig_from.absFileName())));
- command = subst(command, token_encoding, buffer ? buffer->params().encoding().iconvName() : string());
+ command = subst(command, token_textclass, quoteName(bparams.documentClass().name()));
+ string modules = bparams.getModules().asString();
+ // FIXME: remove when SystemCall uses QProcess with the list API.
+ // Currently the QProcess parser is not able to encode an
+ // empty argument as ""; work around this by passing a
+ // single comma, that will be interpreted as a list of two
+ // empty module names.
+ if (modules.empty())
+ modules = ",";
+ command = subst(command, token_modules, quoteName(modules));
+ command = subst(command, token_encoding, quoteName(bparams.encoding().iconvName()));
command = subst(command, token_python, os::python());
if (!conv.parselog().empty())