diff --git a/pyproject.toml b/pyproject.toml index 24465d3..17f29fc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "rbool" -version = "0.0.2" +version = "0.0.3" description = "1D boolean operations" authors = ["Carlos Adir "] readme = "README.md" diff --git a/src/rbool/numbs.py b/src/rbool/numbs.py index 6802777..40bc2a9 100644 --- a/src/rbool/numbs.py +++ b/src/rbool/numbs.py @@ -64,6 +64,17 @@ def real(number: Any) -> Real: """ if isinstance(number, Real): return number + if isinstance(number, str): + if "/" in number: + parts = tuple(map(To.real, number.split("/"))) + number = To.rational(parts[0], 1) + for denom in parts[1:]: + number /= denom + return To.real(number) + try: + return To.integer(number) + except ValueError: + pass return float(number) @staticmethod diff --git a/tests/test_numbers.py b/tests/test_numbers.py index 1fad6e3..ab774fc 100644 --- a/tests/test_numbers.py +++ b/tests/test_numbers.py @@ -30,6 +30,12 @@ def test_to(): with pytest.raises(ValueError): To.finite("inf") + assert To.real("1") == 1 + assert isinstance(To.real("1"), int) + assert isinstance(To.real("-3"), int) + + assert To.real("1/3") == To.rational(1, 3) + @pytest.mark.order(1) @pytest.mark.timeout(1)