formalised project structure
This commit is contained in:
parent
897272d7c1
commit
6f8a7322f2
14 changed files with 177 additions and 71 deletions
17
bcrypt/lib/format.py
Normal file
17
bcrypt/lib/format.py
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
from typing import Any
|
||||
from bcrypt.lib.math import clamp_min
|
||||
|
||||
'''
|
||||
Apply left padding to str(x) for parameter x: Any
|
||||
'''
|
||||
def lpad(x: Any, n: int, pad: chr = ' ') -> str:
|
||||
x = str(x)
|
||||
width = clamp_min(n - len(x), 0)
|
||||
return width * pad + x
|
||||
|
||||
'''
|
||||
Left pad an integer's binary representation with zeros
|
||||
'''
|
||||
def lpadbin(x: int, n: int) -> str:
|
||||
return lpad(bin(x)[2:], n, pad='0')
|
||||
|
||||
16
bcrypt/lib/math.py
Normal file
16
bcrypt/lib/math.py
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
'''
|
||||
Implements numeric range clamping (idk why its not in the stdlib...)
|
||||
NOTE: the upper and lower bounds for clamping are inclusive
|
||||
'''
|
||||
def clamp(x: int, min: int, max: int) -> int:
|
||||
if x < min:
|
||||
return min
|
||||
elif x > max:
|
||||
return max
|
||||
return x
|
||||
|
||||
def clamp_min(x: int, min: int) -> int:
|
||||
return x if x > min else min
|
||||
|
||||
def clamp_max(x: int, max: int) -> int:
|
||||
return x if x < max else max
|
||||
Loading…
Add table
Add a link
Reference in a new issue