DocBook: actually include files that are not properly understood (with automatic escaping), in comments.

This commit is contained in:
Thibaut Cuvelier 2020-07-31 20:16:18 +02:00
parent 44ef3fadee
commit ad08373ae2

View File

@ -1061,20 +1061,31 @@ void InsetInclude::docbook(XMLStream & xs, OutputParams const & rp) const
return; return;
} }
// We don't (yet) know how to Input or Include non-LyX files. // We don't know how to input or include non-LyX files. Input it as a comment.
// (If we wanted to get really arcane, we could run some tex2html
// converter on the included file. But that's just masochistic.)
FileName const included_file = includedFileName(buffer(), params()); FileName const included_file = includedFileName(buffer(), params());
if (!isLyXFileName(included_file.absFileName())) { if (!isLyXFileName(included_file.absFileName())) {
if (!rp.silent) if (!rp.silent)
frontend::Alert::warning(_("Unsupported Inclusion"), frontend::Alert::warning(_("Unsupported Inclusion"),
bformat(_("LyX does not know how to include non-LyX files when " bformat(_("LyX does not know how to process included non-LyX files when "
"generating DocBook output. Offending file:\n%1$s"), "generating DocBook output. The content of the file will be output as a "
"comment. Offending file:\n%1$s"),
ltrim(params()["filename"]))); ltrim(params()["filename"])));
return;
// Read the file, output it wrapped into comments.
xs << XMLStream::ESCAPE_NONE << "<!-- Included file: ";
xs << from_utf8(included_file.absFileName());
xs << XMLStream::ESCAPE_NONE << " -->";
xs << XMLStream::ESCAPE_NONE << "<!-- ";
xs << included_file.fileContents("UTF-8");
xs << XMLStream::ESCAPE_NONE << " -->";
xs << XMLStream::ESCAPE_NONE << "<!-- End of included file: ";
xs << from_utf8(included_file.absFileName());
xs << XMLStream::ESCAPE_NONE << " -->";
} }
// In the other cases, we will generate the HTML and include it. // In the other cases, we generate the DocBook version and include it.
Buffer const * const ibuf = loadIfNeeded(); Buffer const * const ibuf = loadIfNeeded();
if (!ibuf) if (!ibuf)
return; return;
@ -1092,12 +1103,11 @@ void InsetInclude::docbook(XMLStream & xs, OutputParams const & rp) const
op.par_begin = 0; op.par_begin = 0;
op.par_end = 0; op.par_end = 0;
ibuf->writeDocBookSource(xs.os(), op, Buffer::IncludedFile); ibuf->writeDocBookSource(xs.os(), op, Buffer::IncludedFile);
} else } else {
xs << XMLStream::ESCAPE_NONE xs << XMLStream::ESCAPE_NONE << "<!-- Included file: ";
<< "<!-- Included file: " xs << from_utf8(included_file.absFileName());
<< from_utf8(included_file.absFileName()) xs << XMLStream::ESCAPE_NONE << " -->";
<< XMLStream::ESCAPE_NONE }
<< " -->";
} }