diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2020-08-05 14:37:42 +0000 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2020-08-05 14:40:01 +0000 |
commit | 839f0fe0956cf4434b64e81a0966e780051901ad (patch) | |
tree | d7413e1f0bf42a42bfb83490e0e462b6dc8b6066 /src/libutil/split.hh | |
parent | 03f4fafc27bd9f8def1df6a229a17fc2c3f0e0a0 (diff) | |
parent | b91dc7ebad733f557dd812f285095b700c267fa2 (diff) |
Merge remote-tracking branch 'upstream/master' into misc-ca
Diffstat (limited to 'src/libutil/split.hh')
-rw-r--r-- | src/libutil/split.hh | 33 |
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; +} + +} |