Phoenix.pm: CPAN module of the day^H^H^Hnight

Scott Walters phaedrus at illogics.org
Wed Aug 28 02:48:29 CDT 2002


Howdy folks. Searching CPAN is dangerous - you find so much cool stuff, so I
thought I would punish everyone for my propensity for wasting time and forward
along one fo these puppies: 

http://theoryx5.uwinnipeg.ca/scripts/CPAN/authors/id/K/KA/KANE/Acme-Comment-1.01.zip


SYNOPSIS TOP

    use Acme::Comment type=>'C++', own_line=>1;

    /*
    if (ref $mod) {
        $bar->{do}->blat(msg => 'blarg');
        eval {

    i'm sooo sick of this time for some coffee

    */

    // I prefer beer.  --sqrn

DESCRIPTION TOP

Acme::Comment allows multi-line comments which are filtered out. Unlike the pseudo multi-line comment if (0) {}, the code being commented out need not be syntactically valid.
USE TOP

Acme::Comment contains several different commenting styles.

Styles may be specified by the types argument, or by start and end and manipulated with own_line and one_line.

Styles may contain multi-line comments and single-line comments. Perl, for example, has single-line comments in the form of #.

C, on the other hand, has multi-line comments which begin with /* and end with */.

With multi-line comments, leaving out a begin or an end comment will cause an error.

Both types of comments may only be preceded on a line by whitespace.
own_line TOP

By default, own_line is true, which means that multi-line comments may not be followed by any characters other than whitespace on the same line. This is the safest option if you think your code may contain the comment characters (perhaps in a regex). If you disable it, other characters are allowed on the line after the starting delimiter, but these characters will be ignored. The closing delimiter cannot be followed by any other characters.

Thus, in the following example, $foo would be set to 1.

    /* This is my real comment.
    */
    $foo = 1;

If you wish to change this option, you must specify either a type or start and end.
one_line TOP

By default, this is set to false, which means that multi-line comments may not end on the same line in which they begin. Turning this on allows the following syntax:

    /* comment */

If you wish to change this option, you must specify either a type or start and end.
start and end TOP

The start and end arguments allow you to supply your own commenting pattern instead of one of the ones available with type. It is not valid to provide the same pattern for both start and end.

You cannot specify both type and start and end, and start and end must both be provided if you provide one of them.
types TOP

The types argument specifies what language style should be used. Only one language style may be specified.

* Ada
Single-line comments begin with '. * Advsys
Advsys single-line comments begin with ;. * Alan
Single-line comments start with --. * Algol

    Multi-line comments begin with 'comment' and end with ;.

NOTE: You should not use Algol with own_line set to 0: The source filter will take a ; to be an ending tag for your comments, regardless of where it is.
* AWK
Single-line comments use #. * B
Multi-line comments use /* and */. * Basic
Single-line comments begin with '. * Beta
Multi-line comments use (* and *). * Bliss
Multi-line comments use (* and *). * Blue
Single-line comments use either == or --. * C
The default for Acme::Comment is C-style multi-line commenting with /* and */. However, if you wish to change one_line or own_line, you must explicitly specify the type. * C++
C++ multi-line style uses /* and */. Single-line uses //. * C#
C# multi-line style uses /* and */. Single-line uses //. * Chill
Multi-line comments use /* and */. * Clean
Clean multi-line style uses /* and */. Single-line uses //. * E
Single-line comments use #. * Eiffel
Single-line comments start with --. * Elastic
Elastic multi-line style uses /* and */. Single-line uses //. * Focal
Single-line comments start with comment. * Fortran
Single-line comments use !. * Guile
Guile multi-line style uses /* and */. Single-line uses //. * Haskell
Single-line comments start with --. * HTML
HTML style has multi-line commenting in the form of <!-- and -->. * Hugo
Multi-line comments begin with !\ and end with \!. Single-line comments are not implemented due to their similarity with multi-line comments. * Icon
Single-line comments use #. * Intercal
Single-line comments are marked with DO NOTE THAT and may optionally be preceded by a line number in the following syntax: (23) DO NOTE THAT. * Java
Java multi-line style uses /* and */. Single-line uses //. * Joy
Multi-line comments use (* and *). * LaTeX
Single-line comments use %. * LISP
LISP single-line comments begin with ;. * Orthogonal
Orthogonal single-line comments begin with ;. * Parrot
Single-line comments use #. * Pascal
Multi-line comments use (* and *). * Perl
Single-line comments use #. * PHP
PHP multi-line style uses /* and */. Single-line uses //. * Pilot
Single-line comments in the syntax \/\/ are supported. * PL/I
Multi-line comments use /* and */. * PostScript
Single-line comments use %. * Python
Single-line comments use #. * Ruby
Ruby multi-line comments begin with =begin and end with =end. Single-line comments use #. * Scheme
Scheme single-line comments begin with ;. * Unlambda
Single-line comments use #. * Var'aq
Multi-line comments use (* and *).
CAVEATS TOP

Because of the way source filters work, it is not possible to eval code containing comments and have them correctly removed.
NOTE TOP

Some of these programming languages may be spelled incorrectly, or may have the wrong quote characters noted. The majority of this information was found by searches for language specifications.

So please report errors, as well as obscure commenting syntax you know of.
AUTHOR TOP

This module by Jos Boumans <kane at cpan.org>.
Acknowledgements TOP

Thanks to Abigail and Glenn Maciag for their suggestions.
COPYRIGHT TOP

This module is copyright (c) 2002 Jos Boumans <kane at cpan.org>. All rights reserved.

This library is free software; you may redistribute and/or modify it under the same terms as Perl itself. 




More information about the Phoenix-pm mailing list