1 /*
2  * gnote
3  *
4  * Copyright (C) 2014,2017 Aurimas Cernius
5  * Copyright (C) 2009 Hubert Figuiere
6  *
7  * Permission is hereby granted, free of charge, to any person obtaining a
8  * copy of this software and associated documentation files (the "Software"),
9  * to deal in the Software without restriction, including without limitation
10  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11  * and/or sell copies of the Software, and to permit persons to whom the
12  * Software is furnished to do so, subject to the following conditions:
13  *
14  * The above copyright notice and this permission notice shall be included in
15  * all copies or substantial portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23  * DEALINGS IN THE SOFTWARE.
24  */
25 
26 
27 
28 #ifndef __SHARP_STRING_HPP_
29 #define __SHARP_STRING_HPP_
30 
31 #include <vector>
32 
33 #include <glibmm/ustring.h>
34 
35 namespace sharp {
36 
37   /**
38    * replace the first instance of %what with %with
39    * in string %source and return the result
40    */
41   Glib::ustring string_replace_first(const Glib::ustring & source, const Glib::ustring & what,
42                                      const Glib::ustring & with);
43 
44   /**
45    * replace all instances of %what with %with
46    * in string %source and return the result
47    */
48   Glib::ustring string_replace_all(const Glib::ustring & source, const Glib::ustring & what,
49                                    const Glib::ustring & with);
50   /**
51    * regex replace in %source with matching %regex with %with
52    * and return a copy */
53   Glib::ustring string_replace_regex(const Glib::ustring & source, const Glib::ustring & regex,
54                                      const Glib::ustring & with);
55   bool string_match_iregex(const Glib::ustring & source, const Glib::ustring & regex);
56 
57   void string_split(std::vector<Glib::ustring> & split, const Glib::ustring & source,
58                     const Glib::ustring & delimiters);
59 
60   /** copy the substring for %source, starting at %start until the end */
61   Glib::ustring string_substring(const Glib::ustring & source, int start);
62   /** copy the substring for %source, starting at %start and running for %len */
63   Glib::ustring string_substring(const Glib::ustring & source, int start, int len);
64 
65   Glib::ustring string_trim(const Glib::ustring & source);
66   Glib::ustring string_trim(const Glib::ustring & source, const Glib::ustring & set_of_char);
67 
68   int string_last_index_of(const Glib::ustring & source, const Glib::ustring & search);
69 }
70 
71 
72 
73 #endif
74