Oznámení

Provoz fóra byl ukončen

Kurzíva

před 14 lety

pavlik
Člen | 26

Jen by mě zajímalo, proč byla zvolena syntaxe vzrůstajícího počtu hvězdiček místo docela rozšířené syntaxe *tučné* a _kurzíva_. Byl by nějaký problém s implementací nebo se jedná jen o rozhodnutí autora? A dá se případně někde toto pravidlo předefinovat? (mí uživatelé jsou totiž na podtržítko zvyklí, nerad bych jim měnil syntaxi)

před 14 lety

David Grudl
Nette Core | 6806

Ten důvod je prostý – nechci, aby třeba mysql_fetch_array se zobrazilo jako mysql_fetch_array. Výchozí syntax byla zvolena tak, aby se minimalizovaly případné kolize (tedy rozhodnutí autora).

O problém s implementací rozhodně nejde. Ba právě naopak, hlavní síla Texy! spočívá v jeho univerzálnosti, tedy lze vcelku jednoduše syntax rozšířit nebo upravit. Dokonce velmi jednodušše :-)

$texy = &new Texy();
$texy->modules->TexyPhrasesModule->registerLinePattern('processPhrase', '#(?<!\_)\_(?!\ )([^\_]+)MODIFIER?(?<!\ )\_(?!\_)()#U', 'em');

(pozn.: platí pouze pro Texy 0.x)

před 14 lety

pavlik
Člen | 26

Zcela tomu nerozumím. Uvedený řádek kódu ROZŠÍŘÍ schopnosti Texy nebo je MODIFIKUJE? Ale pomalu mi začíná připadat, že asi nejlepší bude zůstat u defaultní syntaxe, průměrně inteligentní uživatel mého webu by to měl zvládnout :)

před 14 lety

David Grudl
Nette Core | 6806

Rozšíří.

Není třeba se omezovat výchozí syntaxí. Ale rozšiřování/modifikování by mělo být prováděno uvážlivě, především s ohledem na uživatele. Jak jsem naznačoval v předchozím příspěvku, formát _xxx_ se pro obecné použití nehodí. Běžný uživatel Texy! totiž netuší, že jde o „zaběhlou“ konvenci a případná kolize by jej zmátla.

před 14 lety

pavlik
Člen | 26

Ve svém současném sbastleném primitivním formátovači používám tučné a _kurzívu_ proto, že je to prostě taková zažitá konvence, která funguje třeba i ve Wordu. Je to k vidění i v různých fórech, která formátování nepodporují.

Moje současná implementace spočívá v tom, že před _ musí být mezera – tím by se mělo zmatení formátovače zabránit. Jediná situace, kdy může být mezera problémem, je kurzíva v závorce, např. SPZ (_státní poznávací značka_) – nyní musí uživatel napsat SPZ ( _státní poznávací značka_). Určitě by ale šlo reg. výraz upravit tak, aby bral závorku jako jediný výjimečný případ. Takže: myslím, že ani _tato syntaxe pro kurzívu_ není moc problematická.

Současná syntaxe Texy má svou logiku, dokonce se mi líbí víc, než zaběhlý způsob, každopádně může být pro některé koncové uživatele matoucí. Texy má v mottu, že se chová „očekávaným způsobem“, to ale při současné syntaxi není úplně pravda: v ideálním případě by si uživatel měl jen stěží uvědomit, že Texy používá, to však není kvůli hvězdičkové syntaxi možné.

Já bych navrhoval toto řešení: nechat stávající hvězdičkovou syntaxi jako výchozí (koneckonců, už se taky musíte ohlížet na zpětnou kompatibilitu, protože Texy už v některých systémech běží), velmi bych ale uvítal, kdyby šlo nějak jednoduše nastavit používání „klasické“ zvýrazňovací syntaxe (třeba $texy->useCommonEmphasisSyntax = true). Implementačně by to nemělo být složité, je ale otázka, jestli se vám do toho chce (chápu, že můžete být na svou syntaxi „hrdý“ nebo že ji prostě považujete za jedinou správnou).

před 14 lety

David Grudl
Nette Core | 6806

Vidím, že se v programování vyznáte – zkuste mi tedy specifikovat, co je to „klasická“ syntaxe. Kurzíva je jasná:

_xxx_ je kurzíva (před musí být mezera, závorka, nic, za musí být mezera, závorka, interpunkce, nic)

před 14 lety

pavlik
Člen | 26

„Klasická“ syntaxe by IMO měla vypadat následovně:

kurzíva přesně jak píšete: _kurzíva_ s tím, že před a za musí být něco jiného než písmeno
tučné se stejnou podmínkou jako u kurzívy

A nyní jsou 2 možnosti: BUĎTO zůstane zachována syntaxe **tučné** a ***tučná kurzíva*** NEBO dvouhvězdičková syntaxe zcela zmizí a *_tohle_* nebo _*tohle*_ bude tučná kurzíva.

Osobně bych preferoval variantu NEBO, zdá se mi při dané syntaxi logičtější. Její jediný problém vidím v tom, že třeba všechny mysql funkce může někdo zapsat jako mysql_*, ale to mi připadá jako zcela minoritní problém (jednak mi to připadá jako jediná výjimka, druhak to lze obejít nějakým notexy). Ještě jedna poznámka: když jsem zběžně prohlížel kód, tak se mi zdálo, že jsem tam viděl funkci pro řešení problému strong-em-strong-em, takže by snad neměl být problém, pokud někdo napíše _*tučnou kurzívu takhle_*.

Myslíte, že „klasickou“ syntaxi implementujete? Rád bych vám s tím i pomoh, ale nejsem takový přeborník na PCRE, vy byste to určitě zvládl daleko snáze.

před 14 lety

David Grudl
Nette Core | 6806

tedy tzv. „klasická syntax“ se má týkat jen tučného písma a kurzívy?

před 14 lety

pavlik
Člen | 26

IMO ano, protože pro běžného uživatele většinou stačí, aby odkazy klikaly a měl možnost zvýraznit tučně a kurzívou. Zbytek syntaxe je spíš pro „lidi z oboru“ a nevidím důvod to měnit.

před 14 lety

David Grudl
Nette Core | 6806

Nechal jsem si trošku času na promyšlení useCommonEmphasisSyntax, a přišel jsem k závěru, že to vyřeším trošku jinak. Totiž, co třeba Vy považujete za „common“, zase jiný považuje za nezvyk atd. Ozvalo se pár hlasů, které za common považují syntax Wiki (příklad).

Udělám následující – vylepším podporu pro modifikaci a odstraňování pravidel ze syntaxe a doplním distribuci o jednoduchý příklad, který udělá přesně to, co požadujete – tedy nastaví *bold* _kurziva_ a odstrani **bold**. Takže useCommonEmphasisSyntax nebude přímo součástí Texy, ale bude velmi snadno doplnitelné.

před 14 lety

pavlik
Člen | 26

To je ještě lepší zpráva než pouhé doplnění „běžné“ syntaxe. Díky.