Vai al contenuto

Aiuto:Syntax highlighting

Da Wikipedia, l'enciclopedia libera.
Abbreviazioni
Aiuto:Source

L'estensione SyntaxHighlight permette di effettuare l'evidenziazione della sintassi per le porzioni di codice sorgente inserite nelle voci di it.wiki.

Nonostante il nome, l'estensione non usa la libreria GeSHi, ma dal giugno 2015 utilizza Pygments.

La sintassi da usare è

<syntaxhighlight lang="linguaggio">codice sorgente</syntaxhighlight>

Il tag <source> è deprecato e inserisce la pagina nella categoria automatica di errore Pagine che utilizzano tag source deprecati.

Scrivendo

<syntaxhighlight lang="php">
<?php
 // esempio
 $num = 10;
 echo "Hello world";
?>
</syntaxhighlight>

si ottiene

<?php
 // esempio
 $num = 10;
 echo "Hello world";
?>

Linguaggi supportati

[modifica | modifica wikitesto]

Di seguito sono elencati i principali valori che è possibile attribuire al parametro lang.


ValoreLinguaggio
6502acmeMOS 6502 (6510) ACME Cross Assembler
6502kickassMOS 6502 (6510) Kick Assembler
6502tasmMOS 6502 (6510) TASM/64TASS
68000devpacMotorola 68000 - HiSoft Devpac ST 2 Assembler
abapABAP
actionscriptActionScript
actionscript3ActionScript 3
adaAda
apacheApache Configuration
applescriptAppleScript
apt_sourcesApt sources
armARM Assembler
asmAssembly
aspActive Server Pages (ASP)
asymptoteAsymptote
autohotkeyAutoHotkey
autoitAutoIt
awkAWK
bascomavrBASCOM AVR
bashBash
basic4glBasic4GL
bfBrainfuck
blitzbasicBlitz BASIC
bnfBackus-Naur Form
booBoo
cC
c_loadrunnerC Loadrunner
c_macC (Mac)
caddclAutoCAD DCL
cadlispAutoLISP
cfdgCFDG
cfmColdFusion Markup Language
chaiscriptChaiScript
clojureClojure
cmakeCMake
cobolCOBOL
coffeescriptCoffeeScript
cpp-qtC++ (Qt toolkit)
cppC++
cshC shell
csharpC#
cssCascading Style Sheets (CSS)
dD
dartDart
dclData Control Language
dcpu16DCPU-16
delphiDelphi
diffdiff
divDIV
dosDOS batch file
ebnfExtended Backus–Naur Form
ecmascriptECMAScript
erlangErlang
eiffelEiffel
euphoriaEuphoria
fortranFortran
freebasicFreeBASIC
fsharpF Sharp
gambasGambas
generoGenero
gettextGNU internationalization (i18n) library
gettextgettext
glslOpenGL Shading Language (GLSL)
gnuplotgnuplot
goGo
groovyGroovy
gwbasicGW-BASIC
haskellHaskell
HaxeHaxe
html4strictHTML
html5HTML5
idlUno IDL
iniINI
ioIo
javaJava
java5Java(TM) 2 Platform Standard Edition 5.0
javascriptJavaScript
jqueryJQuery
kotlinKotlin
kshKorn shell
latexLaTeX
lispLisp
llvmLLVM
locobasicLocomotive BASIC
logtalkLogtalk
luaLua
m68kMotorola 68000 Assembler
makemake
mapbasicMapBasic
matlabMATLAB M
mircmIRC scripting language
mmixMMIX
modula2Modula-2
mpasmMicrochip Assembler
mxmlMXML
mysqlMySQL
netrexxNetRexx
newlispNewLISP
nsisNullsoft Scriptable Install System (NSIS)
oberon2Oberon-2
objcObjective-C
ocaml-briefOCaml
ocamlOCaml
octaveOctave
oobasOpenOffice.org Basic
oorexxObject REXX
oracle8Oracle 8 SQL
oracle11Oracle 11 SQL
pascalPascal
perlplPerl
perl6 / pl6Perl 6
php-briefPHP
phpPHP
pic16PIC assembly language
pikePike
plsqlPL/SQL
postgresqlPostgreSQL
postscriptPostScript
povrayPersistence of Vision Raytracer
powershellWindows PowerShell
progressOpenEdge Advanced Business Language
prologProlog
propertiesProperties file
purebasicPureBasic
pyconPython
qbasicQBasic/QuickBASIC
railsRails
rebolRebol
regWindows Registry
rexxRexx
rpmspecRPM Spec files
rsplusR
rubyRuby
scalaScala
schemeScheme
sh / shell / shell-sessionShell script (POSIX)
sdlbasicSdlBasic
smalltalkSmalltalk
smartySmarty
sparkSPARK
sparqlSPARQL
sqlSQL
systemverilogSystemVerilog
tcshTcsh
tclTcl
teratermTera Term
textPlain text
thinbasicthinBasic
tsTypeScript
tsqlTransact-SQL
typoscriptTypoScript
uniconUnicon
upcUnified Parallel C
urbiURBI
valaVala
vbVisual Basic
vbnetVisual Basic .NET
verilogVerilog
vhdlVHDL
vimVimscript
visualfoxproVisual FoxPro
visualprologVisual Prolog
winbatchWinbatch
xmlXML
yamlYAML
xppX++
z80ZiLOG Z80 Assembler
zxbasicZXBasic

