Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: parser BBcode - start
Forum PHP.pl > Inne > Oceny
Forti
W sobote zacząłem pisać własny bbcode dla symfony. Projekt będzie na licencji MIT.

Cechy gotowe:

- bold
- italic
- underline
- color

Cechy przewidywane:

- url
- youtube (video)
- img (z możliwością ustawiania wymiarów, miniaturki itp.)
- code (coś podobnego jak jest tutaj, js, php, html/css z odpowiednim kolorowaniem - na razie to tylko pomysł, nie wiem czy go wprowadze)

Pomysły:

1. może coś do obsługi bootstrap (możliwość wyłączenia/włączenia w app/config/config.yml), typu:
- [modal=...]coś tam[/modal] i otwieranie jakiegoś standardowego modalu - assety mogą instalować się nie zależnie od projektu, tak jak z innymi bundlami dostępnymi w necie
- kilka innych mniejszych "ideas"


W kodzie nie jestem pros. Programuje od kwiernia (?) zeszłego roku, od ponad 3 miesięcy na etacie w symfony. Gdy pisałem własne forum to miałem problem właśnie z bbcode. W końcu wykorzystałem i przerobiłem parser Wookie'go z forum.php.pl.

Link do github:

https://github.com/Fortidude/bbcode/tree/feature/basic


Jakieś sugestie / pomysły? Całość docelowo będzie jako standard dla mojego forum.
Pyton_000
  1. if (strpos($this->text, $tag))


musisz dać porównanie do !== false inaczej jak ktoś da na początku to nie sparsuje.
Forti
o, a to ciekawe smile.gif aż muszę sprawdzić. Testy źle zrobiłem wink.gif


edit:

faktycznie, miałeś racje wink.gif
by_ikar
Jest w tym trochę błąd logiczny, ponieważ w pętli, w której sprawdzasz czy tag istnieje, nadpisujesz zmienną $result. O ile otwierający tag jak będzie istniał, to będzie $result zwracać false, o tyle jak będzie tag zamykający istnieć, to zwróci true. A zwróci dlatego że ów zmienna zostanie nadpisana. Powinieneś sprawdzać czy zarówno jeden jak i drugi tag istnieje.
skowron-line
- A po co konstruktor w TagInterface ?
- No i TagB co to za nazwa TagBold albo lepiej BoldTag
- ustawiasz zmienna private $parsed = false (boolean) ale potem zmieniasz ja na stringa przypisujac zmieniony tag

ogólnie kodzik 2/10
fajnie ze testy napisales ale brakuje im troche
Forti
Cytat
- A po co konstruktor w TagInterface ?

w późniejszym etapie będę przekazywać tam odpowiednie ustawienia z app/config/config.yml symfony. Na razie ustawiam je na sztywno, "aby działało". Będzie można nadpisać widoki, np. zamiast '<a href="', dać '<a class="..." href="'.

Cytat
- No i TagB co to za nazwa TagBold albo lepiej BoldTag

To całkowicie jest to przerobienia. i fakt, taka nazwa klasy była by czytelniejsza.

Cytat
- ustawiasz zmienna private $parsed = false (boolean) ale potem zmieniasz ja na stringa przypisujac zmieniony tag

Faktycznie może być to bezsensu. Taki nawyk mam, że jak tworze zmienna / stałą to ustawiam null lub false. Null lepiej by pasowało może.

Jest troche błędów logicznych i projektowych, ale po to robie to, aby się cały czas rozwijać. Dzięki za spostrzeżenia. Po sporym refactoringu (już mam znacznik url itp.) zrobie testy wydajnościowe.

Cytat
fajnie ze testy napisales ale brakuje im troche

testy są źle ułożone. Najpierw pisałem je, potem kod, jednak i tak troche źle do tego się zabrałem. Za dużo testów, za mało przypadków - powtarzają się zupełnie bezsensu moim zdaniem.

Dzięki za opinie wink.gif Jak ktoś ma jakieś sugestie to chętnie posłucham.

Troche czasu tu nie pisałem wink.gif Dzisiaj dodałem tag url wraz z opcjonalnym parametrem target.

https://github.com/Fortidude/bbcode/tree/de...le/BbcodeBundle

Obecnie pracuję nad youtube.
curryprogrammer
pytanie tylko czemu "wymyslasz kolo na nowo"? smile.gif jesli chcesz cwiczyc sie w kodowaniu
pracuj nad czyms oryginalniejszym smile.gif jest chyba z 10 implementacji bbcode, ktore na pewno
beda bic Twoja o glowe smile.gif
Pyton_000
Wiele bardziej merytorycznych odpowiedzi niż Twoja również a się wypowiadasz.
Paczki tworzy się po to że ich się potrzebuje. A to że ktoś może chcieć coś prostego to tylko plus.
skowron-line
Nie bardzo rozumiem po co nazywasz wszystko *Tag.php
TagUrl.php
AbstractTag.php
Przeczytaj sobie te nazwy na glos i zobaczysz jak bardzo są zle, powinno być Tag (abstrakcja) i Url, Youtube fakt iż jest to w namespace Tags bedzie świadczyło co to robi i do czego jest.
Forti
Cytat(skowron-line @ 25.04.2015, 20:34:51 ) *
Nie bardzo rozumiem po co nazywasz wszystko *Tag.php
TagUrl.php
AbstractTag.php
Przeczytaj sobie te nazwy na glos i zobaczysz jak bardzo są zle, powinno być Tag (abstrakcja) i Url, Youtube fakt iż jest to w namespace Tags bedzie świadczyło co to robi i do czego jest.



To tam jest szczegół wink.gif


Cytat
pytanie tylko czemu "wymyslasz kolo na nowo"? smile.gif jesli chcesz cwiczyc sie w kodowaniu
pracuj nad czyms oryginalniejszym smile.gif jest chyba z 10 implementacji bbcode, ktore na pewno
beda bic Twoja o glowe smile.gif


Pokaż mi sprawny bundle dla symfony 2.6-2.7, prosty i łątwy w implementacji oraz użytkowaniu.
Dziękuje.
curryprogrammer
Cytat(Forti @ 25.04.2015, 22:14:22 ) *
Pokaż mi sprawny bundle dla symfony 2.6-2.7, prosty i łątwy w implementacji oraz użytkowaniu.
Dziękuje.


jaki framework... takie paczki do niego... biggrin.gif
Forti
Cytat(curryprogrammer @ 25.04.2015, 22:38:58 ) *
jaki framework... takie paczki do niego... biggrin.gif



Z twojej wypowiedzi wnioskuje że uważasz symfony za trudny framework, czy martwy że nie ma żadnego parsera? Przykre wink.gif Zresztą dzisiaj się z tego nie korzysta. Fora umierają, nowe wersje ich praktycznie nie powstają, strony internetowe, portale itp. w komentarzach nie przewidują formatowania tekstu, a tam gdzie to występuje to coraz popularniejszy jest markdown ostatnio.

Symfony jest prostym frameworkiem tylko trzeba poświęcić mu troche czasu. Jak na wszystko w tej branży.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.