style(python): format with black

This commit is contained in:
GreasrySlug 2023-03-16 22:39:34 +09:00
parent 454224858b
commit 08ad656240
17 changed files with 208 additions and 36 deletions

View file

@ -3,18 +3,22 @@ from _erg_str import Str
# from collections.abc import Iterable, Sequence, Iterator, Container
class Range:
def __init__(self, start, end):
self.start = start
self.end = end
def __contains__(self, item):
pass
def __getitem__(self, item):
res = self.start + item
if res in self:
return res
else:
raise IndexError("Index out of range")
# TODO: for Str, etc.
def __len__(self):
if self.start in self:
@ -31,45 +35,52 @@ class Range:
else:
# len(1<..<4) == 2
return self.end - self.start - 2
def __iter__(self):
return RangeIterator(rng=self)
# Sequence.register(Range)
# Container.register(Range)
# Iterable.register(Range)
# represents `start<..end`
class LeftOpenRange(Range):
def __contains__(self, item):
return self.start < item <= self.end
# represents `start..<end`
class RightOpenRange(Range):
def __contains__(self, item):
return self.start <= item < self.end
# represents `start<..<end`
class OpenRange(Range):
def __contains__(self, item):
return self.start < item < self.end
# represents `start..end`
class ClosedRange(Range):
def __contains__(self, item):
return self.start <= item <= self.end
class RangeIterator:
def __init__(self, rng):
self.rng = rng
self.needle = self.rng.start
if issubclass(Nat, type(self.rng.start)):
if not(self.needle in self.rng):
if not (self.needle in self.rng):
self.needle += 1
elif issubclass(Str, type(self.rng.start)):
if not(self.needle in self.rng):
if not (self.needle in self.rng):
self.needle = chr(ord(self.needle) + 1)
else:
if not(self.needle in self.rng):
if not (self.needle in self.rng):
self.needle = self.needle.succ()
def __iter__(self):
@ -93,4 +104,5 @@ class RangeIterator:
return result
raise StopIteration
# Iterator.register(RangeIterator)