diff options
author | vng <viktor.govako@gmail.com> | 2013-07-08 18:31:26 +0400 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 01:58:28 +0300 |
commit | d2d7828685ff9e9b8c2988c9efc69ed7b6af9923 (patch) | |
tree | 740de4ce1c9d93719aa7fcbb84d3e81395bd2244 /coding | |
parent | fa1ef920f82d84e8791562235b96ab797bd7219b (diff) |
Add my::GetFileExtension.
Diffstat (limited to 'coding')
-rw-r--r-- | coding/coding_tests/file_utils_test.cpp | 5 | ||||
-rw-r--r-- | coding/file_name_utils.cpp | 6 | ||||
-rw-r--r-- | coding/file_name_utils.hpp | 2 |
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); |