Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/coding
diff options
context:
space:
mode:
authorvng <viktor.govako@gmail.com>2013-07-08 18:31:26 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:58:28 +0300
commitd2d7828685ff9e9b8c2988c9efc69ed7b6af9923 (patch)
tree740de4ce1c9d93719aa7fcbb84d3e81395bd2244 /coding
parentfa1ef920f82d84e8791562235b96ab797bd7219b (diff)
Add my::GetFileExtension.
Diffstat (limited to 'coding')
-rw-r--r--coding/coding_tests/file_utils_test.cpp5
-rw-r--r--coding/file_name_utils.cpp6
-rw-r--r--coding/file_name_utils.hpp2
3 files changed, 13 insertions, 0 deletions
diff --git a/coding/coding_tests/file_utils_test.cpp b/coding/coding_tests/file_utils_test.cpp
index 73aa71c766..be81fa8f3f 100644
--- a/coding/coding_tests/file_utils_test.cpp
+++ b/coding/coding_tests/file_utils_test.cpp
@@ -6,6 +6,7 @@
UNIT_TEST(FileName_Smoke)
{
string name = "/Users/xxx/Documents/test.test";
+ TEST_EQUAL(my::GetFileExtension(name), ".test", ());
my::GetNameFromFullPath(name);
TEST_EQUAL(name, "test.test", ());
my::GetNameFromFullPath(name);
@@ -14,20 +15,24 @@ UNIT_TEST(FileName_Smoke)
TEST_EQUAL(name, "test", ());
name = "C:\\My Documents\\test.test";
+ TEST_EQUAL(my::GetFileExtension(name), ".test", ());
my::GetNameFromFullPath(name);
TEST_EQUAL(name, "test.test", ());
my::GetNameWithoutExt(name);
TEST_EQUAL(name, "test", ());
name = "/";
+ TEST_EQUAL(my::GetFileExtension(name), string(), ());
my::GetNameFromFullPath(name);
TEST(name.empty(), ());
name = "C:\\";
+ TEST_EQUAL(my::GetFileExtension(name), string(), ());
my::GetNameFromFullPath(name);
TEST(name.empty(), ());
name = "../test";
+ TEST_EQUAL(my::GetFileExtension(name), string(), ());
my::GetNameFromFullPath(name);
TEST_EQUAL(name, "test", ());
my::GetNameWithoutExt(name);
diff --git a/coding/file_name_utils.cpp b/coding/file_name_utils.cpp
index 4df9a29328..f1ddf046b4 100644
--- a/coding/file_name_utils.cpp
+++ b/coding/file_name_utils.cpp
@@ -11,6 +11,12 @@ void GetNameWithoutExt(string & name)
name.erase(i);
}
+string GetFileExtension(string const & name)
+{
+ size_t const pos = name.find_last_of("./\\");
+ return ((pos != string::npos && name[pos] == '.') ? name.substr(pos) : string());
+}
+
void GetNameFromFullPath(string & name)
{
string::size_type const i = name.find_last_of("/\\");
diff --git a/coding/file_name_utils.hpp b/coding/file_name_utils.hpp
index 6ce102f7d2..f45f9fcb91 100644
--- a/coding/file_name_utils.hpp
+++ b/coding/file_name_utils.hpp
@@ -7,6 +7,8 @@ namespace my
{
/// Remove extension from file name.
void GetNameWithoutExt(string & name);
+ /// @return File extension with the dot or empty string if no extension found.
+ string GetFileExtension(string const & name);
/// Get file name from full path.
void GetNameFromFullPath(string & name);