Skip to content

Commit

Permalink
Merge pull request #86 from Geson-anko/name_tools/join_relatively
Browse files Browse the repository at this point in the history
Name tools/join relatively
  • Loading branch information
Geson-anko committed May 7, 2022
2 parents a3ead10 + 5723efa commit 37c3668
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
17 changes: 17 additions & 0 deletions JarvisEngine/core/name.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,23 @@ def count_head_sep(name:str) -> int:
num += 1
return num

def join_relatively(name:str, another:str) -> str:
"""Join another to name.
Ex:
join_relatively("a.b.c","..d.e") -> "a.b.d.e"
join_relatively("a.", "...d.e.f") -> "d.e.f"
"""
name = clean(name)
n_sep = count_head_sep(another) - 1
if n_sep > 0:
splited = name.split(SEP)[:-n_sep]
name = SEP.join(splited)
another = clean(another)
if name == "":
return another
else:
return f"{name}{SEP}{another}"

def join(name:str, *others:str) -> str:
"""join names
Ex: join("a.b.","c.d") -> "a.b.c.d"
Expand Down
8 changes: 7 additions & 1 deletion tests/core/test_name.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,10 @@ def test_count_head_sep():
assert name.count_head_sep(".....") == 5
assert name.count_head_sep("asf....") == 0
assert name.count_head_sep("..v..s..a.sd") == 2



def test_join_relatively():
assert name.join_relatively("a.b.c","..d.e") == "a.b.d.e"
assert name.join_relatively("a.", "...d.e.f") == "d.e.f"
assert name.join_relatively("a.b.c",".d.e") == "a.b.c.d.e"
assert name.join_relatively("a","b") == "a.b"

0 comments on commit 37c3668

Please sign in to comment.