Hej, mam pewien problem w aktualnym drobnym projekcie i nie do końca wiem jak to (hehe) zaprojektować
Otóż pisze sobie rodzaj parsera, który z bloga pobiera wpisy i wyciąga odpowiednie dane do końcowego modelu, który następnie prezentowany jest w formie tabelki - przyjmijmy że jest to blog kulinarny, a wyciągać chcę nazwę potrawy i składniki odżywcze
Napisałem sobie więc zestaw drobnych klas, które wyciągają poszczególne wartości lub nic jeżeli szukane regexy się we wpisie nie znajdują (mam więc np WęglowodanyParser, który wyciągnie liczbę dla węglowodanów w potrawie, NazwaParser, który wyciągnie string z nazwą itd)
Problem polega na tym, że część danych może znajdować się w komentarzach - zdarzało się, że autor np dopisach "a no tak, zapomniałem o zawartości białka - jest to X gram"
Kwestia implementacji jest tutaj drugorzędna, natomiast mam poważny problem z określeniem kto powinien być odpowiedzialny za "przeglądanie" komentarzy, jeśli któreś z pól okazało się niemożliwe do wyciągnięcia. Generalnie widzę takie opcje:
-
Parser konkretnej wartości - a więc parserze dostałeś cały wpis z komentarzami, spróbuj wyciągnąć wartość z wpisu, a jak ci wyszło null to spróbuj jeszcze z komentarzy. Dalej null? Trudno zwracamy! Udało się? Rewelacja!
-
Komponent odpalający parsery - a więc masz tu listę parserów, które oczekują jakiegoś stringa i wyplują gotowy model. Spróbuj wrzucić im treść wpisu - czy któreś z pól jest nullem? Spróbuj wrzucić im po kolei komentarze, a następnie zmerguj otrzymane modele w jeden (implementacja drugorzędna)
Jak to widzicie?