MCPcopy Create free account
hub / github.com/JeremyBYU/polylidar / ParseArgumentToken

Method ParseArgumentToken

src/Python/polylidar_pybind/docstring/docstring.cpp:482–520  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

480}
481
482ArgumentDoc FunctionDoc::ParseArgumentToken(const std::string& argument_token)
483{
484 ArgumentDoc argument_doc;
485
486 // Argument with default value
487 std::regex rgx_with_default("([A-Za-z_][A-Za-z\\d_]*): "
488 "([A-Za-z_][A-Za-z\\d_:\\.\\[\\]\\(\\) ,]*) = (.*)");
489 std::smatch matches;
490 if (std::regex_search(argument_token, matches, rgx_with_default))
491 {
492 argument_doc.name_ = matches[1].str();
493 argument_doc.type_ = NamespaceFix(matches[2].str());
494 argument_doc.default_ = matches[3].str();
495
496 // Handle long default value. Long default has multiple lines and thus
497 // they are not displayed in signature, but in docstrings.
498 size_t default_start_pos = matches.position(3);
499 if (default_start_pos + argument_doc.default_.size() < argument_token.size())
500 {
501 argument_doc.long_default_ =
502 argument_token.substr(default_start_pos, argument_token.size() - default_start_pos);
503 argument_doc.default_ = "(with default value)";
504 }
505 }
506
507 else
508 {
509 // Argument without default value
510 std::regex rgx_without_default("([A-Za-z_][A-Za-z\\d_]*): "
511 "([A-Za-z_][A-Za-z\\d_:\\.\\[\\]\\(\\) ,]*)");
512 if (std::regex_search(argument_token, matches, rgx_without_default))
513 {
514 argument_doc.name_ = matches[1].str();
515 argument_doc.type_ = NamespaceFix(matches[2].str());
516 }
517 }
518
519 return argument_doc;
520}
521
522std::vector<std::string> FunctionDoc::GetArgumentTokens(const std::string& pybind_doc)
523{

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected