The <<code>> Macro
Syntax
<<code [lang=name] [inline={true|false}] [indent=L] [wrap={true|false}]>> Code goes here <</code>>
- replace
name
with the language your example uses, supported languages are listed below - For
indent
, replace L with the indent level you want (corresponds to list indent levels) - For
wrap
, you can force the lines to wrap or not. The default is for code blocks to scroll.
About
The <<code>>
macro allows you to put source code into articles.
A simple example:
<<code>> from reversion.models import Revision from .helpers import ProcessedContent class Node(models.Model): language = models.CharField(max_length=10, default='en-us') <</code>>
...will display as:
from reversion.models import Revision from .helpers import ProcessedContent class Node(models.Model): language = models.CharField(max_length=10, default='en-us')
Wrapping vs. scrolling
<<code wrap=false>> if self.is_image: return reverse('nodes:image', kwargs={'slug': self.node.slug, 'image_slug': self.slug, 'language': self.node.language}) else: return reverse('nodes:attachment', kwargs={'slug': self.node.slug, 'attachment_slug': self.slug, 'language': self.node.language}) <</code>>
...will display as:
if self.is_image: return reverse('nodes:image', kwargs={'slug': self.node.slug, 'image_slug': self.slug, 'language': self.node.language}) else: return reverse('nodes:attachment', kwargs={'slug': self.node.slug, 'attachment_slug': self.slug, 'language': self.node.language})
<<code wrap=true>> if self.is_image: return reverse('nodes:image', kwargs={'slug': self.node.slug, 'image_slug': self.slug, 'language': self.node.language}) else: return reverse('nodes:attachment', kwargs={'slug': self.node.slug, 'attachment_slug': self.slug, 'language': self.node.language}) <</code>>
...will display as:
if self.is_image: return reverse('nodes:image', kwargs={'slug': self.node.slug, 'image_slug': self.slug, 'language': self.node.language}) else: return reverse('nodes:attachment', kwargs={'slug': self.node.slug, 'attachment_slug': self.slug, 'language': self.node.language})
<<code>> and links
The <<code>>
macro does not play nice with links. If you want to have inline code link to something else, use ##...##
.
For example, use:
##[[insert|INSERT]]##
instead of
[[insert|<<code>>INSERT<</code>>]]
or
<<code>>[[insert|INSERT]]<</code>>
<<code>> and lists
If you want to build a list and put a block of code inside your list element, especially if you want to resume numbering after your code, you have to put the first line of code on the same line as your list text. (You may need to include "include=False", but some new/future version of the parser/renderer may be able to deal with this for you. Try it both ways if you're not sure.) For example:
# One # Two<<code inline=False>>int main(void) { return; } <</code>> # Three
- One
- Two
int main(void) { return; }
- Three
Syntax Highlighting
The <<code>>
macro also allows you to syntax highlight code. Add syntax highlighting to the above Python example like so:
<<code lang=python>> from reversion.models import Revision from .helpers import ProcessedContent class Node(models.Model): language = models.CharField(max_length=10, default='en-us') <</code>>
from reversion.models import Revision from .helpers import ProcessedContent class Node(models.Model): language = models.CharField(max_length=10, default='en-us')
Inline or Block Text
When using the <<code>>
macro with the lang=
attribute, you can also specify whether you want the code inline with the text that surrounds it, or to have it display in a block. (The Creole parser will attempt to guess what you want if you don't specify this attribute.)
Valid values are true
and false
.
Here is some <<code lang=c inline=true>>true inline code<</code>>.
Here is some true inline code
.
Here is some <<code lang=c inline=false>>false inline code<</code>>.
Here is some
false inline code
.
Here is some <<code lang=c inline=none>>none inline code<</code>>.
Here is some
none inline code
.
Supported Languages for Syntax Highlighting
Language | Allowed Short Name(s) |
---|---|
JavaScript+Mako | js+mako javascript+mako |
Brainfuck | brainfuck bf |
HTML+Cheetah | html+cheetah html+spitfire |
Bash | bash sh ksh |
CSS+Myghty | css+myghty |
Coldufsion HTML | cfm |
Smarty | smarty |
ApacheConf | apacheconf aconf apache |
Java | java |
JavaScript+Genshi Text | js+genshitext js+genshi javascript+genshitext javascript+genshi |
Erlang | erlang |
CoffeeScript | coffee-script coffeescript |
ANTLR With ActionScript Target | antlr-as antlr-actionscript |
d-objdump | d-objdump |
CSS+Ruby | css+erb css+ruby |
MySQL | mysql |
C++ | cpp c++ |
XML+Smarty | xml+smarty |
Felix | felix flx |
CMake | cmake |
Mako | mako |
Python | python py |
JavaScript+Myghty | js+myghty javascript+myghty |
XML+Mako | xml+mako |
Boo | boo |
ActionScript | as actionscript |
VB.NET | vb.net vbnet |
SquidConf | squidconf squid.conf squid |
D | d |
Logtalk | logtalk |
BBCode | bbcode |
Haml | haml HAML |
MuPAD | mupad |
XML+Ruby | xml+erb xml+ruby |
Debian Control file | control |
RHTML | rhtml html+erb html+ruby |
JavaScript+Cheetah | js+cheetah javascript+cheetah js+spitfire javascript+spitfire |
Python Traceback | pytb |
cfstatement | cfs |
Ada | ada ada95ada2005 |
objdump | objdump |
CSS+Mako | css+mako |
Gherkin | Cucumber cucumber Gherkin gherkin |
Ragel in Java Host | ragel-java |
Io | io |
Vala | vala vapi |
Haskell | haskell hs |
Lua | lua |
Sass | sass SASS |
ANTLR With ObjectiveC Target | antlr-objc |
XML | xml |
Groff | groff nroff man |
GLSL | glsl |
Genshi Text | genshitext |
Objective-J | objective-j objectivej obj-j objj |
GAS | gas |
Python console session | pycon |
MXML | mxml |
XML+Cheetah | xml+cheetah xml+spitfire |
Go | go |
Ragel in C Host | ragel-c |
aspx-cs | aspx-cs |
Ragel in Ruby Host | ragel-ruby ragel-rb |
HTML+Genshi | html+genshi html+kid |
Perl | perl pl |
INI | ini cfg |
c-objdump | c-objdump |
Tcsh | tcsh csh |
RConsole | rconsole rout |
CSS+Smarty | css+smarty |
ANTLR With C# Target | antlr-csharp antlr-c# |
Darcs Patch | dpatch |
LLVM | llvm |
Nginx configuration file | nginx |
AppleScript | applescript |
Text only | text |
Literate Haskell | lhs literate-haskell |
PHP | php php3 php4 php5 |
MiniD | minid |
Ooc | ooc |
SQL | sql |
NASM | nasm |
Debian Sourcelist | sourceslist sources.list |
Delphi | delphi pas pascal objectpascal |
aspx-vb | aspx-vb |
HTML+Evoque | html+evoque |
NumPy | numpy |
Modula-2 | modula2 m2 |
HTML+Django/Jinja | html+django html+jinja |
CSS+PHP | css+php |
VimL | vim |
CSS+Genshi Text | css+genshitext css+genshi |
Ragel | ragel |
XML+Evoque | xml+evoque |
haXe | hx haXe |
Redcode | redcode |
Django/Jinja | django jinja |
Scala | scala |
Lighttpd configuration file | lighty lighttpd |
Ragel in D Host | ragel-d |
Ruby irb session | rbcon irb |
CSS | css |
JavaScript+Smarty | js+smarty javascript+smarty |
Asymptote | asy asymptote |
XML+PHP | xml+php |
Fortran | fortran |
Gnuplot | gnuplot |
REBOL | rebol |
ERB | erb |
Befunge | befunge |
Dylan | dylan |
MoinMoin/Trac Wiki markup | trac-wiki moin |
Matlab | matlab octave |
C | c |
HTML | html |
Genshi | genshi kid xml+genshi xml+kid |
reStructuredText | rst rest restructuredtext |
IRC logs | irc |
Prolog | prolog |
CSS+Django/Jinja | css+django css+jinja |
Smalltalk | smalltalk squeak |
YAML | yaml |
HTML+Myghty | html+myghty |
Makefile | make makefile mf bsdmake |
XSLT | xslt |
S | splus s r |
sqlite3con | sqlite3 |
OCaml | ocaml |
Gettext Catalog | pot po |
Ruby | rb ruby |
HTML+Smarty | html+smarty |
POVRay | pov |
Ragel in CPP Host | ragel-cpp |
Evoque | evoque |
Java Server Page | jsp |
ABAP | abap |
HTML+Mako | html+mako |
Diff | diff udiff |
Matlab session | matlabsession |
HTML+PHP | html+php |
Python 3.0 Traceback | py3tb |
ANTLR With Java Target | antlr-java |
JavaScript+Ruby | js+erb javascript+erb js+ruby javascript+ruby |
Makefile | basemake |
ANTLR With Python Target | antlr-python |
cpp-objdump | cpp-objdump c++-objdumb cxx-objdump |
Python 3 | python3 py3 |
Batchfile | bat |
ANTLR | antlr |
JavaScript+Django/Jinja | js+django javascript+django js+jinja javascript+jinja |
Cython | cython pyx |
Scheme | scheme scm |
Erlang erl session | erl |
Clojure | clojure clj |
Modelica | modelica |
ANTLR With Perl Target | antlr-perl |
Myghty | myghty |
Tcl | tcl |
MOOCode | moocode |
Newspeak | newspeak |
Bash Session | console |
Raw token data | raw |
C# | csharp c# |
TeX | tex latex |
Cheetah | cheetah spitfire |
Objective-C | objective-c objectivec obj-c objc |
JavaScript | js javascript |
Common Lisp | common-lisp cl |
Embedded Ragel | ragel-em |
ActionScript 3 | as3 actionscript3 |
ANTLR With CPP Target | antlr-cpp |
JavaScript+PHP | js+php javascript+php |
Ragel in Objective C Host | ragel-objc |
XML+Django/Jinja | xml+django xml+jinja |
ANTLR With Ruby Target | antlr-ruby antlr-rb |
XML+Myghty | xml+myghty |