@@ -32,17 +32,19 @@ pub enum DirectoryField {
3232 Instrument ,
3333}
3434
35- #[ derive( Debug , Display , Clone , Copy , PartialEq , Eq , Hash ) ]
35+ #[ derive( Debug , Display , Clone , PartialEq , Eq , Hash ) ]
3636pub enum ScanField {
3737 #[ display( "subdirectory" ) ]
3838 Subdirectory ,
3939 #[ display( "scan_number" ) ]
4040 ScanNumber ,
4141 #[ display( "{_0}" ) ]
4242 Directory ( DirectoryField ) ,
43+ #[ display( "{_0}" ) ]
44+ Custom ( String ) ,
4345}
4446
45- #[ derive( Debug , Display , Clone , Copy , PartialEq , Eq , Hash ) ]
47+ #[ derive( Debug , Display , Clone , PartialEq , Eq , Hash ) ]
4648pub enum DetectorField {
4749 #[ display( "detector" ) ]
4850 Detector ,
@@ -73,7 +75,10 @@ impl TryFrom<String> for ScanField {
7375 match value. as_str ( ) {
7476 "scan_number" => Ok ( ScanField :: ScanNumber ) ,
7577 "subdirectory" => Ok ( ScanField :: Subdirectory ) ,
76- _ => Ok ( ScanField :: Directory ( DirectoryField :: try_from ( value) ?) ) ,
78+ _ => match DirectoryField :: try_from ( value) {
79+ Ok ( bf) => Ok ( ScanField :: Directory ( bf) ) ,
80+ Err ( InvalidKey ( value) ) => Ok ( ScanField :: Custom ( value) ) ,
81+ } ,
7782 }
7883 }
7984}
@@ -235,7 +240,6 @@ mod paths_tests {
235240 #[ case:: invalid_path_incomplete( "data/{unclosed" , TemplateErrorType :: Incomplete ) ]
236241 #[ case:: invalid_path_empty( "data/{}" , TemplateErrorType :: Empty ) ]
237242 #[ case:: invalid_path_nested( "data/{nes{ted}}" , TemplateErrorType :: Nested ) ]
238- #[ case:: invalid_path_unrecognised( "data/{detector}" , TemplateErrorType :: Unrecognised ) ]
239243 fn invalid_scan < E : PartialEq < InvalidPathTemplate > + Debug > (
240244 #[ case] template : & str ,
241245 #[ case] err : E ,
@@ -251,7 +255,6 @@ mod paths_tests {
251255 #[ case:: invalid_path_incomplete( "data/{unclosed" , TemplateErrorType :: Incomplete ) ]
252256 #[ case:: invalid_path_empty( "data/{}" , TemplateErrorType :: Empty ) ]
253257 #[ case:: invalid_path_nested( "data/{nes{ted}}" , TemplateErrorType :: Nested ) ]
254- #[ case:: invalid_path_unrecognised( "data/{unknown}" , TemplateErrorType :: Unrecognised ) ]
255258 fn invalid_detector < E : PartialEq < InvalidPathTemplate > + Debug > (
256259 #[ case] template : & str ,
257260 #[ case] err : E ,
0 commit comments