xenial (1) code2html.1.gz

Provided by: code2html_0.9.1-4_all bug

NAME

       code2html - Converts a program source code to HTML

SYNOPSIS

       (1) code2html [options] [input-file [output-file]]

       (2) code2html -p [file [alternate-outfile]]

       (3) code2html (as a CGI script; see the section on CGI)

DESCRIPTION

       code2html  is a perl script which converts a program source code to syntax highlighted HTML, or any other
       format for wich rules are defined.

   (1) OPTIONS
       input-file
               Is the file which contains the program source code to be formatted.  If not specified or a  minus
               (-) is given, the code will be read from STDIN.

       output-file
               Is  the  file to write the formatted code to.  If not specified or a minus (-) is given, the code
               will be written to STDOUT.

       -l, --language-mode
               Specify the set of regular expressions to use.  These have to be defined in a language file  (see
               FILES below).  To find out which language modes are defined, issue a code2html --modes.

               This input is treated case-insensitive.

               If not given, some heuristics will be used to determine the file language.

       -v, --verbose
               Prints progress information to STDERR.

       -n, --linenumbers
               Print out the source code with line numbers.

       -N, --linknumbers
               Print  out  the  source  code  with line numbers.  The linenumbers will link to themselves, which
               makes it easy to send links to lines.

       -P, --prefix
               Optional prefix to use for line number anchors.

       -t, --replace-tabs[=TABSTOP-WIDTH]
               Replace each occurence of a <TAB> character with the right amount of spaces to get  to  the  next
               tabstop.  Default is a tabstop width of 8 characters.

       -L, --language-file=LANGUAGE-FILE
               Specify  an  alternate  file  to  take  the  language and output-format definitions from (see the
               section on FILES below).

       -m, --modes
               Print all language modes and output-formats currently defined to  STDOUT  and  exit  succesfully.
               Also prints modes from a LANGUAGE-FILE given by --language-file if applicable.

       --fallback=LANG
               If the language mode given with --language-mode cannot be found then use this mode.

               --fallback  plain for instance is usefull when code2html is called from a script to ensure output
               is created.

       -h, --help
               Print a short help and exit succesfully.

       -V, --version
               Print the program version and exit succesfully.

       -c, --content-type
               Prints ”Content-Type: text/html\n\n“ (or whatever the output-format defines  as  a  content-type)
               prior to the rest of the output.  Usefull if the script is ivoked as a cgi script.

       -o, --output-format
               Selects  the  output-format.  html  is the default.  To find out which outputformats are defined,
               issue a code2html --modes.

       -H, --no-header
               do not make use of the template defined by the output-format.  For HTML  this  means  that  there
               will be no <html>, <head>, and no <typical for patch and CGI modes,pre> tags.

       --template=FILE
               overrides  the  default  template for the given output format.  If --no-header is given too, this
               has no meaning, since the template is ignored anyway.

       -T, --title
               Set the title of the produced output file.  Only works if the template does support  setting  the
               title.

       -w, --linewidth=LINEWIDTH
               Wrap lines after LINEWIDTH characters. Default is to not wrap lines at all.

       -b, --linebreakprefix=LINEPREFIX
               Use fILINEPREFIX at the start of wrapped lines. Default is "» ".

   (2) HTML patching
       code2html -p [file [alternate-outfile]]

       code2html  also  allows  you to have inline source code in an html file.  It can then take this html file
       and insert the syntax highlighted code.

       If no file is given, code2html reads from STDIN and writes to STDOUT.  If  just  one  file  is  given  it
       replaces this file with the output.  If two files are provided, the first one is read from and the second
       one written to.

       To use this feature, just insert a like like this into your html file:

              <!-- code2html add [options] <file> -->

       the syntax highlighted file will be inserted at this position enclosed in <pre> tags.

       All options that can be given on the command line like --linenumbers etc. work.  --help, --version,  etc.
       work  too  however it is not very intelligent to use them :).  Using --output-format to choose a non-HTML
       outputformat is not adviseable.  --content-type is ignored.

       You may also write the program's source code directly in the html file with the following syntax:

              <!-- code2html add [options]

              <your program source code here>

              -->

       It is usually a good idea to at least give the --language-mode option to specify the language.

   (3) CGI
       If the the script is used as a  CGI  script  (GATEWAY_INTERFACE  environment  set  and  no  command  line
       arguments given) code2html reads the arguments either from the query string or from SDTIN.  (methods POST
       and GET).

       --content-type is switched on automatically and the output always goes to STDOUT.

       The following parameters/options are accepted:

       language-mode - optional
               `c', `cc', `pas', etc.

               if not given, some heuristics are used to find out the language.

       fallback - optional
               `plain', `c', etc. if language-mode cannot be found, use this one

       input-selector - optional
               either `file', `cgi-input1', `cgi-input2', or `REDIRECT_URL'

               default: file

       filename
               file to read from if input-selector is `file'

       cgi-input1
               The source code to syntax highlight.  For example from a <textarea> or from a upload.  See input-
               selector.

       cgi-input2
               The source code to syntax highlight.  For example from a <textarea> or from a upload.  See input-
               selector.

       line-numbers - optional
               `yes', `no' or `link'

               default: no

       replace-tabs - optional
               If 0 then tabs are not replaced, else replace each occurence of a <TAB> character with the  right
               amount of spaces to get to the next tabstop.

               default: 0

       title - optional
               Set's the title of the file.

       no-encoding - optional
               By  default  code2html  tries to encode the output as either bz2/gz/Z if the client supports this
               (HTTP_ACCEPT_ENCODING) and the needed program is available on the server.  You may need to modify
               @CGI_ENCODING in the script to match your program locations.

               If no-encoding is defined as “true” code2html does not try to encode the output.

       Why two cgi-inputs you may ask: This is to allow your users to choose vie a <form> interface whether they
       want to insert their file into a <textarea> or user a <browse> button  to  select  their  file.  See  the
       example on my home- page.

       Note  that if $FILES_DISALLOWED_IN_CGI is 0 it is possbile for your users to read all the files the httpd
       can read (if you don't run a cgi- wrapper or something like this. By default this value is set to  1,  so
       file  reading  via cgi should not be allowed. You can allow it with setting $FILES_DISALLOWED_IN_CGI to 0
       at the top of the script.

       The input selector REDIRECT_URL needs a special explaination. The  file  name  is  formed  from  the  two
       enviroment variables DOCUMENT_ROOT and REDIRECT_URL.

       If  you  want apache to automatically call code2html for all program source code files you may do this by
       adding these two lines to your srm.conf:

              AddHandler text/x-sourcecode .c .cc .cpp .pas .h .p

              Action text/x-sourcecode /cgi-bin/code2html?input-selector=REDIRECT_URL&foo=

       or something similar to this. In the AddHandle line you can  choose  which  extensions  to  pass  through
       code2html.

       WARNING: Do not add .pl to this line and name this script “code2html.pl”. This will result in a loop.

       Also make sure that you load the Action module (srm.conf).

       Replace  /cgi-bin/code2html  with  the  virtual  location  under which the file can be accessed. Note the
       “foo=” part.  Apache appends the URL of the file to display at the end of the action part. We do not need
       this  since  we  use the environment variable REDIRECT_URL however we do not want to get the url addes to
       the input-selector string.  Therefore we append the “&foo=” part.

       Tnx to Kevin Burton <burton@relativity.yi.org> for the idea.  He also states that

       > It is more powerfull if you use it in an Apache
       > <Directory> tag
       >
       > <Directory /source>
       >
       >  #with your Action tag here... this way you can
       >  #still have regular .java files on your server.
       >
       > </Directory>
       >

EXAMPLE

       assuming code2html is in the current directory, you may type

                                     code2html -l perl code2html.pl code2html.html

       to convert the script into a html file.

FILES

       Code2html looks for it's configuration in several places.

       •   the file specified by -L or --language-file if any

       •   the files specified in the evironment variable CODE2HTML_CONFIG, seperated by colons

       •   user's $HOME/.code2html.config/etc/code2html.config

       •   built in default languages

       Entries in a file that is mentioned earlier in this list override rules from later files.

       The file structure must be valid perl code.

       The global variables %LANGUAGE and %STYLESHEET are already defined, so  you  should  not  redeclare  them
       using “my”.

       When you are looking for a model configuration to serve as a basis for your own configuration file, it is
       probably best to start out by checking the built-in definitions at the bottom of code2html.

       If your pattern includes back references like a lot patterns do in perl for example, then you have to use
       \2 instead of \1, \3 instead of \2 and so on.  I really don't like this hack but it is a lot faster.

       Example:

                                                   <<([^\n]*).*?^\2$

       In  this  example  the  perl << stuff is matched, i.e. everything from a << until a line that consists of
       exactly the same string as behind the << was.  The \2 references the matched chars in the parentenses.

       If you ever write language specific rule files yourself, I'd be grateful if you could send those  to  me,
       so  I could make them available (with full credits of course) on my homepage for anyone to grab, whenever
       some of those files suit someone else's needs.  Before you do so you might also have a look at my site to
       check wheter someone has already written a rule file for your favourite language.

NOTES

       The  language  recognition  mechanism relies on specific patterns within the file name and the content of
       the processed file, such as file name extensions and shebangs (#!).  This means that if the  input  is  a
       pipe  or  a  socket,  the file name does not follow traditional naming conventions, or the content of the
       processed file is incomplete, the input language name  should  be  specified  using  the  --language-mode
       command line parameter.

BUGS

       Please  report  bugs  to  code2html@palfrader.org.   This  program is still a beta release, so you should
       expect to find some.
       Also  have   a   look   at   my   web-site,   perhaps   a   new   version   is   available   already   at
       http://www.palfrader.org/code2html/.

AUTHOR

       Peter Palfrader, <code2html@palfrader.org> A lot of other people.  See contributers in the file itself.

LICENSE

       Copyright (c) 1999, 2000 by Peter Palfrader & others.

       Permission  is  hereby  granted,  free  of  charge,  to  any person obtaining a copy of this software and
       associated documentation files (the “Software”, to deal in the Software  without  restriction,  including
       without  limitation  the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
       copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to  the
       following conditions:

       The  above  copyright  notice  and  this permission notice shall be included in all copies or substantial
       portions of the Software.

       THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  IMPLIED,  INCLUDING  BUT  NOT
       LIMITED  TO  THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN
       NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  CLAIM,  DAMAGES  OR  OTHER  LIABILITY,
       WHETHER  IN  AN  ACTION  OF  CONTRACT,  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.