Hi Gotoken,

I suddenly have an enlightment ;-) So I have found a way how you can
build the reports from templates. I have followed your hint. And here
it comes:

To build a report template, you can use strings and insert some special
substitution modifier. These are currently...

	%C   -- Category number
	%L   -- Locality (Set by `ok' if test not OK; (caller[0]))
	%S   -- Section number or "0" if no section used yet.
	%T   -- Test number
	%W   -- `What' text, defined by last `section' or `check' cmd

	The following substitutions are valid between `start_tests' and
	`end_tests'. They will be reset by the latter.
	
	%NT  -- Amount of all tests executed.
	%NC  -- Amount of all categories used so far.
	%NF  -- Amount of all failed tests.

	The last two substitutions should support you to define more
	complex or complicated text.

	%{<cond>,<text>}  -- If <cond> is "0", then <text> will be
	                     skipped. <cond> may be e.g. `%S'.
	%(<cond>,<text1>,<text2>)  -- If <cond> is "1", <text1> will be
	                              substituted into the template.
	                              However, if <cond> is not "1", 	
    	                              <text2> will be substituted.

With that you can build you own reports. BTW: All standard reports are
build with these templates :-)

Example:
	"Test%(%NT,,s) finished (totally %NT test%(%NT,,s)"+
	"%{%NF,; %NF test%(%NF,,s) failed})"

	Would substitute to the following reports depending of the
	current state of `ntests' and `nfails'.


	ntests==1, nfails==0
	==>  "Tests finished (totally 1 test)"

	ntests==1, nfails==1 	
	==>  "Tests finished (totally 2 tests; 1 test failed)"

	ntests==1, nfails==2
	==>  "Tests finished (totally 2 tests; 2 tests failed)"

	ntests==2, nfails==0 
	==>  "Tests finished (totally 2 tests)"

	ntests==2, nfails==1
	==>  "Tests finished (totally 1 tests; 1 test failed)"

	ntests==2, nfails==2
	==>  "Tests finished (totally 1 tests; 2 tests failed)"

Would that be sufficient for you?

Furthermore I have now introduced the `section' command. Now you can
group you tests like that:

	:
	start_tests
	
	section 1,"Ruby tests"

	section 2,"Base tests"

	check "assignment"

	a=[]; a[0] ||= "bar";
	ok(a[0] == "bar")
	h={}; h["foo"] ||= "bar";
	ok(h["foo"] == "bar")
	
	check "condition"

	$x = '0';

	$x == $x && ok(true)
	$x != $x && ok(false)

	section 2,"Complex tests"

	:

	end_tests
	:

What do you think?

I will doing some documentation for `rd2html' before I release the new
version.

LONG LIVE RUBY!

\cle