Module:       table-extensions
Synopsis:     The table constructor macro, et al.
Author:       Dustin Voss
Copyright:    Copyright (c) 2006 Dustin Voss.
              All rights reserved.
License:      Functional Objects Library Public License Version 1.0
Dual-license: GNU Lesser General Public License
Warranty:     Distributed WITHOUT WARRANTY OF ANY KIND

// Table constructor. Syntax:
// let my-table = table("red"=>"stop", "green"=>"go");
// let my-table = table(<string-table>, "red"=>"stop", "green"=>"go");
//
define macro table 

  // Matches when optional class included.
  { table(?table-class:expression, ?table-contents) }
    => { let ht = make(?table-class); ?table-contents; ht; }

  // Matches without optional class.
  { table(?rest:*) } => { table(<table>, ?rest); }

  table-contents:
  { } => { }
  { ?key:expression => ?value:expression, ... }
    => { ht[?key] := ?value; ... }
end macro table;