diff --git a/sarracenia/config.py b/sarracenia/config.py index 05a71923a..772bf623e 100755 --- a/sarracenia/config.py +++ b/sarracenia/config.py @@ -2150,9 +2150,10 @@ def variableExpansion(self, cdir, message=None ) -> str: # strftime compatible patterns. - if len(new_dir.split( '${%' )) > 1: - fragment_list=[] - for fragment in new_dir.split( '${%' ): + fragments = new_dir.split( '${%' ) + if len(fragments) > 1: + fragment_list=[fragments[0]] + for fragment in fragments[1:]: close_brace = fragment.find('}') frag_start=0 seconds=self.varTimeOffset @@ -2242,7 +2243,7 @@ def variableExpansion(self, cdir, message=None ) -> str: matches= re.search( r'^[0-9]+$', match_field) # non-numeric thing... variable or something. if not matches: - fragment_list.append(fragment) + fragment_list.append('${' + fragment) continue field=int(match_field) if self.sundew_compat_regex_first_match_is_zero: diff --git a/tests/sarracenia/config_test.py b/tests/sarracenia/config_test.py index 520c20e07..e527e553f 100644 --- a/tests/sarracenia/config_test.py +++ b/tests/sarracenia/config_test.py @@ -51,6 +51,12 @@ def test_variableExpansion(): "/pub/DATASETS/NOAA/G02158/unmasked" + '/[0-9]{4}/[0-9]{2}_[A-Z]{1}[a-z]{2}' ) assert try_pattern( options, message, "${PBD}/${%Y}/${SOURCE}/AIRNOW/CSV/BCMOE/${%H}/", \ options.post_baseDir + '/[0-9]{4}/'+ message['source'] +'/AIRNOW/CSV/BCMOE/[0-9]{2}/' ) + assert try_pattern( options, message, "a_path/${DONT_TOUCH_THIS}something/else", r"a_path/\${DONT_TOUCH_THIS}something/else") + assert try_pattern( options, message, "a_path/${1DONT_TOUCH_THIS}something/else", r"a_path/\${1DONT_TOUCH_THIS}something/else") + assert try_pattern( options, message, "/apps/sarra/public_data/20231214/SSC-DATAINTERCHANGE/MSC-BULLETINS/${T1}${T2}/${CCCC}/17", + r"/apps/sarra/public_data/20231214/SSC-DATAINTERCHANGE/MSC-BULLETINS/\${T1}\${T2}/\${CCCC}/17") + assert try_pattern( options, message, "a_path/${1DONT_TOUCH_THIS}some/${%H}/thing/${STILL_DONT_CHANGE_ME}/${%Y}/hello", + r"a_path/\${1DONT_TOUCH_THIS}some/[0-2][0-9]/thing/\${STILL_DONT_CHANGE_ME}/[0-9]{4}/hello") options.sundew_compat_regex_first_match_is_zero = True options.post_baseDir = '/apps/sarra/public_data' @@ -87,4 +93,3 @@ def test_variableExpansion(): # to get stuff to print out, make it fail. #assert False -