Friday, March 23, 2007

GNU Source-highlight 2.6

I've recently released the new version of GNU Source-highlight, http://www.gnu.org/software/src-highlite, which, given a source file, produces a document with syntax highlighting.

The main novelties are:

  • I've added language definitions for Makefiles, m4 and CSS.
  • In style files you can specify a color in double quotes meaning that that colro will be inserted in the output without any translation
  • In style files you can specify the formatting options for more than one element on the same line, by separating the elements with commas, e.g.,
    time, file darkblue b ;
  • In the style file you can also specify the background color for each element (not all the output formats support background colors; e.g., XHTML and LaTeX with colors support it, but plain HTML does not).
    todo black bg:cyan b;
    This formats todo elements in black with a cyan background
  • The background color for the entire output document can be specified in the style file
    bgcolor "white";
  • Furthermore, the main novelty, is that you can use a CSS file as a style file so that source-highlight will use its formatting specification to produce the output (independently from HTML); thus, instead of using
    --style-file=mystyle.style
    you can use
    --style-css-file=mystyle.css
    So that the same CSS file can be used either as a standard CSS file in a (X)HTML document, or as the style file for formatting in any format with source-highlight.
In order to show this last new feature, I inserted many CSS files (adapted from the SHJS project). Moreover, I've used all these CSS file to generate some examples; these examples are formatted in XHTML (the output does not use the CSS: the XHTML output contains direct formatting for all elements, and these elements are formatted by using the color and other style specifications taken from the CSS file).

This is the entire file (~400k) with all these examples.

../src/default.css


/*
This is a classical Hello program
to test source-highlight with Java programs.

to have an html translation type

source-highlight -s java -f html --input Hello.java --output Hello.html
source-highlight -s java -f html < Hello.java > Hello.html

or type source-highlight --help for the list of options

written by
Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite
*/

package hello;

import java.io.* ;

/**
* <p>
* A simple Hello World class, used to demonstrate some
* features of Java source highlighting.
* </p>
* TODO: nothing, just to show an highlighted TODO or FIXME
*
* @author Lorenzo Bettini
* @version 2.0
*/
public class Hello {
int foo = 1998 ;
int hex_foo = 0xCAFEBABE;
boolean b = false;
Integer i = null ;
char c = '\'', d = 'n', e = '\\' ;
String xml = "<tag attr=\"value\">&auml;</tag>", foo2 = "\\" ;

public static void main( String args[] ) {
// just some greetings ;-) /*
System.out.println( "Hello from java2html :-)" ) ;
System.out.println( "\tby Lorenzo Bettini" ) ;
System.out.println( "\thttp://www.lorenzobettini.it" ) ;
if (argc > 0)
String param = argc[0];
//System.out.println( "bye bye... :-D" ) ; // see you soon
}
}

mono.css


/*
This is a classical Hello program
to test source-highlight with Java programs.

to have an html translation type

source-highlight -s java -f html --input Hello.java --output Hello.html
source-highlight -s java -f html < Hello.java > Hello.html

or type source-highlight --help for the list of options

written by
Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite
*/

package hello;

import java.io.* ;

/**
* <p>
* A simple Hello World class, used to demonstrate some
* features of Java source highlighting.
* </p>
* TODO: nothing, just to show an highlighted TODO or FIXME
*
* @author Lorenzo Bettini
* @version 2.0
*/
public class Hello {
int foo = 1998 ;
int hex_foo = 0xCAFEBABE;
boolean b = false;
Integer i = null ;
char c = '\'', d = 'n', e = '\\' ;
String xml = "<tag attr=\"value\">&auml;</tag>", foo2 = "\\" ;

public static void main( String args[] ) {
// just some greetings ;-) /*
System.out.println( "Hello from java2html :-)" ) ;
System.out.println( "\tby Lorenzo Bettini" ) ;
System.out.println( "\thttp://www.lorenzobettini.it" ) ;
if (argc > 0)
String param = argc[0];
//System.out.println( "bye bye... :-D" ) ; // see you soon
}
}

mono-alt.css


