HighlighterSamples

The first section is a (partly nonsensical) example of the HTML highlighting that has nested PHP, JavaScript and CSS support.

This page also constitutes a decent example (for EBNF and my own language).

The highlighters for C# and C++ are lacking behind. They need to be more intelligent than the others, since their naming conventions aren't as readily useful for highlighting. I will fix this upon request.

If one of the languages aren't highlighted, try pressing Ctrl+F5 to update the JavaScript to the latest version.

HTML, CSS, JavaScript & PHP

<!-- this is taken in part from http://www.cssdrive.com/index.php/examples/exampleitem/tableless_forms/ -->
<style type="text/css">
label {
  float: left;
  width: 120px;
  font-weight: bold;
}

input, textarea {
  width: 180px;
  margin-bottom: 5px;
}

.boxes {
  width: 1em;
}

#submitbutton {
  margin-left: 120px;
  margin-top: 5px;
  width: 90px;
}
</style>

<!-- this is taken from http://www.w3schools.com/JS/JS_examples.asp (modified) -->
<script type="text/javascript">
  var r = Math.random();
  if (r < 0.5) {
    document.write("<a href='http://www.w3schools.com'>Learn Web Development!</a>");
  } else {
    document.write("<a href='http://www.refsnesdata.no'>Visit Refsnes Data!</a>");
  }
</script>

<!-- rest of example taken from http://www.php-scripts.com/php_diary/122299.php3 (slightly modified) -->
<form method="POST" ENCTYPE="text/plain" action="mailto:youremail@yourdomain.com">
  <p>
    <select name="rating" size="1">
      <option value="5">5 - Excellent, Extremely Useful</option>
      <option value="4">4 - Very Good, Useful</option>
      <option value="3">3 - Good, I learned something</option>
      <option value="2">2 - Ok, but not really that useful</option>
      <option value="1">1 - Not Useful At All, Sorry</option>
    </select>
    <input type="submit" value="Submit">
  </p>
</form>

<?php
  $security_domain = "www.php-scripts.com";
  $url = explode("/", $HTTP_REFERER);
  if(ereg($security_domain, $url[2])) {
    print("<br>Came from domain: $security_domain");
    $filesplit = explode(".", $url[4]);
    $filename = $filesplit[0];
    if(ereg("[0-9]{6}", $filename)) {
      $filename .= ".dat";
      print("<p>Filename chosen for diary page is $filename");
      print("<p>Thanks for rating my page: $HTTP_REFERER with a rating of: $rating");
    } else {
      print("<p><strong>Sorry this is not a valid diary page</strong>");
    }
  } else {
    print("<p><strong>Sorry, you cannot run this script from this location</strong>");
  }
?>

Java

// From: http://examples.oreilly.com/jenut/
// This example is from _Java Examples in a Nutshell_. (http://www.oreilly.com)
// Copyright (c) 1997 by David Flanagan
// This example is provided WITHOUT ANY WARRANTY either expressed or implied.
// You may study, use, modify, and distribute it for non-commercial purposes.
// For any commercial use, see http://www.davidflanagan.com/javaexamples

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.util.*;

/**
 * A Java applet that simulates a client-side imagemap.
 * Plays a sound whenever the user clicks on one of the hyperlinks.
 */
public class Soundmap extends Applet {
  protected Image image;      // The image to display.
  protected Vector rects;     // A list of rectangles in it.
  protected AudioClip sound;  // A sound to play on user clicks in a rectangle.

  /** Initialize the applet */
  public void init() {
    // Look up the name of the image, relative to a base URL, and load it.
    // Note the use of three Applet methods in this one line.
    image = this.getImage(this.getDocumentBase(), this.getParameter("image"));

    // Lookup and parse a list of rectangular areas and the URLs they map to.
    // The convenience routine getRectangleParameter() is defined below.
    rects = new Vector();
    ImagemapRectangle r;
    for(int i = 0; (r = getRectangleParameter("rect" + i)) != null; i++)
      rects.addElement(r);

    // Look up a sound to play when the user clicks one of those areas.
    sound = this.getAudioClip(this.getDocumentBase(),



                              this.getParameter("sound"));

    // Specify an "event listener" object to respond to mouse button
    // presses and releases.  Note that this is the Java 1.1 event model.
    // Note that it also uses a Java 1.1 inner class, defined below.
    this.addMouseListener(new Listener());
  }

  /** Called when the applet is being unloaded from the system.
   * We use it here to "flush" the image we no longer need. This may
   * result in memory and other resources being freed more quickly. */
  public void destroy() { image.flush(); }

  /** To display the applet, we simply draw the image. */
  public void paint(Graphics g) { g.drawImage(image, 0, 0, this); }