Normalmente <syntaxhighlight> racchiude il codice nei tag <pre> e l'effetto è un riquadro attorno al codice stesso. Se non si vuole questo effetto è possibile usare il parametro enclose per racchiudere il codice nei tag <div>. Nota: il parametro line forza l'uso della modalità <div>. Vediamo come si usa, scrivendo

<syntaxhighlight lang="php" enclose=div >
<?php
 // esempio
 $num = 10;
 echo "Hello world";
?>
</syntaxhighlight>

si ottiene:

<?php
 // esempio
 $num = 10;
 echo "Hello world";
?>

Specificando il parametro line è possibile numerare automaticamente le righe, ad esempio scrivendo

<syntaxhighlight lang="php" line>
<?php
 // esempio
 $num = 10;
 echo "Hello world";
?>
</syntaxhighlight>

si ottiene

<?php
 // esempio
 $num = 10;
 echo "Hello world";
?>

È anche possibile far iniziare la numerazione da un valore prestabilito (solo valori interi e maggiori di >0) aggiungendo il parametro start = X a line. Ad esempio:

<syntaxhighlight lang="php" line start="8">
<?php
 // esempio
 $num = 10;
 echo "Hello world";
?>
</syntaxhighlight>

si ottiene

<?php
 // esempio
 $num = 10;
 echo "Hello world";
?>

In alcuni casi si possono inserire porzioni di codice di un linguaggio di programmazione all'interno di un altro linguaggio; come, ad esempio, il php all'interno di una pagina html. In questi casi l'evidenziazione può risultare errata, aggiungendo il parametro strict si dovrebbe risolvere la cosa. Vediamo le differenze. Scrivendo

<syntaxhighlight lang="php">
<img src="<?php echo rand(1, 100) ?>" />
</syntaxhighlight>

otteniamo

<img src="<?php echo rand(1, 100) ?>" />

usando il parametro strict

<syntaxhighlight lang="php" strict >
<img src="<?php echo rand(1, 100) ?>" />
</syntaxhighlight>

si vede in modo corretto

<img src="<?php echo rand(1, 100) ?>" />

Se invece cerchiamo l'evidenziazione dell'html

<syntaxhighlight lang="html">
<img src="<?php echo rand(1, 100) ?>" />
</syntaxhighlight>

otteniamo

<img src="<?php echo rand(1, 100) ?>" />

Con il parametro highlight è possibile evidenziare una o più righe. Per evidenziare una sola riga occorre specificarne il numero nel parametro highlight. Nel seguente esempio viene evidenziata la riga numero 4:

<syntaxhighlight lang="php" highlight="4">
<?php
 // esempio
 $num = 10;
 echo "Hello world";
?>
</syntaxhighlight>

risultato:

<?php
 // esempio
 $num = 10;
 echo "Hello world";
?>

Per evidenziare più righe separate basta specificare i numeri nel parametro highlight separati da una virgola. Nel seguente esempio vengono evidenziate le righe numero 2 e 4:

<syntaxhighlight lang="php" highlight="2,4">
<?php
 // esempio
 $num = 10;
 echo "Hello world";
?>
</syntaxhighlight>

risultato:

<?php
 // esempio
 $num = 10;
 echo "Hello world";
?>

È anche possibile evidenziare una serie di righe specificando nel parametro highlight la prima e l'ultima riga da evidenziare separate da un trattino (-). Nel seguente esempio vengono evidenziate le righe dalla 2 alla 4:

<syntaxhighlight lang="php" highlight="2-4">
<?php
 // esempio
 $num = 10;
 echo "Hello world";