/*
This is a classical Hello program
to test source-highlight with Java programs.

to have an html translation type

source-highlight -s java -f html --input Hello.java --output Hello.html
source-highlight -s java -f html < Hello.java > Hello.html

or type source-highlight --help for the list of options

written by
Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite
*/

package hello;

import java.io.* ;

/**
* <p>
* A simple Hello World class, used to demonstrate some
* features of Java source highlighting.
* </p>
* TODO: nothing, just to show an highlighted TODO or FIXME
*
* @author Lorenzo Bettini
* @version 2.0
*/
public class Hello {
int foo = 1998 ;
int hex_foo = 0xCAFEBABE;
boolean b = false;
Integer i = null ;
char c = '\'', d = 'n', e = '\\' ;
String xml = "<tag attr=\"value\">&auml;</tag>", foo2 = "\\" ;

public static void main( String args[] ) {
// just some greetings ;-) /*
System.out.println( "Hello from java2html :-)" ) ;
System.out.println( "\tby Lorenzo Bettini" ) ;
System.out.println( "\thttp://www.lorenzobettini.it" ) ;
if (argc > 0)
String param = argc[0];
//System.out.println( "bye bye... :-D" ) ; // see you soon
}
}

sh_golden.css


/*
This is a classical Hello program
to test source-highlight with Java programs.

to have an html translation type

source-highlight -s java -f html --input Hello.java --output Hello.html
source-highlight -s java -f html < Hello.java > Hello.html

or type source-highlight --help for the list of options

written by
Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite
*/

package hello;

import java.io.* ;

/**
* <p>
* A simple Hello World class, used to demonstrate some
* features of Java source highlighting.
* </p>
* TODO: nothing, just to show an highlighted TODO or FIXME
*
* @author Lorenzo Bettini
* @version 2.0
*/
public class Hello {
int foo = 1998 ;
int hex_foo = 0xCAFEBABE;
boolean b = false;
Integer i = null ;
char c = '\'', d = 'n', e = '\\' ;
String xml = "<tag attr=\"value\">&auml;</tag>", foo2 = "\\" ;

public static void main( String args[] ) {
// just some greetings ;-) /*
System.out.println( "Hello from java2html :-)" ) ;
System.out.println( "\tby Lorenzo Bettini" ) ;
System.out.println( "\thttp://www.lorenzobettini.it" ) ;
if (argc > 0)
String param = argc[0];
//System.out.println( "bye bye... :-D" ) ; // see you soon
}
}

sh_night.css


/*
This is a classical Hello program
to test source-highlight with Java programs.

to have an html translation type

source-highlight -s java -f html --input Hello.java --output Hello.html
source-highlight -s java -f html < Hello.java > Hello.html

or type source-highlight --help for the list of options

written by
Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite
*/

package hello;

import java.io.* ;

/**
* <p>
* A simple Hello World class, used to demonstrate some
* features of Java source highlighting.
* </p>
* TODO: nothing, just to show an highlighted TODO or FIXME
*
* @author Lorenzo Bettini
* @version 2.0
*/
public class Hello {
int foo = 1998 ;
int hex_foo = 0xCAFEBABE;
boolean b = false;
Integer i = null ;
char c = '\'', d = 'n', e = '\\' ;
String xml = "<tag attr=\"value\">&auml;</tag>", foo2 = "\\" ;

public static void main( String args[] ) {
// just some greetings ;-) /*
System.out.println( "Hello from java2html :-)" ) ;
System.out.println( "\tby Lorenzo Bettini" ) ;
System.out.println( "\thttp://www.lorenzobettini.it" ) ;
if (argc > 0)
String param = argc[0];
//System.out.println( "bye bye... :-D" ) ; // see you soon
}
}

sh_greenlcd.css


/*
This is a classical Hello program
to test source-highlight with Java programs.

to have an html translation type

source-highlight -s java -f html --input Hello.java --output Hello.html
source-highlight -s java -f html < Hello.java > Hello.html

or type source-highlight --help for the list of options

written by
Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite
*/

package hello;

import java.io.* ;

