File tree Expand file tree Collapse file tree 4 files changed +22
-2
lines changed Expand file tree Collapse file tree 4 files changed +22
-2
lines changed Original file line number Diff line number Diff line change @@ -68,7 +68,8 @@ namespace geode
6868 absl::AsciiStrToLower ( extension_from_filename ( filename ) );
6969 OPENGEODE_EXCEPTION ( Factory::has_creator ( extension ),
7070 " Unknown extension: " , extension );
71- return Factory::create ( extension, filename );
71+ return Factory::create (
72+ extension, expand_predefined_folders ( filename ) );
7273 }
7374
7475 template < typename Factory, typename ... Args >
Original file line number Diff line number Diff line change @@ -49,7 +49,8 @@ namespace geode
4949 absl::AsciiStrToLower ( extension_from_filename ( filename ) );
5050 OPENGEODE_EXCEPTION ( Factory::has_creator ( extension ),
5151 " Unknown extension: " , extension );
52- return Factory::create ( extension, filename );
52+ return Factory::create (
53+ extension, expand_predefined_folders ( filename ) );
5354 }
5455
5556 template < typename Factory, typename Object >
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 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