Lua To Html |
|
This particular Wiki does Lua syntax highlighting with some tricky Perl code. It supports the full Lua 5.1 syntax. You can customize it by modifying the embedded CSS. The standalone lua2html.pl can be found [here]. |
|
----- This particular Wiki does Lua syntax highlighting with some tricky Perl code by Mike Pall. It supports the full Lua 5.1 syntax. You can customize it by modifying the embedded CSS. The standalone lua2html.pl can be found [here].Mike and John, is this the latest version of this source code used by the wiki? (Maybe the latest master copy of this function can be maintained on the wiki?) One extension (as recently mentioned in GuestBook and DavidManura) we miht want to see is properly syntax highlighting interpreter input/output such as
That should not be difficult to add, and I'd offer to do the patch myself if desired. The wiki might provide a different environment for this--e.g. {{{!LuaInteractive}}}RiciLake and I have also brought up the desire for C syntax highlighting (GuestBook) for the C code that's often posted on this wiki. Perhaps, to avoid reinventing the wheel, we can just use the existing Syntax-Highlight-Engine-Kate with the C module [1] similar to as shown below for Lua. There's some alternates too, e.g. GNU enscript. --DavidManura ----- The following Perl code demonstrates using the Syntax-Highlight-Engine-Kate [2] Perl module to syntax highlight Lua. It has a bit more baggage than Mike's Perl code above, and as of version 0.2 it trips up on some Lua syntax (i.e. patches needed):
|
[!] VersionNotice: The source code requires a small change in _VERSION handling to work under Lua 5.1. Some additional changes might be needed for proper 5.1 syntax highlighting.
There is a Lua 4.0 version [3],
and a Lua 5.0 version [4], which is the same file with all the % signs for upvalues deleted.
Here is a sample web listing [5]
Run the Lua 4.0 version like so:
lua -f lua2html.lua x.lua > x.html
and the Lua 5.0 version like this:
lua lua52html.lua x.lua > x.html
lua2html.pl can be found [here].
$ lua
Lua 5.1 Copyright (C) 1994-2006 Lua.org, PUC-Rio
> = 1 + math.sqrt(2)
2.4142135623731
> print("math.sqrt(2)")
math.sqrt(2)
>
{{{!LuaInteractive
$ lua
Lua 5.1 Copyright (C) 1994-2006 Lua.org, PUC-Rio
> = 1 + math.sqrt(2)
2.4142135623731
>}}}
use strict;
use Syntax::Highlight::Engine::Kate::Lua;
my $sh = Syntax::Highlight::Engine::Kate::Lua->new(
substitutions => {
"<" => "<",
">" => ">",
"&" => "&",
" " => " ",
"\t" => " ",
"\n" => "<BR>\n",
},
format_table => {
Alert => ['<span class="alert">', '</span>'],
BaseN => ['<span class="basen">', '</span>'],
BString => ['<span class="bstring">', '</span>'],
Char => ['<cpan class="char">', '</span>'],
Comment => ['<span class="comment">', '</span>'],
DataType => ['<span class="datatype">', '</span>'],
DecVal => ['<span class="decval">', '</span>'],
Error => ['<span class="error">', '</span>'],
Float => ['<span class="float">', '</span>'],
Function => ['<span class="function">', '</span>'],
IString => ['<span class="istring">', '</span>'],
Keyword => ['<span class="keyword">', '</span>'],
Normal => ['', ''],
Operator => ['<span class="operator">', '</span>'],
Others => ['<span class="others">', '</span>'],
RegionMarker => ['<span class="regionmarker">', '</span>'],
Reserved => ['<span class="reserved">', '</span>'],
String => ['<span class="string">', '</span>'],
Variable => ['<span class="variable">', '</span>'],
Warning => ['<span class="warning">', '</span>'],
},
);
my $html = $sh->highlightText(qq(
local function test(y, z, ...)
for x in 1,y do
print(x)
end -- loop
local w = y * 2 + math.random()
print(2, y, 'test"2', "test\"'2'", [[math.random]], #z, 3, ...)
));
my $css = qq(
<style type="text/css">
span.comment { color: #00a000; }
span.string { color: #0000c0; }
span.keyword { color: #a00000; font-weight: bold; }
span.reserved { color: #a0a000; font-weight: bold; }
</style>
);
$html = qq(
<html>
<head>
$css
</head>
<body>
$html
</body>
);
print $html;