/**
* <p>
* A simple Hello World class, used to demonstrate some
* features of Java source highlighting.
* </p>
* TODO: nothing, just to show an highlighted TODO or FIXME
*
* @author Lorenzo Bettini
* @version 2.0
*/
public class Hello {
int foo = 1998 ;
int hex_foo = 0xCAFEBABE;
boolean b = false;
Integer i = null ;
char c = '\'', d = 'n', e = '\\' ;
String xml = "<tag attr=\"value\">&auml;</tag>", foo2 = "\\" ;

public static void main( String args[] ) {
// just some greetings ;-) /*
System.out.println( "Hello from java2html :-)" ) ;
System.out.println( "\tby Lorenzo Bettini" ) ;
System.out.println( "\thttp://www.lorenzobettini.it" ) ;
if (argc > 0)
String param = argc[0];
//System.out.println( "bye bye... :-D" ) ; // see you soon
}
}

sh_ide-eclipse.css


/*
This is a classical Hello program
to test source-highlight with Java programs.

to have an html translation type

source-highlight -s java -f html --input Hello.java --output Hello.html
source-highlight -s java -f html < Hello.java > Hello.html

or type source-highlight --help for the list of options

written by
Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite
*/

package hello;

import java.io.* ;

/**
* <p>
* A simple Hello World class, used to demonstrate some
* features of Java source highlighting.
* </p>
* TODO: nothing, just to show an highlighted TODO or FIXME
*
* @author Lorenzo Bettini
* @version 2.0
*/
public class Hello {
int foo = 1998 ;
int hex_foo = 0xCAFEBABE;
boolean b = false;
Integer i = null ;
char c = '\'', d = 'n', e = '\\' ;
String xml = "<tag attr=\"value\">&auml;</tag>", foo2 = "\\" ;

public static void main( String args[] ) {
// just some greetings ;-) /*
System.out.println( "Hello from java2html :-)" ) ;
System.out.println( "\tby Lorenzo Bettini" ) ;
System.out.println( "\thttp://www.lorenzobettini.it" ) ;
if (argc > 0)
String param = argc[0];
//System.out.println( "bye bye... :-D" ) ; // see you soon
}
}

sh_kwrite.css


/*
This is a classical Hello program
to test source-highlight with Java programs.

to have an html translation type

source-highlight -s java -f html --input Hello.java --output Hello.html
source-highlight -s java -f html < Hello.java > Hello.html

or type source-highlight --help for the list of options

written by
Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite
*/

package hello;

import java.io.* ;

/**
* <p>
* A simple Hello World class, used to demonstrate some
* features of Java source highlighting.
* </p>
* TODO: nothing, just to show an highlighted TODO or FIXME
*
* @author Lorenzo Bettini
* @version 2.0
*/
public class Hello {
int foo = 1998 ;
int hex_foo = 0xCAFEBABE;
boolean b = false;
Integer i = null ;
char c = '\'', d = 'n', e = '\\' ;
String xml = "<tag attr=\"value\">&auml;</tag>", foo2 = "\\" ;

public static void main( String args[] ) {
// just some greetings ;-) /*
System.out.println( "Hello from java2html :-)" ) ;
System.out.println( "\tby Lorenzo Bettini" ) ;
System.out.println( "\thttp://www.lorenzobettini.it" ) ;
if (argc > 0)
String param = argc[0];
//System.out.println( "bye bye... :-D" ) ; // see you soon
}
}

sh_easter.css


/*
This is a classical Hello program
to test source-highlight with Java programs.

to have an html translation type

source-highlight -s java -f html --input Hello.java --output Hello.html
source-highlight -s java -f html < Hello.java > Hello.html

or type source-highlight --help for the list of options

written by
Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite
*/

package hello;

import java.io.* ;

/**
* <p>
* A simple Hello World class, used to demonstrate some
* features of Java source highlighting.
* </p>
* TODO: nothing, just to show an highlighted TODO or FIXME
*
* @author Lorenzo Bettini
* @version 2.0
*/
public class Hello {
int foo = 1998 ;
int hex_foo = 0xCAFEBABE;
boolean b = false;
Integer i = null ;
char c = '\'', d = 'n', e = '\\' ;
String xml = "<tag attr=\"value\">&auml;</tag>", foo2 = "\\" ;

public static void main( String args[] ) {
// just some greetings ;-) /*
System.out.println( "Hello from java2html :-)" ) ;
System.out.println( "\tby Lorenzo Bettini" ) ;
System.out.println( "\thttp://www.lorenzobettini.it" ) ;
if (argc > 0)
String param = argc[0];
//System.out.println( "bye bye... :-D" ) ; // see you soon
}
}

