From bec8218c257a09f25224a8c005bd90919044e418 Mon Sep 17 00:00:00 2001 From: Wutipong Wongsakuldej Date: Mon, 20 Nov 2023 22:17:56 +0700 Subject: [PATCH] add textutils module. --- .gitignore | 1 + test_textutitls.py | 29 +++++++++++++++++++++++++++++ textutils.py | 11 +++++++++++ 3 files changed, 41 insertions(+) create mode 100644 .gitignore create mode 100644 test_textutitls.py create mode 100644 textutils.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ed8ebf5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__ \ No newline at end of file diff --git a/test_textutitls.py b/test_textutitls.py new file mode 100644 index 0000000..a936c8c --- /dev/null +++ b/test_textutitls.py @@ -0,0 +1,29 @@ +import textutils +import unittest + +class TestTextUtils(unittest.TestCase): + def test_positive_tokens(self): + self.assertEqual(textutils.create_n_tokens("hello/world/how/are/you/doing", "/", 0), "") + self.assertEqual(textutils.create_n_tokens("hello/world/how/are/you/doing", "/", 1), "hello") + self.assertEqual(textutils.create_n_tokens("hello/world/how/are/you/doing", "/", 2), "hello/world") + + + def test_negative_tokens(self): + self.assertEqual(textutils.create_n_tokens("hello/world/how/are/you/doing", "/", -1), "doing") + self.assertEqual(textutils.create_n_tokens("hello/world/how/are/you/doing", "/", -2), "you/doing") + + def test_n_exceed_length(self): + self.assertEqual(textutils.create_n_tokens("hello/world/how/are/you/doing", "/", 8), "hello/world/how/are/you/doing") + self.assertEqual(textutils.create_n_tokens("hello/world/how/are/you/doing", "/", -6), "hello/world/how/are/you/doing") + + def test_delim_at_the_begining(self): + self.assertEqual(textutils.create_n_tokens("/hello/world/how/are/you/doing/", "/", 0), "") + self.assertEqual(textutils.create_n_tokens("/hello/world/how/are/you/doing/", "/", 1), "") + self.assertEqual(textutils.create_n_tokens("/hello/world/how/are/you/doing/", "/", 2), "/hello") + + def test_delim_at_the_end(self): + self.assertEqual(textutils.create_n_tokens("hello/world/how/are/you/doing/", "/", -1), "") + self.assertEqual(textutils.create_n_tokens("hello/world/how/are/you/doing/", "/", -2), "doing/") + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/textutils.py b/textutils.py new file mode 100644 index 0000000..ed17d1e --- /dev/null +++ b/textutils.py @@ -0,0 +1,11 @@ +def create_n_tokens(str, delim, n): + parts = str.split(delim) + + if n > 0 : + return delim.join(parts[0: n]) + else : + l = len(parts) + start = l + n + if start < 0: start = 0 + + return delim.join(parts[start: l]) \ No newline at end of file