Template:CodeCommentary

From Linux Web Expert

 

Template documentation

Usage

Use the template to display blocks of code with syntax highlighting interspersed with blocks of commentary.

Additionally, you can add an icon next to a specific line of the code block, of an eye (indicating "look here!") or of a pointing hand (this may take a link; since we cannot directly add a link a class name in a code block, this is the next best thing.

And finally, you can add a block of not-quite-code with pre-style formatting (no line numbers, monospace font, etc) with an optional arrow icon next to a line.

To add a commentary block, do the following:

{{CodeCommentary|type=comment|content=
Here goes all my lovely lovely commentary.
}}

To add a code block with no icon, do the following (using the language of your choice from this list:

{{CodeCommentary|type=code|lang=python|content=
#!/usr/bin/python3 ...
}}

To add a code block with an eyes icon at line 3 in the block (counting from 1 always), do:

{{CodeCommentary|type=code|lang=python|icon=eyes|pos=3|content=
#!/usr/bin/python3

import this
import that
}}

To add a code bloc with a hand icon at line 3 in the block and a link, do:

{{CodeCommentary|type=code|lang=python|icon=hand|pos=3|link=https://www.pylint.org/|content=
#!/usr/bin/python3

import this
import that
}}

You may also change the line numbering to start with a different number, if you are spltting up a longer piece of code into blocks for commentary, as intended with this template. TO start a code block with line 5, do:

{{CodeCommentary|type=code|lang=python|start=5|content=
#!/usr/bin/python3

import this
import that
}}

To add a block of ...stuff... with pre-style formatting and an arrow icon, use

{{CodeCommentary|type=pre|icon=arrow|pos=2|content=
1 max continue none /bin/bash ./worker --skipdone --exclusive --log --configfile /etc/dumps/confs/wikidump.conf.dumps --date {STARTDATE} --onepass --prereqs --skipjobs metahistorybz2dump,metahistorybz2dumprecombine,metahistory7zdump,metahistory7zdumprecombine,xmlflowhistorydump
6 max continue none /bin/bash ./worker --skipdone --exclusive --log --configfile /etc/dumps/confs
}}

Warnings

The syntax highlighter, or maybe it's MediaWiki, will toss leading blanks on the first and last lines of content of your code blocks. Stop this from happening by putting a zero-width-space (​) as the first character of such a line.

You can use the template Template:ZWS to add one at the beginning of such lines.

You may also need to use Template:( to replace left curly brackets in some circumstances, or Template:)) to replace double right curly brackets.

Pre-blocks next to commentary blocks may be displayed with extra white space between them during an edit preview. After save they should look fine.

Examples

Do:

{{CodeCommentary|type=comment|content=
Here is a wee bit of text because, meh, we need it for an example

A bit more text because that's how we roll.

Ok done now.
}}
{{CodeCommentary|type=code|start=1|lang=python|icon=hand|pos=3|link=User:ArielGlenn|content=
import os
import sys
from subprocess import PIPE

# just a few line of crap to illustrate the point
}}
{{CodeCommentary|type=pre|icon=arrow|pos=2|content=
dblist=/srv/mediawiki/dblists/all.dblist
privatelist=/srv/mediawiki/dblists/private.dblist
closedlist=/srv/mediawiki/dblists/closed.dblist
skipdblist=/etc/dumps/dblists/skip.dblist
flowlist=/srv/mediawiki/dblists/flow.dblist
}}

to get

 

Here is a wee bit of text because, meh, we need it for an example

A bit more text because that's how we roll.

Ok done now.

 

import os
import sys
from subprocess import PIPE

# just a few line of crap to illustrate the point
dblist=/srv/mediawiki/dblists/all.dblist
privatelist=/srv/mediawiki/dblists/private.dblist
closedlist=/srv/mediawiki/dblists/closed.dblist
skipdblist=/etc/dumps/dblists/skip.dblist
flowlist=/srv/mediawiki/dblists/flow.dblist

<templatedata> { "params": { "type": { "label": "Block type", "description": "\"code\" for a code block, \"commentary\" for a commentary block, \"pre\" for an unnumbered pre-style block", "type": "string", "default": "code" }, "content": { "label": "Block content", "description": "Content of a code commentary block, or code in the case of a code block", "example": "Here is some code commentary.", "type": "content" }, "pos": { "label": "Icon position", "description": "If an icon is specified, place that icon next to this line in the code block", "example": "3", "type": "number" }, "icon": { "label": "Icon", "description": "In a code block, \"eyes\" {eye icon) or \"hand\" (hand icon), in a pre block, \"arrow\" (arrow icon)", "example": "eyes", "type": "string" }, "link": { "label": "Hand link target", "description": "In a code block, if \"hand\" is specified, it can be given a link target via this parameter.", "example": "https://www.mediawiki.org", "type": "url" }, "lang": { "label": "Block code language", "description": "One of the languages known to the SyntaxHighlight extension", "example": "python", "type": "string" }, "start": { "label": "Start number of code block", "description": "For code blocks, number the lines in this block starting from this number", "example": "5", "type": "number" } }, "description": "Display code blocks interspersed with blocks of commentary.", "format": "block" } </templatedata>