Oznámení

Provoz fóra byl ukončen

Handler: jak a) nahradit odpovídající tag, b) ukončit parsování?

před 12 lety

pmg
Člen | 372

Dobrý den,

rád bych pomocí handleru odchytil výskyt horizontální čáry (nejspíš funkce horizline) a nahradil její výskyt jiným kódem.

Dále by mě zajímalo, jak říct parseru, aby u určitého tagu parsovat přestal a vrátil dosavadní výsledek.

Děkuji za odpověď.

před 12 lety

David Grudl
Nette Core | 6806

Nejprve, stáhněte si poslední revizi 175.

Vytvořte si handler:

$texy->addHandler('horizline', 'horizlineHandler');

/**
 * @param TexyHandlerInvocation  handler invocation
 * @param string
 * @param TexyModifier
 * @return TexyHtml|string|FALSE
 */
function horizlineHandler($invocation, $type, $modifier)
{
    // zde vraťte něco jiného
    return $invocation->proceed();
}

Jak pracovat s handlery už bylo popsáno vícekrát:

ad druhá otázka: můžete to více rozvést?

před 12 lety

pmg
Člen | 372

Děkuji, dgx.

David Grudl psal:

ad druhá otázka: můžete to více rozvést?

Zkusím to objasnit příkladem. Toto je požadovaný výsledek:

$vstup =
'Lorem
----
Ipsum';

echo $texy->process($vstup);    // Vypíše pouze Lorem

Když bude Texy! procházet vstup, narazí na horizontální čáru. Předá řízení funkci horizlineHandler, jak jste mi ji předložil. Příkazem, který hledám, bude obeznámen, že už další kód zpracovávat nemá. První čára ve vstupu bude tudíš posledním zpracovaným kódem: kód za ní bude ignorován. Je něco takového možné?

Editoval pmg (1. 9. 2007 10:58)

před 12 lety

David Grudl
Nette Core | 6806

Zastavit parser možné není, takže bych asi místo horizontální čáry vložil speciální značku a poté výsledný řetězec ořízl po pozici této značky.