-/// Substitute meta-variables in this string
-string const doSubstitution(InsetExternal::Params const & params,
- Buffer const * buffer, string const & s)
-{
- string result;
- string const buffer_path = buffer ? buffer->filePath() : string();
- string const filename = params.filename.outputFilename(buffer_path);
- string const basename = ChangeExtension(filename, string());
- string const filepath = OnlyPath(filename);
-
- result = subst(s, "$$FName", filename);
- result = subst(result, "$$Basename", basename);
- result = subst(result, "$$FPath", filepath);
- result = subst(result, "$$Tempname", params.tempname);
- result = subst(result, "$$Sysdir", system_lyxdir());
-
- // Handle the $$Contents(filename) syntax
- if (contains(result, "$$Contents(\"")) {
-
- string::size_type const pos = result.find("$$Contents(\"");
- string::size_type const end = result.find("\")", pos);
- string const file = result.substr(pos + 12, end - (pos + 12));
- string contents;
- if (buffer) {
- Path p(buffer->filePath());
- if (!IsFileReadable(file))
- Path p(buffer->tmppath);
- if (IsFileReadable(file))
- contents = GetFileContents(file);
- } else {
- contents = GetFileContents(file);
- }
- result = subst(result,
- ("$$Contents(\"" + file + "\")").c_str(),
- contents);
- }