sh_emacs.css


/*
This is a classical Hello program
to test source-highlight with Java programs.

to have an html translation type

source-highlight -s java -f html --input Hello.java --output Hello.html
source-highlight -s java -f html < Hello.java > Hello.html

or type source-highlight --help for the list of options

written by
Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite
*/

package hello;

import java.io.* ;

/**
* <p>
* A simple Hello World class, used to demonstrate some
* features of Java source highlighting.
* </p>
* TODO: nothing, just to show an highlighted TODO or FIXME
*
* @author Lorenzo Bettini
* @version 2.0
*/
public class Hello {
int foo = 1998 ;
int hex_foo = 0xCAFEBABE;
boolean b = false;
Integer i = null ;
char c = '\'', d = 'n', e = '\\' ;
String xml = "<tag attr=\"value\">&auml;</tag>", foo2 = "\\" ;

public static void main( String args[] ) {
// just some greetings ;-) /*
System.out.println( "Hello from java2html :-)" ) ;
System.out.println( "\tby Lorenzo Bettini" ) ;
System.out.println( "\thttp://www.lorenzobettini.it" ) ;
if (argc > 0)
String param = argc[0];
//System.out.println( "bye bye... :-D" ) ; // see you soon
}
}

sh_neon.css


/*
This is a classical Hello program
to test source-highlight with Java programs.

to have an html translation type

source-highlight -s java -f html --input Hello.java --output Hello.html
source-highlight -s java -f html < Hello.java > Hello.html

or type source-highlight --help for the list of options

written by
Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite
*/

package hello;

import java.io.* ;

/**
* <p>
* A simple Hello World class, used to demonstrate some
* features of Java source highlighting.
* </p>
* TODO: nothing, just to show an highlighted TODO or FIXME
*
* @author Lorenzo Bettini
* @version 2.0
*/
public class Hello {
int foo = 1998 ;
int hex_foo = 0xCAFEBABE;
boolean b = false;
Integer i = null ;
char c = '\'', d = 'n', e = '\\' ;
String xml = "<tag attr=\"value\">&auml;</tag>", foo2 = "\\" ;

public static void main( String args[] ) {
// just some greetings ;-) /*
System.out.println( "Hello from java2html :-)" ) ;
System.out.println( "\tby Lorenzo Bettini" ) ;
System.out.println( "\thttp://www.lorenzobettini.it" ) ;
if (argc > 0)
String param = argc[0];
//System.out.println( "bye bye... :-D" ) ; // see you soon
}
}

sh_desert.css


/*
This is a classical Hello program
to test source-highlight with Java programs.

to have an html translation type

source-highlight -s java -f html --input Hello.java --output Hello.html
source-highlight -s java -f html < Hello.java > Hello.html

or type source-highlight --help for the list of options

written by
Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite
*/

package hello;

import java.io.* ;

/**
* <p>
* A simple Hello World class, used to demonstrate some
* features of Java source highlighting.
* </p>
* TODO: nothing, just to show an highlighted TODO or FIXME
*
* @author Lorenzo Bettini
* @version 2.0
*/
public class Hello {
int foo = 1998 ;
int hex_foo = 0xCAFEBABE;
boolean b = false;
Integer i = null ;
char c = '\'', d = 'n', e = '\\' ;
String xml = "<tag attr=\"value\">&auml;</tag>", foo2 = "\\" ;

public static void main( String args[] ) {
// just some greetings ;-) /*
System.out.println( "Hello from java2html :-)" ) ;
System.out.println( "\tby Lorenzo Bettini" ) ;
System.out.println( "\thttp://www.lorenzobettini.it" ) ;
if (argc > 0)
String param = argc[0];
//System.out.println( "bye bye... :-D" ) ; // see you soon
}
}


Lots and lots of colors! :-)

No comments: