Skip to content

Commit

Permalink
Improved transmogrifier.clean_value giving a replacement value
Browse files Browse the repository at this point in the history
  • Loading branch information
sgeulette committed Jul 20, 2023
1 parent e6b2b67 commit 6793151
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 6 deletions.
2 changes: 2 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ Changelog
- Be more defensive in `content.get_user_fullname`, in some case, a userid
is found in `mutable_properties` but there is no properties associated with it.
[gbastien]
- Improved `transmogrifier.clean_value` giving a replacement value
[sgeulette]

0.72 (2023-07-12)
-----------------
Expand Down
6 changes: 4 additions & 2 deletions src/imio/helpers/tests/test_transmogrifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,12 @@ def test_clean_value(self):
self.assertEqual(clean_value(u' strip | strip ', isep=u'|'), u'strip|strip')
self.assertEqual(clean_value(u' \n strip \n '), u'strip')
self.assertEqual(clean_value(u' strip \n "', strip=u' "'), u'strip')
self.assertEqual(clean_value(u' strip \n "', patterns=[r'"']), u'strip')
self.assertEqual(clean_value(u' strip \n "\'"', patterns=[r'^["\']+$']), u'strip')
self.assertEqual(clean_value(u' strip \n "', patterns=[(r'"', u'')]), u'strip')
self.assertEqual(clean_value(u' strip \n "\'"', patterns=[(r'^["\']+$', u'')]), u'strip')
self.assertEqual(clean_value(u' strip \n ', patterns=[]), u'strip')
self.assertEqual(clean_value(u' strip \n line2', patterns=[], osep=u'-'), u'strip-line2')
self.assertEqual(clean_value(u' stri p \n line 2', patterns=[(r'\s{2,}', u' ')], osep=u'-'),
u'stri p-line 2')

def test_correct_path(self):
self.assertEquals(correct_path(self.portal, 'abcde'), 'abcde')
Expand Down
8 changes: 4 additions & 4 deletions src/imio/helpers/transmogrifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@


def clean_value(value, isep=u'\n', strip=u' ', patterns=[], osep=None):
"""Clean multiline value
"""Clean unicode multiline value
:param value: input string
:param isep: input separator
:param strip: chars to strip on each "line"
:param patterns: line patterns to remove ("line" evaluation)
:param patterns: tuple line patterns to remove ("line" evaluation) (tuple = search, replace)
:param osep: output separator
:return: string
"""
Expand All @@ -26,8 +26,8 @@ def clean_value(value, isep=u'\n', strip=u' ', patterns=[], osep=None):
osep = isep
for part in value.split(isep):
part = part.strip(strip)
for pattern in patterns:
part = re.sub(pattern, u'', part)
for pattern, replace in patterns:
part = re.sub(pattern, replace, part, flags=re.U)
if part:
parts.append(part)
return osep.join(parts)
Expand Down

0 comments on commit 6793151

Please sign in to comment.