Skip to content

Instantly share code, notes, and snippets.

@ghabs
Created December 21, 2017 20:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ghabs/e48a8f6c3f1488c7aefcf09faa48d309 to your computer and use it in GitHub Desktop.
Save ghabs/e48a8f6c3f1488c7aefcf09faa48d309 to your computer and use it in GitHub Desktop.
class Token:
def __init__(self, val, mean):
self.val = val
self.meaning = mean
class Tokenizer:
def sanitized(self, a):
for i in a:
if not i.isdigit():
return False
if int(i[0]) == 0:
return False
return True
def tokenize(self, a):
"return list of tokens"
to_tok = a.split('.')
assert len(to_tok) == 3
assert self.sanitized(to_tok) == True
return_tokens = []
#TODO(goldhaber): simplify
for i, k in enumerate(to_tok):
if i == 0:
t = Token(k, "MAJOR diff")
if i == 1:
t = Token(k, "MINOR diff")
if i == 2:
t = Token(k, "PATCH diff")
return_tokens.append(t)
return return_tokens
def comparison(self, a, b, n=3):
for i in range(n):
if a[i].val > b[i].val:
return "version a has a " + a[i].meaning
if a[i].val < b[i].val:
return "version b has a " + b[i].meaning
return "same versions!"
def input(self, a, b):
#error check
if a is None or b is None:
return "error! Put stuff in!"
#sanitization check
l = self.tokenize(a)
ltwo = self.tokenize(b)
return self.comparison(l, ltwo, len(l))
if __name__ == "__main__":
tokens = Tokenizer()
assert "same versions!" == tokens.input("1.1.1", "1.1.1")
assert "same versions!" == tokens.input("0.0.0", "0.0.0")
assert "version b has a sadfkljasdg" == tokens.input("1.0.1", "0.0.0")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment