imported>mutante m (→Source) |
imported>mutante m (User:DrOwl/wikiFiglet moved to Figlet Extension: hard to find in userspace) |
(No difference)
|
Revision as of 06:35, 6 November 2006
Integrate figlet text into wiki pages using figletlink in a custom Mediawiki extension:
this is a first untested version with just monkey knolage of how to make it work
Syntax
<figlet>text</figlet> (default font=standard)
<figlet font=fontname>text</figlet> (set another font)
<figlet>$fonts</figlet> (show font list)
<figlet font=$self>$self</figlet> (special for template usage, $self=pagename)
Example
<figlet font=23>moo</figlet>
example Result
| '_ ` _ \ / _ \ / _ \ | | | | | | (_) | (_) | |_| |_| |_|\___/ \___/
test Result
<figlet font=`cat /etc/passwd`>`cat /etc/passwd`</figlet>
(not installed on anything this is only beta i dont have figlet installed on this server)
Source
<highlightSyntax> <?php
- Figlet Mediawiki extension
- using shell figlet
- by DrOwl 21.06.2005 modded from
- by mutante 25.03.2005
- modded again 21.05.2005 ,mutante
- modded again Owl & mutante 20.06.2006 - the slightly more secure 23 line version
$wgExtensionFunctions[] = "wfFigletExtension";
- extension hook callback function
function wfFigletExtension() { global $wgParser;
- install parser hook for <figlet> tags
$wgParser->setHook( "figlet", "renderFiglet" ); } function renderFiglet( $input ) { global $wgOutputEncoding; $input = mysql_escape_string($input);
$output="
"; $output.=shell_exec("figlet " . escapeshellarg($input)); $output.="
";
return $output; } ?> </highlightSyntax>
<highlightSyntax> <?php
- Figlet Mediawiki extension
- using shell figlet
- by DrOwl 21.06.2005 modded from
- by mutante 25.03.2005
- modded again 21.05.2005 ,mutante
- modded again Owl & mutante 20.06.2006 - the slightly more secure 23 line version
- modded again, mutante 22.06.2006 - the advanced version with fonts
$wgExtensionFunctions[] = "wfFigletExtension";
- extension hook callback function
function wfFigletExtension() { global $wgParser;
- install parser hook for <figlet> tags
$wgParser->setHook( "figlet", "renderFiglet" );
}
function renderFiglet( $input, $argv, &$parser) { global $wgOutputEncoding; $baseurl="http://s23.org/wiki/";
if ($argv["font"] && $argv["font"] <80 && ctype_alnum($argv["font"])) { $userfont=$argv["font"]; } else { $userfont="standard"; }
$input = mysql_escape_string($input); $localParser = new Parser();
if ($input == "\$fonts") {
$fonts.=shell_exec("cd /usr/share/figlet; ls *.flf | cut -d. -f 1| xargs"); $fonts=explode(" ",$fonts);
$syntax.=" Available figlet fonts: ";
foreach ($fonts as $font) { $font=trim($font); $syntax.="$font "; }
$parsesyntax = $localParser->parse($syntax, $parser->mTitle, $parser->mOptions);
$output.=$parsesyntax->getText();
} else {
$output="
"; if ($input =="\$self") { # $nt = Title::makeTitle( $row->page_namespace, $row->page_title ); # $input = $nt->getFullURL(); $title=$_GET["title"]; $title=explode("/",$title); $title=$title[2]; $input=$title; $fileinfocmd="head -n8 /usr/share/figlet/".$title.".flf"; $description=`$fileinfocmd`; $comment="<br \>This font for [[figlet]] is called \"'''$title'''\". File info: $description You can create it with the wiki syntax: '''<figlet font=$title>text</figlet>'''. Other fonts are in [[:Category:Figlet|Category:Figlet]]."; $parsecomment = $localParser->parse($comment, $parser->mTitle, $parser->mOptions); $comment=$parsecomment->getText(); } if ($userfont == "\$self") { $userfont=$_GET["title"]; $userfont=explode("/",$userfont); $userfont=$userfont[2]; } $uinput=escapeshellarg($input); $userfont=escapeshellarg($userfont); $figlet=shell_exec("figlet -f $userfont $uinput"); if (!$figlet) { $syntax.="Figlet error: '''''could not find the fontfile (or other fnord)''''', fontname given: $userfont check available fonts in [[:Category:Figlet|Category:Figlet]] or via '''<figlet>$fonts</figlet>'''."; $parsesyntax = $localParser->parse($syntax, $parser->mTitle, $parser->mOptions); $output.=$parsesyntax->getText(); } else { # do we also need to fix <! here? $figlet = str_replace("<!","<!",$figlet); $figlet = str_replace("</","</",$figlet); # actual output $output.=$figlet; if ($comment) { $output.=$comment; } } $output.="
";
}
return $output; } ?> </highlightSyntax>
not installed yet, see ongoing talk.
To avoid problems with </pre> inside code in a <pre>, use <pre>blah blah code <nowiki></pre></nowiki> blah blah more code </pre>.
Even better solution now is using <highlightSyntax>, installed Syntax Highlighting Extension.