Lettlest framstilling av programkode, pretty print.
Vi laster ned .zip fila fra [1] og pakker den ut i en katalog. Den versjonen jeg bruker på denne siden er datert juli 2010.
I katalogen jeg pakker ut finner jeg noen testsider, en katalog (src) med Javascript-filer og en .css -fil. Jeg finner dessuten en README.html readme som beskriver hva vi kan gjøre, hvilke språk som støttes og hvordan vi kan gjøre det.
Vi skal bruke prettyfy til å framstille noen eksempler på kode av den typen vi finner i dette materialet: Javascript, CSS, Python og SQL.
Javascript
Javascript faller under kategorien "C-like languages" og vi trenger bare pakke inn programkoden i en pre-tag med class prettyprint, slik:
<pre class="prettyprint"> ... mitt javaskript... </pre>
Det eneste vi må passe på er at vi:
- Må kople til prettyfy.js og stilsettet på siden
<script src="google-code-prettify/src/prettify.js" type="text/javascript"> </script> <link href="google-code-prettify/src/prettify.css" type="text/css" rel="stylesheet" />
- Må starte opp en js-metode, prettyPrint();, som finner alle pre-elementer med class prettyprint
Dette kan vi enten gjøre i body med onload eller vi kan legge til en script-tag nederst på siden:
<script type="text/javascript">prettyPrint(); </script>
Hvis vi får dette på plass, og legger inn et javascript, pakket i en pre-tag med class prettyprint, kan vi få noe slikt:
function controldato() { inputelt=document.getElementById('dato'); errorelt=document.getElementById('datoerror'); if ((inputelt.value==null) || (inputelt.value.length!=10)) { errorelt.innerHTML='galt format'; return false; } var T=inputelt.value; var regex=/(19|20)\d\d[:](0[1-9]|1[012])[:](0[1-9]|[12][0-9]|3[01])/; if (regex.test(T)) { errorelt.innerHTML=''; return true; } errorelt.innerHTML='galt format'; return false; }
Vi kan også bestille linjenummere i listingen, ved ganske enkelt å angi class prettyprint linenums. Dette kan være hensiktsmessig dersom vi ønsker å skrive kommentarer til koden, utenfor selve koden.
function controldato() { inputelt=document.getElementById('dato'); errorelt=document.getElementById('datoerror'); if ((inputelt.value==null) || (inputelt.value.length!=10)) { errorelt.innerHTML='galt format'; return false; } var T=inputelt.value; var regex=/(19|20)\d\d[:](0[1-9]|1[012])[:](0[1-9]|[12][0-9]|3[01])/; if (regex.test(T)) { errorelt.innerHTML=''; return true; } errorelt.innerHTML='galt format'; return false; }
CSS
CSS faller ikke under kategorien "C-like languages" og vi trenger et eget javascript for å handtere dette, lang-css.js. Dette er også distribuert med prettyfy og vi må passe på å inkludere dette i siden. Vi må dessuten navngi det språket vi skal bruke i pre-tagen:
<pre class="prettyprint lang-css">
Vi gjør dette med det stilsettet som følger prettyfy, prettyfy.css, som eksempel og får:
/* Pretty printing styles. Used with prettify.js. */ .str { color: #080; } .kwd { color: #008; } .com { color: #800; } .typ { color: #606; } .lit { color: #066; } .pun { color: #660; } .pln { color: #000; } .tag { color: #008; } .atn { color: #606; } .atv { color: #080; } .dec { color: #606; } pre.prettyprint { padding: 2px; border: 1px solid #888 } /* Specify class=linenums on a pre to get line numbering */ ol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */ li.L0, li.L1, li.L2, li.L3, li.L5, li.L6, li.L7, li.L8 { list-style-type: none } /* Alternate shading for lines */ li.L1, li.L3, li.L5, li.L7, li.L9 { background: #eee } @media print { .str { color: #060; } .kwd { color: #006; font-weight: bold; } .com { color: #600; font-style: italic; } .typ { color: #404; font-weight: bold; } .lit { color: #044; } .pun { color: #440; } .pln { color: #000; } .tag { color: #006; font-weight: bold; } .atn { color: #404; } .atv { color: #060; } }
Det er denne fila vi må endre dersom vi ønsker andre farger, fonter eller hva det måtte være.
Python
Python faller i denne sammenheng i kategorien "C-like" og vi angir kun prettyprint som class.
#! /usr/bin/python """ Reading fields navn and adresse and reports the findings """ import cgi form=cgi.FieldStorage() print 'Content-type: text/html; charset=iso-8859-1\n' print form navn='' adresse='' try: navn=form['navn'].value except: navn='ukjent' try: adresse=form['adresse'].value except: adresse='ukjent' print "Dette er det jeg fant: Navn: %s, Adresse: %s"%(navn,adresse)
SQL
SQL er ikke "C-like" og vi angir prettyprint lang-sql som class. Husk å includere "lang-sql.js" -fila.
SELECT h_lag_id,b_lag_id,h_maal,b_maal,kamp_dato FROM kamp WHERE liga_id='%s';
Eksperimenter
Det er selvsagt interessant å eksperimentere med stilsettet. Et forsiktig forsøk:
Et forsøk med dynamisk lasting av programkode