Skip to content

Commit a706d4b

Browse files
committed
fix(Filename): expand predefined folders
1 parent 8cb77bd commit a706d4b

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

include/geode/basic/filename.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,7 @@ namespace geode
4141

4242
absl::string_view opengeode_basic_api extension_from_filename(
4343
absl::string_view filename );
44+
45+
std::string opengeode_basic_api expand_predefined_folders(
46+
absl::string_view path );
4447
} // namespace geode

include/geode/basic/io.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include <absl/strings/string_view.h>
2828

2929
#include <geode/basic/common.h>
30+
#include <geode/basic/filename.h>
3031
#include <geode/basic/logger.h>
3132

3233
namespace geode
@@ -42,10 +43,13 @@ namespace geode
4243
}
4344

4445
protected:
45-
IOFile( absl::string_view filename ) : filename_( filename ) {}
46+
IOFile( absl::string_view filename )
47+
: filename_( expand_predefined_folders( filename ) )
48+
{
49+
}
4650

4751
private:
48-
absl::string_view filename_;
52+
std::string filename_;
4953
};
5054

5155
template < typename Factory >

src/geode/basic/filename.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323

2424
#include <geode/basic/filename.h>
2525

26+
#include <absl/strings/string_view.h>
27+
2628
#include <ghc/filesystem.hpp>
2729

2830
namespace geode
@@ -55,4 +57,17 @@ namespace geode
5557
{
5658
return filename.substr( filename.find_last_of( '.' ) + 1 );
5759
}
60+
61+
std::string expand_predefined_folders( absl::string_view path )
62+
{
63+
if( path.empty() )
64+
{
65+
return to_string( path );
66+
}
67+
if( path[0] == '~' )
68+
{
69+
return absl::StrCat( std::getenv( "HOME" ), path.substr( 1 ) );
70+
}
71+
return to_string( path );
72+
}
5873
} // namespace geode

0 commit comments

Comments
 (0)