Exlibris HTML renderer w języku C, wersja 1

1

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.

1

Nie ma żadnych screenshotów?

0

Mam jeden:
screenshot-20220407173812.png

0

Wyglada jakby brakowalo renderingu bolda, kursywy i linkow.

0

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.

0

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 ???

0

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

0

@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 

0

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:

screenshot-20220415140731.png

(i te znaczki FF lecą sobie tak w nieskończoność, dlatego head)

1 użytkowników online, w tym zalogowanych: 0, gości: 1