本文整理汇总了C++中FilePath::stem方法的典型用法代码示例。如果您正苦于以下问题:C++ FilePath::stem方法的具体用法?C++ FilePath::stem怎么用?C++ FilePath::stem使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FilePath
的用法示例。
在下文中一共展示了FilePath::stem方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: readPresentation
bool readPresentation(SlideDeck* pSlideDeck,
std::string* pSlides,
std::string* pInitActions,
std::string* pSlideActions,
std::map<std::string,std::string>* pVars,
std::string* pErrMsg)
{
// look for slides and knit if we need to
FilePath rmdFile = presentation::state::filePath();
std::string ext = rmdFile.extensionLowerCase();
if (rmdFile.exists() && (ext != ".md"))
{
if (!performKnit(rmdFile, pErrMsg))
return false;
}
// look for slides markdown
FilePath slidesFile = rmdFile.parent().childPath(rmdFile.stem() + ".md");
if (!slidesFile.exists())
{
*pErrMsg = slidesFile.absolutePath() + " not found";
return false;
}
// parse the slides
Error error = pSlideDeck->readSlides(slidesFile);
if (error)
{
LOG_ERROR(error);
*pErrMsg = error.summary();
return false;
}
// render the slides
std::string revealConfig;
error = presentation::renderSlides(*pSlideDeck,
pSlides,
&revealConfig,
pInitActions,
pSlideActions);
if (error)
{
LOG_ERROR(error);
*pErrMsg = error.summary();
return false;
}
// build template variables
std::map<std::string,std::string>& vars = *pVars;
vars["title"] = pSlideDeck->title();
vars["slides"] = *pSlides;
vars["slides_css"] = resourceFiles().get("presentation/slides.css");
vars["r_highlight"] = resourceFiles().get("r_highlight.html");
vars["reveal_config"] = revealConfig;
vars["preamble"] = pSlideDeck->preamble();
return true;
}
示例2: mergeDicDeltaFile
Error mergeDicDeltaFile(const FilePath& dicDeltaPath)
{
// determine whether we are going to support affixes -- we do this for
// english only right now because we can correctly (by inspection) map
// the chromium numeric affix indicators (6 and 7) to the right
// hunspell example words. it's worth investigating whether we can do
// this for other languages as well
bool addAffixes = boost::algorithm::starts_with(dicDeltaPath.stem(),
"en_");
// read the file and strip the BOM
std::string contents;
Error error = core::readStringFromFile(dicDeltaPath, &contents);
if (error)
return error;
core::stripBOM(&contents);
// split into lines
std::vector<std::string> lines;
boost::algorithm::split(lines,
contents,
boost::algorithm::is_any_of("\n"));
// parse lines for words
bool added;
std::string word, affix, example;
BOOST_FOREACH(const std::string& line, lines)
{
if (parseDicDeltaLine(line, &word, &affix))
{
example = exampleWordForEnglishAffix(affix);
if (!example.empty() && addAffixes)
{
Error error = addWordWithAffix(word, example, &added);
if (error)
LOG_ERROR(error);
}
else
{
Error error = addWord(word, &added);
if (error)
LOG_ERROR(error);
}
}
}
return Success();
}
示例3: rs_pathInfo
SEXP rs_pathInfo(SEXP pathSEXP)
{
try
{
// validate
if (r::sexp::length(pathSEXP) != 1)
{
throw r::exec::RErrorException(
"must pass a single file to get path info for");
}
std::string path;
Error error = r::sexp::extract(pathSEXP, &path);
if (error)
throw r::exec::RErrorException(r::endUserErrorMessage(error));
// resolve aliased path
FilePath filePath = module_context::resolveAliasedPath(path);
if (filePath.empty())
throw r::exec::RErrorException("invalid path: " + path);
// create path info vector (use json repsesentation to force convertion
// to VECSXP rather than STRSXP)
json::Object pathInfo;
pathInfo["path"] = filePath.absolutePath();
std::string parent = filePath.absolutePath();
FilePath parentPath = filePath.parent();
if (!parentPath.empty())
parent = parentPath.absolutePath();
pathInfo["directory"] = parent;
pathInfo["name"] = filePath.filename();
pathInfo["stem"] = filePath.stem();
pathInfo["extension"] = filePath.extension();
// return it
r::sexp::Protect rProtect;
return r::sexp::create(pathInfo, &rProtect);
}
catch(r::exec::RErrorException e)
{
r::exec::error(e.message());
}
CATCH_UNEXPECTED_EXCEPTION
return R_NilValue;
}
示例4: add
Error HunspellCustomDictionaries::add(const FilePath& dicPath) const
{
// validate .dic extension
if (!dicPath.hasExtensionLowerCase(".dic"))
{
return systemError(boost::system::errc::invalid_argument,
ERROR_LOCATION);
}
// remove existing with same name
std::string name = dicPath.stem();
Error error = remove(name);
if (error)
LOG_ERROR(error);
// add it
return dicPath.copy(dictionaryPath(name));
}
示例5: forwardSearch
Error forwardSearch(const FilePath& rootFile,
const json::Object& sourceLocation,
json::Value* pPdfLocation)
{
// read params
std::string file;
int line, column;
bool fromClick;
Error error = json::readObject(sourceLocation,
"file", &file,
"line", &line,
"column", &column,
"from_click", &fromClick);
if (error)
return error;
// determine input file
FilePath inputFile = module_context::resolveAliasedPath(file);
// determine pdf
FilePath pdfFile = rootFile.parent().complete(rootFile.stem() + ".pdf");
core::tex::Synctex synctex;
if (synctex.parse(pdfFile))
{
core::tex::SourceLocation srcLoc(inputFile, line, column);
applyForwardConcordance(rootFile, &srcLoc);
core::tex::PdfLocation pdfLoc = synctex.forwardSearch(srcLoc);
*pPdfLocation = toJson(pdfFile, pdfLoc, fromClick);
}
else
{
*pPdfLocation = json::Value();
}
return Success();
}
示例6: init
void init(const FilePath& targetFilePath)
{
basePath_ = targetFilePath.parent().childPath(
targetFilePath.stem()).absolutePath();
}
示例7: ancillaryFilePath
FilePath ancillaryFilePath(const FilePath& texFilePath, const std::string& ext)
{
return texFilePath.parent().childPath(texFilePath.stem() + ext);
}
示例8: createSshKey
Error createSshKey(const json::JsonRpcRequest& request,
json::JsonRpcResponse* pResponse)
{
std::string path, type, passphrase;
bool overwrite;
Error error = json::readObjectParam(request.params, 0,
"path", &path,
"type", &type,
"passphrase", &passphrase,
"overwrite", &overwrite);
if (error)
return error;
#ifdef RSTUDIO_SERVER
// In server mode, passphrases are encrypted
using namespace rstudio::core::system::crypto;
error = rsaPrivateDecrypt(passphrase, &passphrase);
if (error)
return error;
#endif
// resolve key path
FilePath sshKeyPath = module_context::resolveAliasedPath(path);
FilePath sshPublicKeyPath = sshKeyPath.parent().complete(
sshKeyPath.stem() + ".pub");
if (sshKeyPath.exists() || sshPublicKeyPath.exists())
{
if (!overwrite)
{
json::Object resultJson;
resultJson["failed_key_exists"] = true;
pResponse->setResult(resultJson);
return Success();
}
else
{
Error error = sshKeyPath.removeIfExists();
if (error)
return error;
error = sshPublicKeyPath.removeIfExists();
if (error)
return error;
}
}
// compose a shell command to create the key
shell_utils::ShellCommand cmd("ssh-keygen");
// type
cmd << "-t" << type;
// passphrase (optional)
cmd << "-N";
if (!passphrase.empty())
cmd << passphrase;
else
cmd << std::string("");
// path
cmd << "-f" << sshKeyPath;
// process options
core::system::ProcessOptions options;
// detach the session so there is no terminal
#ifndef _WIN32
options.detachSession = true;
#endif
// customize the environment on Win32
#ifdef _WIN32
core::system::Options childEnv;
core::system::environment(&childEnv);
// set HOME to USERPROFILE
std::string userProfile = core::system::getenv(childEnv, "USERPROFILE");
core::system::setenv(&childEnv, "HOME", userProfile);
// add msys_ssh to path
core::system::addToPath(&childEnv,
session::options().msysSshPath().absolutePath());
options.environment = childEnv;
#endif
// run it
core::system::ProcessResult result;
error = runCommand(shell_utils::sendStdErrToStdOut(cmd),
options,
&result);
if (error)
return error;
// return exit code and output
json::Object resultJson;
resultJson["failed_key_exists"] = false;
resultJson["exit_status"] = result.exitStatus;
resultJson["output"] = result.stdOut;
pResponse->setResult(resultJson);
return Success();
//.........这里部分代码省略.........