imported>DrOwl (→Source) |
imported>DrOwl No edit summary |
||
(28 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
Integrate [[figlet]] text into wiki pages using [http://figletlink/ figletlink] in a custom [[Mediawiki]] extension: |
Integrate [[figlet]] text into wiki pages using [http://figletlink/ figletlink] in a custom [[Mediawiki]] extension: |
||
this is a first untestedversion with justmonkey knolage of how to make it work |
|||
=== Syntax === |
=== Syntax === |
||
<nowiki><figlet>text</figlet></nowiki> |
|||
<nowiki><figlet>text</figlet></nowiki> (default font=standard) |
|||
==== Example ==== |
|||
<nowiki><figlet font=fontname>text</figlet></nowiki> (set another font) |
|||
<nowiki><figlet>$fonts</figlet></nowiki> (show font list) |
|||
<nowiki><figlet font=$self>$self</figlet></nowiki> (special for template usage, $self=pagename) |
|||
=== Example === |
|||
<nowiki><figlet>moo</figlet></nowiki> |
<nowiki><figlet>moo</figlet></nowiki> |
||
<figlet>moo</figlet> |
|||
=== example Result === |
|||
=== Result === |
|||
<figlet font=digital>moo</figlet> |
|||
<pre> |
|||
| '_ ` _ \ / _ \ / _ \ |
|||
| | | | | | (_) | (_) | |
|||
|_| |_| |_|\___/ \___/ |
|||
</pre> |
|||
(not installed on anything this is only beta i dont have figlet installed on this server) |
|||
=== Example === |
|||
<nowiki><figlet>$fonts</figlet></nowiki> |
|||
=== Result === |
|||
<figlet>$fonts</figlet> |
|||
For all fonts also see [[:Category:Figlet]] |
|||
=== Source === |
=== Source === |
||
Historic: The original idea by [[User:DrOwl|DrOwl]]: "this is a first untested version with just monkey knolage of how to make it work" |
|||
<pre> |
|||
<highlightSyntax> |
|||
<?php |
<?php |
||
# Figlet Mediawiki extension |
# Figlet Mediawiki extension |
||
# using shell figlet |
# using shell figlet |
||
# by DrOwl 21.06.2005 |
# by DrOwl 21.06.2005 modded from |
||
#modded from |
|||
# by mutante 25.03.2005 |
# 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 |
|||
#install extension hook |
|||
$wgExtensionFunctions[] = "wfFigletExtension"; |
$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="<pre>"; |
|||
$output.=shell_exec("figlet " . escapeshellarg($input)); |
|||
$output.="</pre>"; |
|||
return $output; |
|||
} |
|||
?> |
|||
</highlightSyntax> |
|||
=== Current 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 |
|||
# modded again, mutante 22.06.2006 - the advanced version with fonts |
|||
# modded again, mutante 06.11.2006 - fixed bug (ctype_alnum) & added ExtensionCredits |
|||
$wgExtensionFunctions[] = "wfFigletExtension"; |
|||
#extension hook callback function |
#extension hook callback function |
||
function wfFigletExtension() { |
function wfFigletExtension() { |
||
global $wgParser; |
|||
#install parser hook for <figlet> tags |
|||
$wgParser->setHook( "figlet", "renderFiglet" ); |
|||
#install parser hook for <figlet> tags |
|||
} |
|||
$wgParser->setHook( "figlet", "renderFiglet" ); |
|||
} |
|||
function renderFiglet( $input ) { |
|||
$wgExtensionCredits['parserhook'][] = array( |
|||
'name' => 'figlet extension', |
|||
'author' => '[[User:DrOwl|DrOwl]] / [[User:mutante|mutante]]', |
|||
'url' => 'http://s23.org/wiki/Figlet Extension', |
|||
'version' => '0.23', |
|||
); |
|||
function renderFiglet( $input, $argv, &$parser) { |
|||
global $wgOutputEncoding; |
global $wgOutputEncoding; |
||
$baseurl="http://s23.org/wiki/"; |
|||
# $input = mysql_escape_string($input); |
|||
if (!$input) $input = "mu"; #ifno input then mu |
|||
# if ($argv["font"] && $argv["font"] <80 && ctype_alnum($argv["font"])) { |
|||
$input =~ /[Aa-Zz]|[1-0]; |
|||
# <- this didnt work anymore after mediawiki and php upgrade somehow, removed "ctype_alnum", 061106 |
|||
# $input = mysql_escape_string($input); |
|||
if ($argv["font"] && $argv["font"] ) { |
|||
$figlet = passthru('echo $input | /home/drowl/figlet/figlet -d /home/drowl/figlet/fonts'); |
|||
$userfont=$argv["font"]; |
|||
$output="<nowiki><pre></nowiki>"; |
|||
} else { |
|||
$output.="$figlet"; |
|||
$userfont="standard"; |
|||
$output.="<nowiki></pre></nowiki>"; |
|||
} |
|||
$input = mysql_escape_string($input); |
|||
return $output; |
|||
$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.="[[figlet/fonts/$font|$font]] "; |
|||
} |
} |
||
$parsesyntax = $localParser->parse($syntax, $parser->mTitle, $parser->mOptions); |
|||
$output.=$parsesyntax->getText(); |
|||
} else { |
|||
$output="<pre>"; |
|||
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: '''<nowiki><figlet font=$title>text</figlet></nowiki>'''. |
|||
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 '''<nowiki><figlet>$fonts</figlet></nowiki>'''."; |
|||
$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.="</pre>"; |
|||
# $output.="userfont: $userfont uinput: $uinput"; |
|||
} |
|||
return $output; |
|||
} |
|||
?> |
?> |
||
</highlightSyntax> |
|||
</pre> |
|||
See ongoing [[User_talk:DrOwl/wikiFiglet|talk]]. |
|||
We use [http://meta.wikimedia.org/wiki/Syntax_Highlighting_Extension Syntax Highlighting Extension] here to highlight the [[PHP]] source. |
|||
[[Category:Mediawiki Extensions]] |
[[Category:Mediawiki Extensions]] |
||
[[Category:Figlet]] |
Latest revision as of 09:56, 11 July 2008
Integrate figlet text into wiki pages using figletlink in a custom Mediawiki extension:
Syntax[edit]
<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[edit]
<figlet>moo</figlet>
<figlet>moo</figlet>
Result[edit]
<figlet font=digital>moo</figlet>
Example[edit]
<figlet>$fonts</figlet>
Result[edit]
<figlet>$fonts</figlet>
For all fonts also see Category:Figlet
Source[edit]
Historic: The original idea by DrOwl: "this is a first untested version with just monkey knolage of how to make it work"
<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>
Current Source[edit]
<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
- modded again, mutante 06.11.2006 - fixed bug (ctype_alnum) & added ExtensionCredits
$wgExtensionFunctions[] = "wfFigletExtension";
- extension hook callback function
function wfFigletExtension() { global $wgParser;
- install parser hook for <figlet> tags
$wgParser->setHook( "figlet", "renderFiglet" );
}
$wgExtensionCredits['parserhook'][] = array(
'name' => 'figlet extension', 'author' => 'DrOwl / mutante', 'url' => 'http://s23.org/wiki/Figlet Extension', 'version' => '0.23',
);
function renderFiglet( $input, $argv, &$parser) { global $wgOutputEncoding; $baseurl="http://s23.org/wiki/";
- if ($argv["font"] && $argv["font"] <80 && ctype_alnum($argv["font"])) {
- <- this didnt work anymore after mediawiki and php upgrade somehow, removed "ctype_alnum", 061106
if ($argv["font"] && $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.="
";
- $output.="userfont: $userfont uinput: $uinput";
}
return $output; } ?> </highlightSyntax>
See ongoing talk.
We use Syntax Highlighting Extension here to highlight the PHP source.