  /** We override this method so that it doesn't clear the background
   * before calling paint().  No clear is necessary, since paint() overwrites
   * everything with an image.  Causes less flickering this way. */
  public void update(Graphics g) { paint(g); }

  /** Parse a comma-separated list of rectangle coordinates and a URL.
   * Used to read the imagemap rectangle definitions from applet parameters */
  protected ImagemapRectangle getRectangleParameter(String name) {
    int x, y, w, h;
    URL url;
    String value = this.getParameter(name);
    if (value == null) return null;

    try {
      StringTokenizer st = new StringTokenizer(value, ",");
      x = Integer.parseInt(st.nextToken());
      y = Integer.parseInt(st.nextToken());
      w = Integer.parseInt(st.nextToken());
      h = Integer.parseInt(st.nextToken());
      url = new URL(this.getDocumentBase(), st.nextToken());
    }
    catch (NoSuchElementException e) { return null; }
    catch (NumberFormatException e) { return null; }
    catch (MalformedURLException e) { return null; }

    return new ImagemapRectangle(x, y, w, h, url);
  }
  /**
   * An instance of this inner class is used to respond to mouse events
   */
  class Listener extends MouseAdapter {
    /** The rectangle that the mouse was pressed in. */
    private ImagemapRectangle lastrect;

    /** Called when a mouse button is pressed. */
    public void mousePressed(MouseEvent e) {
      // On button down, check if we're inside one of the specified rectangles.
      // If so, highlight the rectangle, display a message, and play a sound.
      // The utility routine findrect() is defined below.
      ImagemapRectangle r = findrect(e);
      if (r == null) return;
      Graphics g = Applet.this.getGraphics();
      g.setXORMode(Color.red);
      g.drawRect(r.x, r.y, r.width, r.height);  // highlight rectangle
      Applet.this.showStatus("To: " + r.url);   // display URL
      sound.play();                             // play the sound
      lastrect = r;   // Remember the rectangle so it can be un-highlighted.
    }

    /** Called when a mouse button is released. */
    public void mouseReleased(MouseEvent e) {
      // When the button is released, unhighlight the rectangle.  If the
      // mouse is still inside it, ask the browser to go to the URL.
      if (lastrect != null) {
        Graphics g = Applet.this.getGraphics();
        g.setXORMode(Color.red);
        g.drawRect(lastrect.x, lastrect.y, lastrect.width, lastrect.height);
        Applet.this.showStatus("");   // Clear the message.
        ImagemapRectangle r = findrect(e);
        if ((r != null) && (r == lastrect))  // If still in the same rectangle
          Applet.this.getAppletContext().showDocument(r.url); // Go to the URL
        lastrect = null;
      }
    }

    /** Find the rectangle we're inside. */
    protected ImagemapRectangle findrect(MouseEvent e) {
      int i, x = e.getX(), y = e.getY();
      for(i = 0; i < rects.size(); i++)  {
        ImagemapRectangle r = (ImagemapRectangle) rects.elementAt(i);
        if (r.contains(x, y)) return r;
      }
      return null;
    }
  }

  /**
   * A helper class.  Just like java.awt.Rectangle, but with a URL field.
   * Note the use of a nested toplevel class for neatness.
   */

  static class ImagemapRectangle extends Rectangle {
    URL url;
    public ImagemapRectangle(int x, int y, int w, int h, URL url) {
      super(x, y, w, h);
      this.url = url;



    }
  }
}

Scala

/* Example of Scala with embedded XML and multiline strings. */
object AddressBook {

  case class Person(name: String, age: Int)

  /** An AddressBook takes a variable number of arguments
   *  which are accessed as a Sequence
   */
  class AddressBook(a: Person*) {
    private val people: List[Person] = a.toList

    /** Serialize to XHTML. Scala supports XML literals
     *  which may contain Scala expressions between braces,
     *  which are replaced by their evaluation
     */
    def toXHTML =
      <table cellpadding="2" cellspacing="0">
        <tr>
          <th>Last Name</th>
          <th>First Name</th>
        </tr>
        { for (val p <- people) yield
            <tr>
              <td> { p.name } </td>
              <td> { p.age.toString() } </td>
            </tr> 
        }
      </table>;
  }

  /** We introduce CSS using raw strings (between triple
   *  quotes). Raw strings may contain newlines and special
   *  characters (like \) are not interpreted.
   */
  val header =
    <head>
      <title>
        { "My Address Book" }
      </title>
      <style type="text/css"> {
     """table { border-right: 1px solid #cccccc; }
        th { background-color: #cccccc; }
        td { border-left: 1px solid #acacac; }
        td { border-bottom: 1px solid #acacac;"""}
      </style>
    </head>;

