aboutsummaryrefslogtreecommitdiff
path: root/src/libutil/split.hh
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2020-08-05 14:37:42 +0000
committerJohn Ericson <John.Ericson@Obsidian.Systems>2020-08-05 14:40:01 +0000
commit839f0fe0956cf4434b64e81a0966e780051901ad (patch)
treed7413e1f0bf42a42bfb83490e0e462b6dc8b6066 /src/libutil/split.hh
parent03f4fafc27bd9f8def1df6a229a17fc2c3f0e0a0 (diff)
parentb91dc7ebad733f557dd812f285095b700c267fa2 (diff)
Merge remote-tracking branch 'upstream/master' into misc-ca
Diffstat (limited to 'src/libutil/split.hh')
-rw-r--r--src/libutil/split.hh33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/libutil/split.hh b/src/libutil/split.hh
new file mode 100644
index 000000000..d19d7d8ed
--- /dev/null
+++ b/src/libutil/split.hh
@@ -0,0 +1,33 @@
+#pragma once
+
+#include <optional>
+#include <string_view>
+
+#include "util.hh"
+
+namespace nix {
+
+// If `separator` is found, we return the portion of the string before the
+// separator, and modify the string argument to contain only the part after the
+// separator. Otherwise, wer return `std::nullopt`, and we leave the argument
+// string alone.
+static inline std::optional<std::string_view> splitPrefixTo(std::string_view & string, char separator) {
+ auto sepInstance = string.find(separator);
+
+ if (sepInstance != std::string_view::npos) {
+ auto prefix = string.substr(0, sepInstance);
+ string.remove_prefix(sepInstance+1);
+ return prefix;
+ }
+
+ return std::nullopt;
+}
+
+static inline bool splitPrefix(std::string_view & string, std::string_view prefix) {
+ bool res = hasPrefix(string, prefix);
+ if (res)
+ string.remove_prefix(prefix.length());
+ return res;
+}
+
+}