MyBB Hacks

Full Version: Syntax Highlighter (beta)
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
This is my first ever attempt at writing a syntax highlighter.  I have not looked into anyone else's code either, so I'm proud to say that I thought up all the algorithms used in this code by myself (though someone else may have already used them, IDK >_>).

Doing a few benchmarks against GeSHi (what's used on most forum systems, like phpBB and vBulletin), my code performs, on average, 2 times faster.  XML/HTML is done by a dedicated algorithm, so is usually around 5-6 times faster than GeSHi.
Still, it's rather slow, plus, my algorithm has a little flaw, which, in a worst case scenario, may cause it to run quite slowly.  For most codes however, it shouldn't be an issue.
I suggest installing a preparser if you plan on using this.

One thing to note is that this algorithm is more designed for speed
than ease of extensibility, unlike GeSHi.

Features:
  • Tabs are displayed correctly (not converted to spaces)
  • Adds a Select button for easy code selection
  • Supported languages:
    • C
    • C++
    • Java
    • Visual Basic
    • PHP (custom)
    • XML/HTML
    • Javascript
    • Assembler
    • SQL
    • Batch
    • INI

Note that this plugin requires two code edits to /inc/class_parser.php.  Details on the code edits are provided in the package, as well as a pre-edited MyBB 1.2.10-1.2.12 file.
[attachment=44]
(keyword lists were copied from Notepad++ - I didn't write them up myself; props to the authors of Notepad++ for that, and also, for the awesome editor)
EDIT: Updated


Demonstrations

C Code
#include <stdio.h>
int main()
{
	printf("Goodbye, cruel world... :(");
	return 0;
}

PHP Code:
<?php
$myvar = 'b';
?>
<html>
<head>
<script language="javascript">
<!--
function runstuff()
{
	var mytext = "hullo";
	if(mytext.match(/hu?llo/i))
		alert("Hey!");
}
//-->
</script>
</head>
<body onload="runstuff();">
<?php
echo "This is variable \$myvar: $myvar";
?>
<img src="http://someplace" />
</body></html>

Batch Script
if exist %1 goto end
for %%a IN *.exe DO echo "%%a"
:end


SQL Code
SELECT * FROM mybb_users WHERE username LIKE "%me%"

hey mate. you just starting helping your forum to grow up.
I would like to be a part of this action.
and thanks for this great plugin gonna try it
Thanks pepotiger for that!
This is incredible, exactly what I've wanted in MyBB for a long while now (second only to the Mod CP I think). I could never get Geshi to work, and the lovely select all button is great. You'd better update this for 1.4 Tongue
Lol, thanks blueparukia.  ModCP is coming in 1.4 so you shouldn't need to worry Smile

This was more of a personal challenge.  It was interesting rewriting the algorithm about 5 times to get it to go this fast.


I didn't find getting GeSHi to work too difficult.  In fact, I may make an integration plugin for it, for those who want the extra languages, or just like it better Tongue
Looks really good, the PHP highlighting seems very NotePad++ like Tongue
Thanks MrDoom Smile
Hehe, I use Notepad++ to edit all my files, so I guess I'm influenced by it.
But one can easily edit the CSS file to suit oneself: http://mybbhacks.zingaburga.com/css/highlight.css
Found a little minor security exploit with this.
Have updated the package to patch it.
Hi!

Nice work, ZiNgA BuRgA (my english is bad, sorry - i come from germany Wink)!
I have installed your Plugin and i find that great, but i need line numbers for this Plugin. You can make this?

Thanks
Hi terra_c,

Actually, I originally had line numbers, however, there's an odd alignment issue with Firefox I can't seem to fix.  For some reason, the line numbers wouldn't line up with the actual lines in Firefox... Ouch

It's not too difficult if you want to do it yourself, but I can't help you on misalignment.
Pages: 1 2
Reference URL's