fork download
  1. import re
  2.  
  3. class Route(object):
  4. def __init__(self, pattern=[]):
  5. self.pattern = [pattern] if isinstance(pattern,str) else pattern
  6.  
  7. @staticmethod
  8. def make(source):
  9. if isinstance(source,str):
  10. return Route([source])
  11. else:
  12. result = Route()
  13. for i in source:
  14. if isinstance(i,str):
  15. result.pattern.append(i)
  16. else:
  17. result.pattern = Route.make(i).pattern
  18. return result
  19.  
  20. def match(self, src):
  21. for i in self.pattern:
  22. if re.match("^%s$"%i,src) is not None:
  23. return True
  24. return False
  25.  
  26. class Router(object):
  27. def __init__(self):
  28. self.routes = []
  29.  
  30. def __call__(self, *args, **kwargs):
  31. def handler(callback):
  32. if args is not None:
  33. make = kwargs["make"] if "make" in kwargs else Route.make
  34. methods = kwargs["methods"] if "methods" in kwargs else ["GET"]
  35.  
  36. self.routes.append((list(map(make,args)),callback,methods))
  37. return callback
  38. return handler
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty