Vytváření odkazů do dokumentace

Školení, která pořádám

V JavaScriptovém zvýrazňovači syntaxe JUSH jsem od začátku lpěl na sledování kontextu a jeho přepínání. Je to hezky vidět i u jednoduchého kódu <?php mysql_query("SET sql_mode = ''"), kde jsou hned čtyři kontexty:

  1. Z HTML kódu se přepne do PHP, kde se zvýrazní funkce mysql_query.
  2. Z PHP se přepne do kontextu MySQL, kde se zvýrazní příkaz SET.
  3. Zde se přepne do kontextu SQL nastavení, kde se zvýrazní sql_mode.
  4. A odtud se zase přepne zpátky do kontextu SQL příkazu a PHP.

Sledují se prakticky všechny kontexty, které se u webových aplikací používají, namátkou:

Kontextů je tolik, až si říkám, jestli jsou vlastně všechny potřeba. Jak chcete zvýraznit SQL nastavení uvnitř MySQL příkazu uvnitř PHP řetězce uvnitř HTML kódu? Hlavní výhoda tak spočívá ve vytvoření odkazů do patřičných dokumentací. Nevím jak vám, ale mě tyhle odkazy náramně pomáhají a ocenil bych je ve všech ukázkách kódu, které kde čtu.

Schopnost vytváření odkazů do patřičné dokumentace používám i při psaní článků. Když chci popsat funkci highlight_file, tak jednoduše napíšu <code class="jush-php">highlight_file</code>, čímž se odkaz sám vytvoří.

No ale ze všeho nejužitečnější by bylo mít tuto schopnost kontextového odkazování napojenou na nápovědu editoru. Tuto možnost JUSH také nově nabízí. Skript jush-help.wsf pro Windows se používá snadno:

WScript jush-help.wsf filename line column [tabsize] [word]

Soubor prožene zvýrazněním syntaxe a pak se podívá, jestli je na dané pozici nějaký odkaz. Když ano, tak ho spustí, jinak alespoň nabídne hledání aktuálního slova v Google. To se mi ostatně často taky hodí – chci něco najít o slovu, které se v kódu používá třeba uvnitř řetězce. Napojení na editor SciTE je bezproblémové:

file.patterns.jush=*.htm;*.html;*.php;*.sql;*.js;*.css;php.ini;*.conf;.htaccess
command.1.$(file.patterns.jush)=WScript jush-help.wsf "$(FilePath)" $(SelectionStartLine) $(SelectionStartColumn) $(tabsize) "$(CurrentWord)"
command.name.1.$(file.patterns.jush)=JUSH help
command.subsystem.1.$(file.patterns.jush)=2
command.save.before.1.$(file.patterns.jush)=1

Spuštění z příkazového řádku je fungl nové, takže uvítám jakékoliv připomínky. Když by se někomu chtělo kód přepsat do jiného běhového prostředí (např. Rhino), tak budu samozřejmě taky rád.

Jakub Vrána, Řešení problému, 31.3.2010, diskuse: 5 (nové: 0)

Diskuse

cucací potřeby:

http://stribny.name/zapisnik/?clanky/jush-…-highlighter

cucací potřeby:

aha. ten článek je tak "2007". a teď teprve koukám, že už na ni Jakub odkazuje. Tak nic, no. Jakube, co na tu zmíněnou námitku, že v té době JUSH nezvýrazňoval SQL ve funkcích PostgreSQL?

Mno, a aby měl tento příspěvek aspoň nějakou hodnotu, tak dám zpětnou vazbu tu, že s pomalým internetem, který mám, začne být aplikace, používající JUSH (phpMinAdmin, ve své době) časem otravný - pomalé odezvy, a tak dále. Ale to se dá každopádně čekat.

ikona Jakub Vrána OpenID:

JUSH už delší dobu umí kromě MySQL zvýrazňovat i SQLite, PostgreSQL a MS SQL.

Co se pomalé odezvy týče, tak stahovaný skript lze kešovat, takže se stáhne jen jednou (nebo alespoň ne vždy).

ikona Ladislav Prskavec:

Umi JUSH zvyraznovat napr. $_SERVER, nejak mi to nedela odkaz na http://cz.php.net/manual/en/reserved.variables.server.php kam bych to cekal.

ikona Jakub Vrána OpenID:

V SVN už ano... Díky za tip.

Vložit příspěvek

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2016 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.