This is an open source PHP module that provides a function FormatRBCode(). It takes a string of REALbasic code, and returns an xhtml formatted string. The string is best wrapped by <pre></pre>, but is returned without it because there are other valid placements for the code.
The purpose of this is to make it easier to publish good-looking REALbasic code on websites.
The function handles coloring the text and managing indentation levels.
This page also contains the unit test source code (below). Although the function may not handle bad code correctly, all compiling code should render just as it does in the REALbasic source code editor. If you find any valid code that isn't rendered correctly, please let me know at jonj@realsoftware.com.
The PHP source, including this page as an example, is available here.
Sample rendering:
Protected Sub TestFunction()
#if TargetMacOS
MsgBox "You're on a Mac!"
#else
MsgBox "You're not on a Mac!"
#endif
dim i as integer = 1
dim s as string = "Foo"
dim d as double = 2.3
dim s as single = 2348572983
dim c as color = &cFF00DD
dim b as boolean = true
if i > 0 then
b = false
end if
// One line if:
if i = 0 then b = true
// This comment style works
' This comment style works too
' All the &_ integer definitions work
i = &h1 + &b01010 + &o01273
' Some loops
for i = 0 to 100
do
while
wend
loop
next
' try catch
try
s = "A line " + _
"continued"
catch
end try
End Sub
xhtml source:
<span style="color: #000000;"><span style="color: #0000FF;">Protected</span> <span style="color: #0000FF;">Sub</span> TestFunction()<br /> <span style="color: #0000FF;">#if</span> TargetMacOS<br /> MsgBox <span style="color: #6600FE;">"You're on a Mac!"</span><br /> <span style="color: #0000FF;">#else</span><br /> MsgBox <span style="color: #6600FE;">"You're not on a Mac!"</span><br /> <span style="color: #0000FF;">#endif</span><br /> <br /> <span style="color: #0000FF;">dim</span> i <span style="color: #0000FF;">as</span> <span style="color: #0000FF;">integer</span> = <span style="color: #336698;">1</span><br /> <span style="color: #0000FF;">dim</span> s <span style="color: #0000FF;">as</span> <span style="color: #0000FF;">string</span> = <span style="color: #6600FE;">"Foo"</span><br /> <span style="color: #0000FF;">dim</span> d <span style="color: #0000FF;">as</span> <span style="color: #0000FF;">double</span> = <span style="color: #006633;">2.3</span><br /> <span style="color: #0000FF;">dim</span> s <span style="color: #0000FF;">as</span> <span style="color: #0000FF;">single</span> = <span style="color: #006633;">2348572983</span><br /> <span style="color: #0000FF;">dim</span> c <span style="color: #0000FF;">as</span> <span style="color: #0000FF;">color</span> = &c<span style="color: #FF0000;">FF</span><span style="color: #00BB00;">00</span><span style="color: #0000FF;">DD</span><br /> <span style="color: #0000FF;">dim</span> b <span style="color: #0000FF;">as</span> <span style="color: #0000FF;">boolean</span> = <span style="color: #0000FF;">true</span><br /> <br /> <span style="color: #0000FF;">if</span> i > <span style="color: #336698;">0</span> <span style="color: #0000FF;">then</span><br /> b = <span style="color: #0000FF;">false</span><br /> <span style="color: #0000FF;">end</span> <span style="color: #0000FF;">if</span><br /> <br /> <span style="color: #800000;">// One line if:</span><br /> <span style="color: #0000FF;">if</span> i = <span style="color: #336698;">0</span> <span style="color: #0000FF;">then</span> b = <span style="color: #0000FF;">true</span><br /> <br /> <span style="color: #800000;">// This comment style works</span><br /> <span style="color: #800000;">' This comment style works too</span><br /> <br /> <span style="color: #800000;">' All the &_ integer definitions work</span><br /> i = <span style="color: #336698;">&h1</span> + <span style="color: #336698;">&b01010</span> + <span style="color: #336698;">&o01273</span><br /> <br /> <span style="color: #800000;">' Some loops</span><br /> <span style="color: #0000FF;">for</span> i = <span style="color: #336698;">0</span> <span style="color: #0000FF;">to</span> <span style="color: #336698;">100</span><br /> <span style="color: #0000FF;">do</span><br /> <span style="color: #0000FF;">while</span><br /> <br /> <span style="color: #0000FF;">wend</span><br /> <span style="color: #0000FF;">loop</span><br /> <span style="color: #0000FF;">next</span><br /> <br /> <span style="color: #800000;">' try catch</span><br /> <span style="color: #0000FF;">try</span><br /> s = <span style="color: #6600FE;">"A line "</span> + _<br /> <span style="color: #6600FE;">"continued"</span><br /> <span style="color: #0000FF;">catch</span><br /> <br /> <span style="color: #0000FF;">end</span> <span style="color: #0000FF;">try</span><br /><span style="color: #0000FF;">End</span> <span style="color: #0000FF;">Sub</span><br /><br /></span>