?>
</syntaxhighlight>

risultato:

<?php
 // esempio
 $num = 10;
 echo "Hello world";
?>

Combinando i due metodi spiegati sopra è possibile farne un uso più complesso. Nel seguente esempio vengono evidenziate le righe dalla 15 alla 20, la 24, dalla 26 alla 32 e la 44:

<syntaxhighlight lang="php" highlight="15-20,24,26-32,44">
 <?php
 
 /*
  * Questo è un commento. Altri modi per commentare sono i simboli // e #
  * Questo tipo di commenti non ha bisogno degli asterischi (*) all'inizio
  * di ogni riga, ma lo si fa per convenzione. I simboli // e #
  * commentano solo il testo che si trova dopo di essi e fino alla fine della riga;
  * non c'è bisogno di finire il commento con qualche carattere speciale.
  */
 
 /*
  * Prima definiamo una funzione chiamata "plural".
  * Restituisce una "s" se l'argomento passato non è 1.
  */
 function plural($number)
 {
     // L'operatore ternario (!= ? :) è una struttura condizionale 
     // simile a if-else: (condizione ? true : false)
     return ($number != 1 ? "s" : "");
 }
 
 // Definiamo una variabile chiamata $a_capo che contiene un a capo HTML,
 // un carattere di ritorno e uno di nuova riga:
 $a_capo = "<br />\r\n";
 
 for ($i = 99; $i > 0; $i--) {
    print "$i bottle" . plural($i) . " of beer on the wall,$a_capo";
    // Non abbiamo bisogno di ripetere il comando print per ogni riga:
    print "$i bottle" . plural($i) . " of beer.$a_capo
         Take one down, pass it around,$a_capo" .
         ($i - 1 != 0 ? $i - 1 : "no more") .
         " bottle" . plural($i - 1) . " of beer on the wall.$a_capo$a_capo";
    /*
      * PHP permette di creare stringhe su più righe, finché
      * trova un punto e virgola (;) che termina l'istruzione.
      * Un punto (.) concatena insieme più stringhe.
      * Le variabili, che iniziano con il carattere "$", sono interpretate
      * anche dentro i doppi apici ("), ma non dentro gli apici singoli (').
      * Le funzioni, come plural(), non sono interpretate fra gli apici.
      */
 }

 
 print "Go to the store, $a_capo buy some more, $a_capo 99 bottles of beer on the wall!";
 
 ?>
</syntaxhighlight>

risultato:

 <?php
 
 /*
  * Questo è un commento. Altri modi per commentare sono i simboli // e #
  * Questo tipo di commenti non ha bisogno degli asterischi (*) all'inizio
  * di ogni riga, ma lo si fa per convenzione. I simboli // e #
  * commentano solo il testo che si trova dopo di essi e fino alla fine della riga;
  * non c'è bisogno di finire il commento con qualche carattere speciale.
  */
 
 /*
  * Prima definiamo una funzione chiamata "plural".
  * Restituisce una "s" se l'argomento passato non è 1.
  */
 function plural($number)
 {
     // L'operatore ternario (!= ? :) è una struttura condizionale 
     // simile a if-else: (condizione ? true : false)
     return ($number != 1 ? "s" : "");
 }
 
 // Definiamo una variabile chiamata $a_capo che contiene un a capo HTML,
 // un carattere di ritorno e uno di nuova riga:
 $a_capo = "<br />\r\n";
 
 for ($i = 99; $i > 0; $i--) {
    print "$i bottle" . plural($i) . " of beer on the wall,$a_capo";
    // Non abbiamo bisogno di ripetere il comando print per ogni riga:
    print "$i bottle" . plural($i) . " of beer.$a_capo
         Take one down, pass it around,$a_capo" .
         ($i - 1 != 0 ? $i - 1 : "no more") .
         " bottle" . plural($i - 1) . " of beer on the wall.$a_capo$a_capo";
    /*
      * PHP permette di creare stringhe su più righe, finché
      * trova un punto e virgola (;) che termina l'istruzione.
      * Un punto (.) concatena insieme più stringhe.
      * Le variabili, che iniziano con il carattere "$", sono interpretate
      * anche dentro i doppi apici ("), ma non dentro gli apici singoli (').
      * Le funzioni, come plural(), non sono interpretate fra gli apici.
      */
 }

 
 print "Go to the store, $a_capo buy some more, $a_capo 99 bottles of beer on the wall!";
 
 ?>

Pagine correlate

[modifica | modifica wikitesto]