Autor Zpráva
Fisir
Profil
Ahoj.

Hledám nějaký pokud možno univerzální zvýrazňovač zdrojového kódu, který je napsaný v PHP. Nemyslím tedy, že bude zvýrazňovat PHP skripty, ale bude fungovat jako PHP skript. Pojmem „univerzální“ mám na mysli něco, co půjde snadno rozšiřovat, ale ne něco, co bude mít v základu jen dva předpřipravené lexery a já budu všechno dodělávat (alespoň PHP, SQL, JavaScript, HTML, CSS a Python). Zvýrazňování by mělo být samozřejmě co možná nejrychlejší a mělo by být možné generovat odkazy do dokumentace.

Zavrhnul jsem GeSHi, které je poněkud pomalé a navíc se může snadno stát, že překročí povolený počet vnořených cyklů. Pak jsem přemýšlel nad FSHL, což mi docela vyhovuje rychlostí, ale zase je to český výrobek a nemá moc podporovaných jazyků. Pak mi ještě padlo do oka Luminous, které mě zaujalo tím, že umí content-aware zvýrazňování, což je jednoznačně plus.

Doporučíte mi něco takového, nebo chci příliš a budu si muset napsat vlastní řešení?
Jan Tvrdík
Profil
Fisir:
Zvýrazňování by mělo být samozřejmě co možná nejrychlejší
Proč? Výsledky zvýrazňování se obvykle cachují, takže na rychlosti většinou tolik nezáleží.

Pak jsem přemýšlel nad FSHL, (…), ale zase je to český výrobek a nemá moc podporovaných jazyků.
Proč považuješ český původ za problém? Jsou snad Češi horší programátoři něž třeba Brazilci? Navíc FSHL není původem český, ale slovenský. Češi stojí až novou verzí FSHL.

Co se týče podporovaných jazyků, tak FSHL podporuje C++, CSS, HTML, Java, JavaScript, Neon, PHP, Python, SQL a Texy. Co ti vlastní chybí?

Doporučíte mi něco takového, nebo chci příliš a budu si muset napsat vlastní řešení?
Napsat si vlastní zvýrazňovač je hodné dobré cvičení, akorát se obávám, že bez základů formálních gramatik (které se učí až na VŠ) budeš mít problém to napsat tak, aby to fungovalo spolehlivě a zároveň zůstal kód dobře udržitelný. Takže buď můžeš strávil několik měsíců studiem teorie nebo použij a případně si uprav něco existujícího.
Str4wberry
Profil
Když jsem něco takového před časem hledal pro Je čas.cz, tak jsem narazil na zásadní problém, že zvýrazňovače nebyly kompatibilní s vlastním zvýrazněním, což mi přijde mnohem důležitější než prosté obarvení.

Doporučuji tedy při hledání tuto schopnost brát v potaz. Aby potom člověk neskončil s cool barvičkami, ale bez možnosti ručně něco v kódu zvýraznit.
Fisir
Profil
Reaguji na Jana Tvrdíka:
Proč? Výsledky zvýrazňování se obvykle cachují, takže na rychlosti většinou tolik nezáleží.
Cachují se, to samozřejmě, ale i tak nepotřebuji na serveru skript, který mi bude kód zvýrazňovat dlouhé sekundy.

Proč považuješ český původ za problém?
Nepovažuji ho za problém. Myslel jsem to spíš jako že nemá tak velkou uživatelskou základnu.
Jan Tvrdík
Profil
Str4wberry:
zvýrazňovače nebyly kompatibilní s vlastním zvýrazněním
Co by neměl být problém dopsat jako vrstvu nad tím zvýrazňovačem, ne? Za předpokladu, že zvýrazňovač ten zdrojový kód nepoškodí např. uměle vloženými zalomeními řádku.
Edit: Pouštím stopky a jdu to zkusit v rámci prokrastinace napsat
Edit 2: hotov PoC

Fisir:
Myslel jsem to spíš jako že nemá tak velkou uživatelskou základnu.
To přece ale vůbec nesouvisí s českým resp. slovenským původem. Konkrétně v tomhle případě má FSHL 64 hvězd na GitHubu a 65k stažení na Packagistovi, zatímco luminous má jen 49 hvězd a 38 stažení (?) na stejných místech.
Fisir
Profil
Reaguji na Jana Tvrdíka:
hotov PoC
Já teda nevím, ale při použití FSHL mi stačilo kód standardně zvýraznit a poté nahradit /\[b\](.*?)\[\/b\]/. Nebylo potřeba žádného manipulování s DOMem…
Jan Tvrdík
Profil
To nebude fungovat obecně dobře.
Fisir
Profil
Reaguji na Jana Tvrdíka:
Můžeš být prosím konkrétnější? Zkoušel jsem mnoho kombinací, ale nedaří se mi nasimulovat žádné chybné chování.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0