From: Sir R. B. <rbu...@ci...> - 2009-01-08 23:03:04
|
Benny Baumann wrote: > There actually are two ways to do this with GeSHi. > > The first way is using COMMENT_REGEXP to match those magics (only those > $# given they are in front of a keyword) and thus hide them from further > processing. This can be done by something like this: > > 42 => '/(?<!\w)\$\#(?=\w)/', > > where 42 is any still free index in the comment_regexp array of the > perl.php language file. > > Second version, you define a symbol group for multi-char symbols (like > $_, $#, ...) and place its definition BEFORE the existing single char > symbol groups. This is to ensure GeSHi uses the multi-char symbols with > higher priority than single-char ones, as the processing of symbols is > ordered by definition of the groups they belong to. > > Could you provide me with a list of these additional multi-char symbols > (as complete as possible), so I can do a fix in the release? > > Regards, > BenBE. > > Sir Robert Burbridge schrieb: > >> Hey all, >> >> I've just started using Geshi -- it was a dependency of the >> "codecolorer" plugin for WordPress -- and I'm impressed so far. I >> have a fledgling code blog for which I was trying out some syntax >> highlighters and I came across this apparent limitation in Geshi: in >> highlighting perl code, it seems to recognize the basic "symbols" in >> perl ($, @, %, etc.) but I couldn't get it to recognize perl's "$#" >> symbol; the "last index" symbol. >> >> You can see an example of the (apparent) failure here: >> http://tech.ification.org/?p=12 >> >> Notice that in the snippet the variables are all highlighted except >> for occurrences of $#arr: >> >> ### Create an array. >> my @arr = ('a', 'b', 'c', 'd', 'e'); >> ### $length is now 5 >> my $length = scalar(@arr); >> ### $lastIndex is now 4 >> my $lastIndex = $#arr; >> ### Get the last element of the array: 'e' >> my $el = $arr[$#arr]; >> ### Get the fourth-to-last element: 'b' >> my $el = $arr[$#arr - 4]; >> >> For some reason those are missed. I peeked into the code and have >> already opened the perl.php language file and modified it thus: >> >> 131 'SYMBOLS' => array( >> 132 '$#', '<', '>', '=', >> 133 '!', '@', '~', '&', '|', >> 134 '+','-', '*', '/', '%', >> 135 ',', ';', '?', ':' >> 136 ), >> >> (notice the new first element of the array). This wasn't sufficient >> to implement it. I'm no php whiz, but I can get by in it. Can >> someone offer me some advice about how to get perl's extra magic >> recognized? >> >> Thanks! >> >> -Sir Robert >> >> Thanks, Benny. I went ahead and put together a complete (I hope!) expo of perl syntax that is likely to be relevant here. It shows Geshi in action against a slew of perl black magic. You can see it here (http://tech.ification.org/?p=63). I didn't include it in this message, as it would be pretty useless. Also, I took the liberty of addressing some of the things I noticed at the top of the post. I'm not familiar with Geshi's inner workings, so some of these might be desired behavior, or not addressable here. Also, I pointed out some possible regexp patterns that could be used to alleviate a few of the less straightforward issues I noticed. Let me know if there's anything more I can do! Thanks again, -Sir Robert |