Skip to content

Commit

Permalink
src: refactor SplitString in util
Browse files Browse the repository at this point in the history
  • Loading branch information
anonrig committed Jun 18, 2023
1 parent ff14b24 commit 8304083
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 22 deletions.
8 changes: 5 additions & 3 deletions src/node_options.cc
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,13 @@ void DebugOptions::CheckOptions(std::vector<std::string>* errors,
"`node --inspect-brk` instead.");
}

std::vector<std::string> destinations =
SplitString(inspect_publish_uid_string, ',');
std::vector<std::string_view> destinations =
SplitString(std::string_view(inspect_publish_uid_string.data(),
inspect_publish_uid_string.size()),
",");
inspect_publish_uid.console = false;
inspect_publish_uid.http = false;
for (const std::string& destination : destinations) {
for (const std::string_view destination : destinations) {
if (destination == "stderr") {
inspect_publish_uid.console = true;
} else if (destination == "http") {
Expand Down
5 changes: 3 additions & 2 deletions src/node_v8_platform-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,9 @@ struct V8Platform {
// Attach a new NodeTraceWriter only if this function hasn't been called
// before.
if (tracing_file_writer_.IsDefaultHandle()) {
std::vector<std::string> categories =
SplitString(per_process::cli_options->trace_event_categories, ',');
auto out = per_process::cli_options->trace_event_categories;
std::vector<std::string_view> categories =
SplitString(std::string_view(out.data(), out.size()), ",");

tracing_file_writer_ = tracing_agent_->AddClient(
std::set<std::string>(std::make_move_iterator(categories.begin()),
Expand Down
5 changes: 3 additions & 2 deletions src/permission/fs_permission.cc
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ namespace permission {
// allow = '*'
// allow = '/tmp/,/home/example.js'
void FSPermission::Apply(const std::string& allow, PermissionScope scope) {
for (const auto& res : SplitString(allow, ',')) {
for (const auto res :
SplitString(std::string_view(allow.data(), allow.size()), ",")) {
if (res == "*") {
if (scope == PermissionScope::kFileSystemRead) {
deny_all_in_ = false;
Expand All @@ -85,7 +86,7 @@ void FSPermission::Apply(const std::string& allow, PermissionScope scope) {
}
return;
}
GrantAccess(scope, res);
GrantAccess(scope, std::string(res.data(), res.size()));
}
}

Expand Down
26 changes: 14 additions & 12 deletions src/util.cc
Original file line number Diff line number Diff line change
Expand Up @@ -169,19 +169,21 @@ std::string GetHumanReadableProcessName() {
return SPrintF("%s[%d]", GetProcessTitle("Node.js"), uv_os_getpid());
}

std::vector<std::string> SplitString(const std::string& in,
char delim,
bool skipEmpty) {
std::vector<std::string> out;
if (in.empty())
return out;
std::istringstream in_stream(in);
while (in_stream.good()) {
std::string item;
std::getline(in_stream, item, delim);
if (item.empty() && skipEmpty) continue;
out.emplace_back(std::move(item));
std::vector<std::string_view> SplitString(const std::string_view in,
const std::string_view delim) {
std::vector<std::string_view> out;

for (auto first = in.data(), second = in.data(), last = first + in.size();
second != last && first != last;
first = second + 1) {
second =
std::find_first_of(first, last, std::cbegin(delim), std::cend(delim));

if (first != second) {
out.emplace_back(first, second - first);
}
}

return out;
}

Expand Down
5 changes: 2 additions & 3 deletions src/util.h
Original file line number Diff line number Diff line change
Expand Up @@ -685,9 +685,8 @@ struct FunctionDeleter {
template <typename T, void (*function)(T*)>
using DeleteFnPtr = typename FunctionDeleter<T, function>::Pointer;

std::vector<std::string> SplitString(const std::string& in,
char delim,
bool skipEmpty = true);
std::vector<std::string_view> SplitString(const std::string_view in,
const std::string_view delim);

inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
std::string_view str,
Expand Down

0 comments on commit 8304083

Please sign in to comment.