Nie do końca rozumiem, o co chodzi.
Przecież jest strona https://github.com/t-regx/T-Regx gdzie każdy może sobie pobrać jakąś (w miarę) aktualną wersję. Rozumiem, że kolejne wersje/release są stopniowo dodawane, a nie że wersja 1.0 jest całkowicie napisana os zera i przez to nie ma nic wspólnego z tym, co jest już dostępne na stornie. Także za bardzo nie rozumiem, o co chodzi. Czym ta "tajna" wersja 1.0 się różni od tego, co aktualnie jest na stronie?
Dzięki za zwrócenie uwagi.
Wydevelopowanie aktualnej wersji trwało 4.5 roku, i wymagało 2400 commitów, wymagało zmian, testów, kooperacji z użytkownikami, popraw bugów, obsługi edge-case'ów.
Wersja 1.0 jest napisana całkowicie od zera, ale jest w miarę spójna z interfejsem wersji 0.41.5:
- Nazwy metod pozostały bez zmian:
test()
, match()
, first()
, replace()
, replaceCallback()
, split()
- nazwy większości wyjątków są bez zmian,
-
Pattern
, Matcher
, także to pozostało.
Jest jednak kilka różnic:
- W poprzedniej wersji dało się stworzyć niepoprawny pattern, w 1.0 się nie da.
- W poprzedniej wersji błędy składniowe były opaque, w nowej są bardziej transparent
- W poprzedniej wersji nie było phpDoc'ów, w nowej są
- W poprzedniej wersji były feature'y z których nikt nie korzystał, w 1.0 są tylko absolutnie konieczne
- W poprzedniej wersji była klasa
Group
specjalnie pod grupy, w wersji 1.0 są dedykowane metody w $match
.
- Zmieniłem nazwy niektórych constów, np. zamiast
Pattern::CASE_INSENSITIVE
jest Pattern::IGNORE_CASE
.
- Niektóre wyjątki są krótsze:
NonexistentGroupException
-> GroupException
, MalformedPatternException
-> SyntaxException
.
- Mimo że interfejs pozostał podobny - zmniejszyłem miejsca które faktycznie wykonują regexpy. Wcześniej różne metody wykonywały matche, zaleniżnie od potrzeb, teraz tylko metody w
Pattern
i Matcher
wołają zapytania, wszystkie inne obiekty to value-objects.
PS: Faktycznie w tym poście pisałem 1.0
, ale jak @jurek1980 zauważył, wersji 1.0
jeszcze nie ma. Jest tylko nowo przepisana biblioteka, która jeszcze nie ma release'a.