NAME
Syntax::Highlight::Shell - Highlight shell scripts
VERSION
Version 0.02
SYNOPSIS
use Syntax::Highlight::Shell;
my $highlighter = new Syntax::Highlight::Shell;
$output = $highlighter->parse($shellcmd);
DESCRIPTION
This module is designed to take shell scripts and highlight them in HTML with meaningful colours using CSS. The resulting HTML output is ready for inclusion in a web page.
METHODS
- new()
-
The constructor. Returns a
Syntax::Highlight::Shell
object.Options
nnn
- Activate line numbering. Default value: 0 (disabled).pre
- Surround result by<pre>...</pre>
tags. Default value: 1 (enabled).syntax
- Selects the shell syntax. Check "syntax" in Shell::Parser for more information on the available syntaxes. Default value:bourne
.tabs
- When given a non-nul value, converts tabulations to this number of spaces. Default value: 4.
Example
To avoid surrounding the result by the
<pre>...</pre>
tags:my $highlighter = Syntax::Highlight::Shell->new(pre => 0);
- parse()
-
Parse the shell code given in argument and returns the corresponding HTML code, ready for inclusion in a web page.
Examples
$html = $highlighter->parse(q{ echo "hello world" }); $html = $highlighter->parse(<<'END'); # find my name if [ -f /etc/passwd ]; then grep $USER /etc/passwd | awk -F: '{print $5}' /etc/passwd fi END
- _generic_highlight()
-
Internal method
It's the
Shell::Parser
callback that does all the work of highlighting the code.
NOTES
The resulting HTML uses CSS to colourize the syntax. Here are the classes that you can define in your stylesheet.
.s-key
- for shell keywords (likeif
,for
,while
,do
...).s-blt
- for the builtins commands.s-cmd
- for the external commands.s-arg
- for the command arguments.s-mta
- for shell metacharacters (|
,>
,\
,&
).s-quo
- for the single ('
) and double ("
) quotes.s-var
- for expanded variables:$VARIABLE
.s-avr
- for assigned variables:VARIABLE=value
.s-val
- for shell values (inside quotes).s-cmt
- for shell comments
An example stylesheet can be found in examples/shell-syntax.css.
EXAMPLE
Here is an example of generated HTML output. It was generated with the script eg/highlight.pl.
The following script
#!/bin/sh
user="$1"
case "$user" in
# check if the user is root
'root')
echo "You are the BOFH."
;;
# for normal users, grep throught /etc/passwd
*)
passwd=/etc/passwd
if [ -f $passwd ]; then
grep "$user" $passwd | awk -F: '{print $5}'
else
echo "No $passwd"
fi
esac
will be rendered like this (using the CSS stylesheet eg/shell-syntax.css)
1 #!/bin/sh 2 3 user="$1" 4 5 case "$user" in 6 # check if the user is root 7 'root') 8 echo "You are the BOFH." 9 ;; 10 11 # for normal users, grep throught /etc/passwd 12 *) 13 passwd=/etc/passwd 14 if [ -f $passwd ]; then 15 grep "$user" $passwd | awk -F: '{print $5}' 16 else 17 echo "No $passwd" 18 fi 19 esac
SEE ALSO
AUTHOR
Sébastien Aperghis-Tramoni, <sebastien@aperghis.net>
BUGS
Please report any bugs or feature requests to bug-syntax-highlight-shell@rt.cpan.org
, or through the web interface at http://rt.cpan.org. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
COPYRIGHT & LICENSE
Copyright 2004 Sébastien Aperghis-Tramoni, All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 316:
Non-ASCII character seen before =encoding in 'Sébastien'. Assuming CP1252