File tree Expand file tree Collapse file tree 3 files changed +24
-2
lines changed Expand file tree Collapse file tree 3 files changed +24
-2
lines changed Original file line number Diff line number Diff 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
Original file line number Diff line number Diff line change 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
3233namespace 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 >
Original file line number Diff line number Diff line change 2323
2424#include < geode/basic/filename.h>
2525
26+ #include < absl/strings/string_view.h>
27+
2628#include < ghc/filesystem.hpp>
2729
2830namespace 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
You can’t perform that action at this time.
0 commit comments