Overview

=====================
Uniform CSS Validator
=====================

:Author: `Dan Connolly`__, W3C__

__ http://www.w3.org/People/Connolly/
__ http://www.w3.org/

CSS syntax evolves in a backward- and forward-compatible way; the CSS
2.1 specification__ includes a uniform grammar, applicable to all CSS
versions.  The `original (2002) W3C CSS Validator`__ predates this
uniform grammar and maintenance is becoming an undue burden as a
result. This is an attempt to build a validator using the uniform
syntax.

__ http://www.w3.org/TR/CSS2
__ http://jigsaw.w3.org/css-validator/about.html#code

This is also something of an exercise in learning Scala development.
Provided you have some popular tools installed (see `Scala
development`_ below for details), you should be able to confirm that
all tests pass::

 cssval$ sbt test
 ...
 [info] Run: 26, Passed: 26, Errors: 0, Failed: 0
 ...

.. contents::

Scala development
-----------------

    Scala is a general purpose programming language designed to
    express common programming patterns in a concise, elegant, and
    type-safe way.

    -- `Introducing Scala`__

__ http://www.scala-lang.org/node/25

The compiler and such are open source and easy to find
from the `Scala Programming Language`__ site.

__ http://www.scala-lang.org/

For audit trail purposes, the md5 checksum of the package I
downloaded is::

  82934acf64d0c026de78b84e984f6743  scala-2.7.6.final.tgz

Once you download and unpack that, you should be able to see that
interpreter and compiler work as per `Getting Started with Scala`__.

__ http://www.scala-lang.org/node/166


Simple Build Tool (sbt)
***********************

The Scala tribe seems to use sbt__ in place of make or ant.

__ http://code.google.com/p/simple-build-tool/

Audit trail::

  MD5 (sbt-launcher-0.5.5.jar) = e3593448b3be17ce1666c6241b8d2f90

The directory layout of this project follows `sbt/maven conventions`__::

  src/
    main/
      resources/
         <files to include in main jar here>
      scala/
         <main Scala sources>
      java/
         <main Java sources>
    test/
      resources
         <files to include in test jar here>
      scala/
         <test Scala sources>
      java/
         <test Java sources>

__ http://code.google.com/p/simple-build-tool/wiki/Setup


Using `library management`__ is in progress, thanks to contributions
from Alexandre Bertails.

__ http://code.google.com/p/simple-build-tool/wiki/LibraryManagement


ScalaTest
*********

ScalaTest__ is a leading test framework for Scala.

__ http://www.scalatest.org/download

Audit trail::

  68ab03f9109ef18c9dcce048da3d8dab  scalatest-0.9.5.zip

I unpacked it and put scala-test-1.0.jar in ``lib``... or was it
``project/boot/scala-2.7.6/lib``.

There seem to be some version skew issues between sbt and ScalaTest.
For a work-around (that I have not yet tried), see:
`ScalaTest 1.0`__.

__ http://groups.google.com/group/simple-build-tool/browse_thread/thread/fb967ee255dff7f9/8efd9870026481cb?lnk=gst&q=ScalaTest+1.0#8efd9870026481cb

Emacs and Scala
***************

With ``scala-mode``, emacs helps with indentation and syntax coloring.
With ``sbt.el``, emacs can navigate compiler errors (with some
glitches). My set-up is pretty rough; some notes::

 ;;;
 ; http://www.scala-lang.org/downloads
 (add-to-list 'load-path "/home/connolly/src/scala-2.7.6.final/misc/scala-tool-support/emacs")
 (add-to-list 'exec-path "/home/connolly/src/scala-2.7.6.final/bin")
 (add-to-list 'exec-path "/home/connolly/bin")
 (require 'scala-mode-auto)

 http://code.google.com/p/simple-build-tool/wiki/IntegrationSupport
 scallap / tools / emacs / sbt.el 
 commit  000e748597d9b73e2da026029afc4ca9248aa936


Source code and Version Control
-------------------------------

To access the source code and project history using git__::

  $ git clone git://dvcs.w3.org/cssval

__ http://git-scm.com/

Or you can use mercurial with the `Hg-Git plugin`__::

  $ hg clone git://dvcs.w3.org/cssval

__ http://hg-git.github.com/

This project started Oct 11 2009, with mercurial revision
0:4ac7bd6d32f2, aka git commit
c6cdd1c783f30989c94b00844b1a739e88857366.

Thanks to bitbucket__ for hosting the project in early stages; the
cssval__ repository there may or may not be maintained.

__ http://bitbucket.org/
__ http://bitbucket.org/DanC/cssval/

Likewise, an experimental github mirror, Uniform-CSS-Validator__,
may or may not be maintained.

__ http://github.com/dckc/Uniform-CSS-Validator


Open Source Software License
----------------------------

Copyright (c) 2009 World Wide Web Consortium, (Massachusetts 
Institute of Technology, European Research Consortium for Informatics 
and Mathematics, Keio University). All Rights Reserved. This work is 
distributed under the `W3C Software License`__ 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.

__ http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231

Share and enjoy.

This license has an Open Source Initiative certification__
and is a `GPL-Compatible Free Software License`__.

__ http://www.opensource.org/licenses/W3C.php
__ http://www.fsf.org/licensing/licenses/index_html#GPLCompatibleLicenses

.. Colophon:
.. This document is written using reStructuredText conventions.
.. see Makefile for conversion to README.html .
.. see http://docutils.sourceforge.net/rst.html for more on reStructuredText.