ActiveState::Scineplex - Perl extension to access Scineplex code lexer.


NAME

ActiveState::Scineplex - Perl extension to access Scineplex code lexer.


SYNOPSIS

  use ActiveState::Scineplex qw(Annotate);
  $color_info = Annotate($code, $lang, %options);


DESCRIPTION

Currently this module implements an interface consisting of one method, Annotate, which returns a scineplex-driven colorization for one or more lines of source code. It either returns a string giving the colorization or throws an exception.

    $color_info = Annotate($code, $lang, %options);

$code is a block of source-code -- lines are separated by any newline sequence.

$lang must be one of qw/perl python ruby vb xslt/.

%options include the following, with defaults in parentheses:

    outputFormat => 'html' | 'line' | 'classic' ('line')
    parsingStartState => number (0) 
    DumpSource => 0 | 1 (0)
    DumpEndState => 0 | 1 (0)
    DumpFoldLevels => 0 | 1 (0)
    StopAfterDataSectionLine1 => 0 | 1 (0)

The outputFormat is the most important option. In classic mode, Annotate echos back each character on the start of a line, followed by separating white-space and its style value:

    $res = Annotate('$abc = 3;', 'perl', outputFormat => 'classic');
    print $res;
    $       12
    a       12
    b       12
    c       12
    chr(32) 0
    =       10
    chr(32) 0
    3       4
    ;       10
    chr(10) 0

The numeric values can be found in the scintilla interface file, and are different for each language.

Setting outputFormat to line gives a terser output, and represents each numeric style with the character corresponding to the style added to the ASCII value of character '0':

    $res = Annotate('$abc = 3;', 'perl', outputFormat => 'line');
    print $res;
    <<<<0:04:

Setting outputFormat to html returns an HTML-encoded string containing the original code wrapped in span tags with generic classes with names like "variable", "operator", etc. This kind of output is designed to be wrapped in pre tags, and styled with a CSS file of that contains rules like

    pre span.comments {
      color: 0x696969;
      font-style: italic;
    }

Default text is not placed in a span tag.

The parsingStartState setting should be used only when you know that the code starts with a given style, such as lines 3-5 of a multi-line string.

The DumpSource flag is used only with line output. It is intended mostly for human consumption, and produces output like the following:

    $res = Annotate('$abc = 3;', 'perl', DumpSource=>1);
    print $res;
    $abc = 3;
    <<<<0:04:

The DumpEndState is used only in line mode, and gives the styles for whichever characters constitute the line-end sequence:

    $res = Annotate(qq($abc = 3;\r\n), 'perl', DumpSource=>1, DumpEndState=>1);
    print $res;
    $abc = 3;
    <<<<0:04:00

The DumpFoldLevels is used only in line mode, and gives the fold levels as a 4-hex-digit sequence in a leading column.

    $res = Annotate(qq(if(1) {\n$abc = 3;\n}\n), 'perl', DumpSource=>1, DumpEndState=>1);
    print $res;
    2400 if(1) {
         55:4:0:
    0401 $abc = 3
         <<<<0:04
    0401 }
         :

The StopAfterDataSectionLine1 is used only for Perl code in line mode.

EXPORT

None by default.

Annotate by request.


SEE ALSO

Info on scintilla available at http://www.scintilla.org.


AUTHOR

Eric Promislow, <ericp@activestate.com>


COPYRIGHT

Copyright (C) 2005 by ActiveState Software Inc.