Syntax::Highlight::Perl6 - Perl 6 Syntax Highlighter
version 0.88
### NOTE: This is needed and will be removed in future releases use STD; use Syntax::Highlight::Perl6; # Creates the Perl6 syntax highlighter object my $p = Syntax::Highlight::Perl6->new( text => 'my $foo;' ); # Prints html that can be embedded in your pages print $p->snippet_html; # Prints html with css (useful for full pages) print $p->simple_html; # Prints html that has a JavaScript node viewer print $p->full_html; # Prints ANSI escaped color sequences (useful for console and IRC output) print $p->ansi_text; # Prints an array of token records (useful for other libraries) print $p->tokens;
Syntax::Highlight::Perl6 parses Perl 6 source code using STD cpan package. It matches parse tree nodes to colors then returns them in different output formats. It can be used to create web pages with colorful source code samples in its simple and snippet html modes, or it can be used as a learning tool in examining STD.pm6's output using the JavaScript node viewer in its full html mode. Or you can use its parse tree Perl 5 records to build your next great idea.
Syntax::Highlight::Perl6
The available output formats are:
HTML (snippet,simple and full)
ANSI escaped color sequences
Perl 5 array of parse trees
This is an object-oriented module. The following methods are available:
Returns the syntax highlighting object. It needs a hash of options. The following options are available:
text
This is a required option. This is where you should provide the Perl 6 code.
rule
parse rule name for STD.pm6 to parse against (default: TOP)
inline_resources
Flag to enable/disable CSS/JavaScript HTML inlining. (default: 0 (Disabled))
resource_url
HTML resource url that will be appended when resource inlining is disabled.
page_title
HTML page title for simple_html and full_html (default: q{})
simple_html
full_html
utf8_decode
Flag to enable/disable utf8 decoding. (default: 1 (Enabled))
tmp_prefix
STD temporary files directory prefix. (default: q{})
Returns the Perl 6 highlighted HTML string that can be embedded. No CSS or JavaScript is inside.
Returns the Perl 6 highlighted HTML string. The HTML code is the same as full_html but lacks a JavaScript Parse Tree Viewer.
Returns the Perl 6 highlighted HTML string. The HTML consists of a JavaScript Parse Tree Viewer along with CSS-styling. It can inlined if inline_resources option is 1.
Returns a Perl highlighted ANSI escape color string.
Returns an array of hashes containing parsed token records. The hash record is structured as:
+-----------+---------+-----------+------------+---------+ | Matched | Matched | Matched | Parse tree | Matched | | Last | string | rule | separated | Line | | Position | buffer | name | by spaces | Number | | | | | | | | $last_pos | $buffer | $rule | $tree | $lineno | +-----------+---------+-----------+------------+---------+
An example of the tokens method in action:
tokens
use Data::Dumper; print Dumper($p->tokens);
The shortened output looks like:
$VAR1 = { 'tree' => '', 'rule' => 0, 'buffer' => '', 'last_pos' => 0 }; $VAR2 = { 'tree' => 'statementlist statement statement_modexpr statement_expr EXPR termish noun value number integer ', 'rule' => 'number', 'buffer' => '1', 'last_pos' => 1 }; $VAR3 = { 'tree' => 'statementlist eat_terminator ', 'rule' => 0, 'buffer' => ';', 'last_pos' => 2 };
This module is dependent on Perl 5.10 features namely the regex engine and state variables (for STD.pm6). So there will be no Perl 5.8.x support in the future.
Discussion about this module and STD.pm6 is usually in #perl6 (irc://irc.freenode.net/perl6). This module lives in http://svn.perlide.org/padre/trunk/Syntax-Highlight-Perl6 . Larry Wall's STD.pm6 lives in http://github.com/perl6/std.
STD.pm6
If you find any bugs, please submit them to http://rt.cpan.org/NoAuth/Bugs.html?Dist=Syntax::Highlight::Perl6. Thanks.
These are the bugs that i am currently aware of:
Can't call method "bless" on an undefined value at STD.pm6 line 5269.
You have to put "use STD;" before using this module.
use STD; # this must be first for now use Syntax::Highlight::Perl6;
The project idea was inspired by Moritz Lenz (moritz) - http://www.nntp.perl.org/group/perl.perl6.users/2008/07/msg788.html . Larry Wall's gimme5-generated Perl5 STD.pmc is included to parse Perl 6 code. The initial STD tree traversal code was written by Paweł Murias (pmurias). It was replaced afterwards for performance reasons with Larry Wall's redspans traversal code. redspans stands for red for reductions, and spans from the "from/to span calculations".
gimme5
STD.pmc
redspans
red
spans
This library also includes the following libraries:
JQuery by John Resig (dual licensed under the MIT and GPL licenses).
Thanks guys. I could not have done it without you ;-)
Ahmad M. Zawawi <ahmad.zawawi@gmail.com>
This software is copyright (c) 2010 by Ahmad M. Zawawi.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
1 POD Error
The following errors were encountered while parsing the POD:
Non-ASCII character seen before =encoding in 'Paweł'. Assuming UTF-8
To install Syntax::Highlight::Perl6, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Syntax::Highlight::Perl6
CPAN shell
perl -MCPAN -e shell install Syntax::Highlight::Perl6
For more information on module installation, please visit the detailed CPAN module installation guide.