  val people = new AddressBook(
    Person("Tom", 20),
    Person("Bob", 22),
    Person("James", 19));

  val page =
    <html>
      { header }
      <body>
       { people.toXHTML }
      </body>
    </html>;

  def main(args: Array[String]) {
    println(page)
  }
}

Haskell

{- From http://www.angelfire.com/tx4/cus/shapes/haskell.html -}
module Rectangle(Rectangle, MakeRectangle, getWidth, getHeight, setWidth, setHeight)

   where
   import Shape

   -- declare method interfaces for rectangle subclass
   class Shape a => Rectangle a where
      getWidth :: a -> Int
      getHeight :: a -> Int
      setWidth :: a -> Int -> a
      setHeight :: a -> Int -> a

   -- define the methods for shape superclass
   instance Shape RectangleInstance where
      getX = x
      getY = y
      setX a newx = a {x = newx}
      setY a newy = a {y = newy}
      moveTo a newx newy = a {x = newx, y = newy}
      rMoveTo a deltax deltay = a {x = ((getX a) + deltax), y = ((getY a) + deltay)}
      draw a =
         putStrLn ("Drawing a Rectangle at:(" ++ (show (getX a)) ++ "," ++ (show (getY a)) ++
            "), width " ++ (show (getWidth a)) ++ ", height " ++ (show (getHeight a)))

   -- define the methods for rectangle subclass
   instance Rectangle RectangleInstance where
      getWidth = width
      getHeight = height
      setWidth a newwidth = a {width = newwidth}
      setHeight a newheight = a {height = newheight}

   -- declare the constructor for rectangle class
   data RectangleInstance = MakeRectangle {x, y, width, height :: Int}
      deriving(Eq, Show)

Haxe

// From: http://haxe.org/doc/js/ajax
class Test {

    // change the HTML content of a DIV based on its ID
    static function setContent(id,content) {
        var d = js.Lib.document.getElementById(id);
        if( d == null )
            js.Lib.alert("Unknown element : "+id);
        d.innerHTML = content;
    }

    // create a javascript HTML link
    static function makeLink(title,code) {
        return '<a href="javascript:'+code+'">'+title+'</a>';
    }

    // function called when the user click on the link
    static function click() {
        setContent("main","Congratulations !");
    }

    static function main() {
        // set initial content
        setContent("main",makeLink("click here","Test.click()"));
    }
}

C++

// From: http://www.functionx.com/cpp/examples/gcd1.htm
#include <iostream>
using namespace std;

int GCD(int a, int b)
{
    int Remainder;

    while( b != 0 )
    {
        Remainder = a % b;
        a = b;
        b = Remainder;
    }

    return a;
}

int main()
{
	int x, y;

	cout << "This program allows calculating the GCD\n";
	cout << "Value 1: ";
	cin >> x;
	cout << "Value 2: ";
	cin >> y;

	cout << "\nThe Greatest Common Divisor of "
	     << x << " and " << y << " is " << GCD(x, y) << endl;
	    
	return 0;
}

C#

// From: http://www.java2s.com/Code/CSharp/Services-Event/Ankeypresseventexample.htm
/*
C#: The Complete Reference 
by Herbert Schildt 

Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/


// An keypress event example. 
  
using System; 
 
// Derive a custom EventArgs class that holds the key. 
class KeyEventArgs : EventArgs { 
  public char ch; 
} 
 
// Declare a delegate for an event.  
delegate void KeyHandler(object source, KeyEventArgs arg); 
 
// Declare a key-press event class. 
class KeyEvent { 
  public event KeyHandler KeyPress; 
 
  // This is called when a key is pressed. 
  public void OnKeyPress(char key) { 
    KeyEventArgs k = new KeyEventArgs(); 
   
    if(KeyPress != null) { 
      k.ch = key; 
      KeyPress(this, k); 
    } 
  } 
} 
 
// A class that receives key-press notifications. 
class ProcessKey { 
  public void keyhandler(object source, KeyEventArgs arg) { 
    Console.WriteLine("Received keystroke: " + arg.ch); 
  } 
} 
 
// Another class that receives key-press notifications. 
class CountKeys { 
  public int count = 0; 
 
  public void keyhandler(object source, KeyEventArgs arg) { 
    count++; 
  } 
}

Perl

# From: http://johnbokma.com/perl/google-suggest.html
# gsuggest.pl - Google suggest
#
# © Copyright, 2004-2005 By John Bokma, http://johnbokma.com/
#
# Last updated: 2005-12-06 17:56:35 -0600

use strict;
use warnings;

use URI::Escape;
use LWP::UserAgent;


unless ( @ARGV ) {

    print "usage: gsuggest.pl query\n";
    exit( 1 );
}

my $url = 'http://www.google.com/complete/search?js=true&qu=' .
    uri_escape( join ' ' => @ARGV );

my $ua = LWP::UserAgent->new( agent => 'Mozilla/5.0' );
my $response = $ua->get( $url );

$response->is_success or
    die "$url: ", $response->status_line;

my $content = $response->content;

# extract the information from the JavaScript file response
# note that the first " and the last " in the Arrays are
# excluded (if data is present)
my ( $element, $array1, $array2 ) = $content =~

    /"(.+?)".+?Array\("(.+?)"\).+?Array\("(.+?)"\)/;

unless ( defined $array1 ) {

    print "No results\n";
    exit;
}

# split the first "array" on the item separator (the very first "
# and the very last " are already removed)
my @suggestions = split /", "/, $array1;

# remove the result(s) string from the number of results
# remove &nbsp; if present (no results known)
# and split the second "array"
# note that a negative limit is used to catch trailing empty
# results (caused by removing &nbsp;)
$array2 =~ s/ results?//g;
$array2 =~ s/&nbsp;//g;
my @results = split /", "/, $array2, -1;

# make suggestion => result(s) pairs.
# note that the number of results is turned into a right justified string
my @pairs = map { [ sprintf ( "%12s", shift @results ) => $_ ] } @suggestions;

# print the pairs in suggested order
print "@$_\n" for @pairs;

# print the pairs sorted on the number of results for each suggestion,
# largest "number" first since the numbers are right justified strings.
print "\nsorted:\n";
print "@$_\n" for sort { $b->[0] cmp $a->[0] } @pairs;

Ruby

# From: http://jordan.husney.com/archives/2005/12/progress_bars_w_1.php
#!/bin/env ruby18
# copyright 2005, Jordan Husney <jordan@husney.com>
# (http://jordan.husney.com/main.html)
#
# derived directly from the following source and protected under
# the GNU GENERAL PUBLIC LICENSE, Version 2, June 1991
#
# http://db.org/demo/2003/02/17/progress-bar/?view=source
#
# php+gd dynamic progress bar image script.
# copyright 2003, B. Johannessen <bob@db.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version, and provided that the above
# copyright and permission notice is included with all distributed
# copies of this or derived software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# A copy of the GNU General Public License is available from the GNU
# website at the following URL: http://www.gnu.org/licenses/gpl.txt



require 'rubygems'
require 'gd2'

class RubyProgressbar
  include GD2

  IMAGE_DIR = "./images/"
  IMAGE_STYLES = [ 'winxp', 'osx', 'led', 'solaris' ]

  public

  def initialize
    @image = nil
  end

  def create(style, width, completed, total)
    # Check arugments:
    raise ArgumentError, "style '#{style}' unknown" if
      not IMAGE_STYLES.include?(style)
    raise ArgumentError, "width must be between 64 and 1280 pixels" if
      width < 64 || width > 1280
    raise ArgumentError,
      "completed must be greater than 0 and less than total" if
        completed < 0 || completed > total
    raise ArgumentError, "total must be greater than 0" if
      total < 1

    # Open images according to defined style:
    begin
      bg        = Image.import(IMAGE_DIR + style + '-bg.png')
      fill      = Image.import(IMAGE_DIR + style + '-fill.png')
      bg_cap    = Image.import(IMAGE_DIR + style + '-bg-cap.png')
      fill_cap  = Image.import(IMAGE_DIR + style + '-fill-cap.png')
    rescue Exception => e
      raise "Unable to load required images for style #{style}!"
    end

    # calculate the fill width:
    fill_width = (((width - bg_cap.width) * completed) / total).round -
                  fill_cap.width

    # create the new image, and copy the fragments into it:
    image = Image::TrueColor.new(width, bg.height)
    image.copy_from(bg, 0, 0, 0, 0, bg.w, (width - bg_cap.w))
    image.copy_from(bg_cap, (width - bg_cap.w), 0, 0, 0, bg_cap.w, bg_cap.h)
    image.copy_from(fill, 0, 0, 0, 0, fill_width, fill.h)
    image.copy_from(fill_cap, fill_width, 0, 0, 0, fill_cap.w, fill_cap.h)

    @image = image

    # return success
    return true
  end

  def destroy
    @image = nil
  end

  def gif()
    raise Exception, "image not created" if @image.nil?
    return @image.gif()
  end

  def jpeg(compression = nil)
    raise Exception, "image not created" if @image.nil?
    return @image.jpeg(compression)
  end

  def png(compression = nil)
    raise Exception, "image not created" if @image.nil?
    return @image.png(compression)
  end

end