Skip to content

Commit

Permalink
Return _extract_parsedef() as it's used by other packages
Browse files Browse the repository at this point in the history
  • Loading branch information
pnuu committed Oct 22, 2018
1 parent 8667c86 commit 5d51d92
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
25 changes: 25 additions & 0 deletions trollsift/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,31 @@ def is_one2one(self):
return is_one2one(self.fmt)


def _extract_parsedef(fmt):
'''Retrieve parse definition from the format string *fmt*.
'''

parsedef = []
convdef = {}

for part1 in fmt.split('}'):
part2 = part1.split('{', 1)
if part2[0] is not '':
parsedef.append(part2[0])
if len(part2) > 1 and part2[1] is not '':
if ':' in part2[1]:
part2 = part2[1].split(':', 1)
parsedef.append({part2[0]: part2[1]})
convdef[part2[0]] = part2[1]
else:
reg = re.search('(\{' + part2[1] + '\})', fmt)
if reg:
parsedef.append({part2[1]: None})
else:
parsedef.append(part2[1])
return parsedef, convdef


class StringFormatter(string.Formatter):
"""Custom string formatter class for basic strings.
Expand Down
12 changes: 12 additions & 0 deletions trollsift/tests/unittests/test_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from trollsift.parser import get_convert_dict, regex_formatter
from trollsift.parser import _convert
from trollsift.parser import parse, globify, validate, is_one2one
from trollsift.parser import _extract_parsedef


class TestParser(unittest.TestCase):
Expand All @@ -16,6 +17,17 @@ def setUp(self):
self.string3 = "/somedir/otherdir/hrpt_noaa16_20140210_1004_69022"
self.string4 = "/somedir/otherdir/hrpt_noaa16_20140210_1004_69022"

def test_extract_parsedef(self):
# Run
result, dummy = _extract_parsedef(self.fmt)
# Assert
self.assertEqual(result,
['/somedir/', {'directory': None},
'/hrpt_', {'platform': '4s'},
{'platnum': '2s'},
'_', {'time': '%Y%m%d_%H%M'},
'_', {'orbit': '05d'}, '.l1b'])

def test_get_convert_dict(self):
# Run
result = get_convert_dict(self.fmt)
Expand Down

0 comments on commit 5d51d92

Please sign in to comment.