From 44b929bb1611ce98e926b2f4846565338f344d48 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 21 Aug 2019 12:10:34 +0200 Subject: Add sanitize_identifier() utility function --- libbutl/utility.mxx | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'libbutl/utility.mxx') diff --git a/libbutl/utility.mxx b/libbutl/utility.mxx index 8085e79..03fb89e 100644 --- a/libbutl/utility.mxx +++ b/libbutl/utility.mxx @@ -186,6 +186,15 @@ LIBBUTL_MODEXPORT namespace butl next_word (const std::string&, std::size_t n, std::size_t& b, std::size_t& e, char d1 = ' ', char d2 = '\0'); + // Sanitize a string to only contain characters valid in an identifier + // (ASCII alphanumeric plus `_`) replacing all others with `_`. + // + // Note that it doesn't make sure the first character is not a digit. + // + std::string& sanitize_identifier (std::string&); + std::string sanitize_identifier (std::string&&); + std::string sanitize_identifier (const std::string&); + // If an input stream is in a failed state, then return true if this is // because of the eof and throw istream::failure otherwise. If the stream // is not in a failed state, return false. This helper function is normally -- cgit v1.1