[text] implement 'nameext_from_name()'
This commit is contained in:
@@ -113,9 +113,27 @@ def nameext_from_url(url, data=None):
|
||||
filename = unquote(filename_from_url(url))
|
||||
name, _, ext = filename.rpartition(".")
|
||||
if name and len(ext) <= 16:
|
||||
data["filename"], data["extension"] = name, ext.lower()
|
||||
data["filename"] = name
|
||||
data["extension"] = ext.lower()
|
||||
else:
|
||||
data["filename"], data["extension"] = filename, ""
|
||||
data["filename"] = filename
|
||||
data["extension"] = ""
|
||||
|
||||
return data
|
||||
|
||||
|
||||
def nameext_from_name(filename, data=None):
|
||||
"""Extract the last part of an URL and fill 'data' accordingly"""
|
||||
if data is None:
|
||||
data = {}
|
||||
|
||||
name, _, ext = filename.rpartition(".")
|
||||
if name:
|
||||
data["filename"] = name
|
||||
data["extension"] = ext.lower()
|
||||
else:
|
||||
data["filename"] = filename
|
||||
data["extension"] = ""
|
||||
|
||||
return data
|
||||
|
||||
|
||||
@@ -203,6 +203,10 @@ class TestText(unittest.TestCase):
|
||||
self.assertEqual(f("http://example.org/v2/filename.ext"), result)
|
||||
self.assertEqual(
|
||||
f("http://example.org/v2/filename.ext?param=value#frag"), result)
|
||||
self.assertEqual(
|
||||
f("http://example.org/v2/foo%202?bar&<>.ext?param=value#frag"),
|
||||
{"filename": "foo 2", "extension": ""},
|
||||
)
|
||||
|
||||
# long "extension"
|
||||
fn = "httpswww.example.orgpath-path-path-path-path-path-path-path"
|
||||
@@ -212,6 +216,20 @@ class TestText(unittest.TestCase):
|
||||
for value in INVALID:
|
||||
self.assertEqual(f(value), empty)
|
||||
|
||||
def test_nameext_from_name(self, f=text.nameext_from_name):
|
||||
self.assertEqual(
|
||||
f(""),
|
||||
{"filename": "", "extension": ""},
|
||||
)
|
||||
self.assertEqual(
|
||||
f("filename.ext"),
|
||||
{"filename": "filename", "extension": "ext"},
|
||||
)
|
||||
self.assertEqual(
|
||||
f("foo%202?bar&<>.ext"),
|
||||
{"filename": "foo%202?bar&<>", "extension": "ext"},
|
||||
)
|
||||
|
||||
def test_extract(self, f=text.extract):
|
||||
txt = "<a><b>"
|
||||
self.assertEqual(f(txt, "<", ">"), ("a" , 3))
|
||||
|
||||
Reference in New Issue
Block a user