Właśnie udostępniłem pierwszą wersję tekstowego/konsolowego renderera HTML (nie przeglądarki, bo nie obsługuje sieci, pobiera tylko lokalne pliki) na mojej witrynie (http://manna5.c1.biz/exlibris/) oraz na SF (https://sourceforge.net/projects/exlibrishtml). To jest pierwsza wersja i wiele brakuje, jest kilka błędów - jestem tego świadomy. Chodzi mi o dokładniejsze wskazówki co do rozwoju i o testy, informacje o błędach. O błędzie napotykanym przy zagnieżdżonych listach i o niewłaściwym rozdzielaniu bloków w niektórych sytuacjach wiem i poprawię to w wersji 2.
Nie ma żadnych screenshotów?
Mam jeden:
Wyglada jakby brakowalo renderingu bolda, kursywy i linkow.
Ogólnie to ma przetwarzać HTML na tekst a nie służyć do typowego przeglądania więc nie ma łącz choć może w wersji 2 wyróżnię je nawiasami kwadratowymi żeby dało się zorientować, innym problemem jest uproszczone parsowanie nieobsługujące atrybutów (wymagane do łącz). Zarówno rozszerzony parser jak i interaktywność to trudniejsze zadania więc nawet nie wersja 2 a 3. Co do pogrubienia i pochylenia - są to efekty graficzne, których w formie tekstowej albo nie da się zaimplementować albo (w niektórych Linuxach chyba) się da, ale jest to zależne od platformy. Można by to podciągać pod emfazę (em i strong, wyróżniane przez wielkie litery) ale to byłoby lekkie oszustwo, jak miał być bold z innego powodu niż wyróżnienie (bo właśnie wtedy stosuje się i/b zamiast em/strong) a jest niemożliwy to go nie będzie.
Multum lat temu hobbystycznie próbowałem w kontrolce edytorowej Scintilla renderować uproszczony HTML.
To nie było dokończone (miało 80-90%) , ale i tak o wiele bardziej przydatne niż dla mnie dziwne tutaj załozenia
renderowanie do prostego tekstu ... który znów trzeba interpretować/renderować ?
Rendorowanie do tekstu w formatowaniu terminal ANSI ???
Co do pogrubienia i pochylenia - są to efekty graficzne, których w formie tekstowej albo nie da się zaimplementować
- bez tych funkcjonalności wystarczy że wytniesz tagi i wrzucisz cout na konsole.
Te "efekty" (ANSI escape codes) działają przynajmniej na Linuxach i na Windows 10 wzwyż (cmd) lub w ConEmu.
Na Windows dodatkowo można to osiągnąć tak: SetConsoleTextAttribute.
Przykłady w Pytongu: Build your own Command Line with ANSI escape codes
@vpiotr: Ten program robi więcej niż wycięcie znaczników:
- Białe znaki są obsługiwane zgodnie z zasadami
- Obsługiwane są podstawowe encje HTML
- Obsługiwane są podstawowe znaczniki HTML, w tym listy.
Przykład listy HTML'owej:
<OL>
<LI>Raz</LI>
<LI>Dwa</LI>
<LI>Trzy</LI>
</OL>
Po wycięciu znaczników:
Raz
Dwa
Trzy
Po przetworzeniu przez Exlibris:
1. Raz
2. Dwa
3. Trzy
Skompilowałem twój plik .c na Linuksie używając gcc 9.4.0, ono raportuje, że chyba coś nie porównujesz zbyt dobrze:
exlibris.c: In function ‘compare’:
exlibris.c:43:38: warning: comparison between pointer and zero character constant [-Wpointer-compare]
43 | } else if (*str1 == '\0' && str2 == '\0') {
| ^~
exlibris.c:43:33: note: did you mean to dereference the pointer?
43 | } else if (*str1 == '\0' && str2 == '\0') {
| ^
exlibris.c:45:38: warning: comparison between pointer and zero character constant [-Wpointer-compare]
45 | } else if (*str1 == '\0' || str2 == '\0') {
| ^~
exlibris.c:45:33: note: did you mean to dereference the pointer?
45 | } else if (*str1 == '\0' || str2 == '\0') {
| ^
Z drugiej strony w ogóle skompilowana przeze mnie wersja wyświetla nie to, co powinna, a do tego śmiecie:
(i te znaczki FF lecą sobie tak w nieskończoność, dlatego head)
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.