Michael Granger avatar Michael Granger committed 21e0fa6

Converted to a new build system.

Comments (0)

Files changed (30)

.cvsignore

-Linguistics-*.tar.bz2
-Linguistics-*.tar.gz
-Linguistics-*.zip

.gemspec

-#!/usr/bin/ruby
-#
-# Linguistics RubyGems specification
-# $Id$
-#
-
-require 'rubygems'
-require './utils.rb'
-include UtilityFunctions
-
-spec = Gem::Specification.new do |s|
-	s.name = 'Linguistics'
-	s.version = "1.1.0"
-	s.platform = Gem::Platform::RUBY
-	s.summary = "A generic, language-neutral framework for extending Ruby " +
-		"objects with linguistic methods."
-	s.files = getVettedManifest()
-	s.require_path = 'lib'
-	s.autorequire = 'linguistics'
-	s.author = "Michael Granger, Martin Chase"
-	s.email = "ged@FaerieMUD.org, stillflame@FaerieMUD.org"
-	s.homepage = "http://www.deveiate.org/projects/Linguistics/"
-end
-
-if $0==__FILE__
-	p spec
-	Gem::manage_gems
-	Gem::Builder.new(spec).build
-end
-
-
-$:.unshift '../lib'
-require 'rubygems'
-
-

Artistic

-= The "Artistic License"
-
-== Preamble
-
-The intent of this document is to state the conditions under which a
-Package may be copied, such that the Copyright Holder maintains some
-semblance of artistic control over the development of the package,
-while giving the users of the package the right to use and distribute
-the Package in a more-or-less customary fashion, plus the right to make
-reasonable modifications.
-
-== Definitions
-
-"Package" refers to the collection of files distributed by the
-Copyright Holder, and derivatives of that collection of files
-created through textual modification.
-
-"Standard Version" refers to such a Package if it has not been
-modified, or has been modified in accordance with the wishes
-of the Copyright Holder as specified below.
-
-"Copyright Holder" is whoever is named in the copyright or
-copyrights for the package.
-
-"You" is you, if you're thinking about copying or distributing
-this Package.
-
-"Reasonable copying fee" is whatever you can justify on the
-basis of media cost, duplication charges, time of people involved,
-and so on.  (You will not be required to justify it to the
-Copyright Holder, but only to the computing community at large
-as a market that must bear the fee.)
-
-"Freely Available" means that no fee is charged for the item
-itself, though there may be fees involved in handling the item.
-It also means that recipients of the item may redistribute it
-under the same conditions they received it.
-
-1. You may make and give away verbatim copies of the source form of the
-   Standard Version of this Package without restriction, provided that you
-   duplicate all of the original copyright notices and associated disclaimers.
-
-2. You may apply bug fixes, portability fixes and other modifications
-   derived from the Public Domain or from the Copyright Holder.  A Package
-   modified in such a way shall still be considered the Standard Version.
-
-3. You may otherwise modify your copy of this Package in any way, provided
-   that you insert a prominent notice in each changed file stating how and
-   when you changed that file, and provided that you do at least ONE of the
-   following:
-
-   a. place your modifications in the Public Domain or otherwise make them
-      Freely Available, such as by posting said modifications to Usenet or
-      an equivalent medium, or placing the modifications on a major archive
-      site such as uunet.uu.net, or by allowing the Copyright Holder to include
-      your modifications in the Standard Version of the Package.
-
-   b. use the modified Package only within your corporation or organization.
-
-   c. rename any non-standard executables so the names do not conflict
-      with standard executables, which must also be provided, and provide
-      a separate manual page for each non-standard executable that clearly
-      documents how it differs from the Standard Version.
-
-   d. make other distribution arrangements with the Copyright Holder.
-
-4. You may distribute the programs of this Package in object code or
-   executable form, provided that you do at least ONE of the following:
-
-   a. distribute a Standard Version of the executables and library files,
-      together with instructions (in the manual page or equivalent. on where
-      to get the Standard Version.
-
-   b. accompany the distribution with the machine-readable source of
-      the Package with your modifications.
-
-   c. give non-standard executables non-standard names, and clearly
-      document the differences in manual pages (or equivalent., together
-      with instructions on where to get the Standard Version.
-
-   d. make other distribution arrangements with the Copyright Holder.
-
-5. You may charge a reasonable copying fee for any distribution of this
-   Package.  You may charge any fee you choose for support of this
-   Package.  You may not charge a fee for this Package itself.  However,
-   you may distribute this Package in aggregate with other (possibly
-   commercial) programs as part of a larger (possibly commercial) software
-   distribution provided that you do not advertise this Package as a
-   product of your own.  You may embed this Package's interpreter within
-   an executable of yours (by linking); this shall be construed as a mere
-   form of aggregation, provided that the complete Standard Version of the
-   interpreter is so embedded.
-
-6. The scripts and library files supplied as input to or produced as
-   output from the programs of this Package do not automatically fall
-   under the copyright of this Package, but belong to whoever generated
-   them, and may be sold commercially, and may be aggregated with this
-   Package.  If such scripts or library files are aggregated with this
-   Package via the so-called "undump" or "unexec" methods of producing a
-   binary executable image, then distribution of such an image shall
-   neither be construed as a distribution of this Package nor shall it
-   fall under the restrictions of Paragraphs 3 and 4, provided that you do
-   not represent such an executable image as a Standard Version of this
-   Package.
-
-7. C subroutines (or comparably compiled subroutines in other
-   languages) supplied by you and linked into this Package in order to
-   emulate subroutines and variables of the language defined by this
-   Package shall not be considered part of this Package, but are the
-   equivalent of input as in Paragraph 6, provided these subroutines do
-   not change the language in any way that would cause it to fail the
-   regression tests for the language.
-
-8. Aggregation of this Package with a commercial distribution is always
-   permitted provided that the use of this Package is embedded; that is,
-   when no overt attempt is made to make this Package's interfaces visible
-   to the end user of the commercial distribution.  Such use shall not be
-   construed as a distribution of this Package.
-
-9. The name of the Copyright Holder may not be used to endorse or promote
-   products derived from this software without specific prior written permission.
-
-10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
-    IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-    WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-                The End
-------------------------------------------------------------------------
-r82 | ged | 2005-07-13 19:09:21 -0400 (Wed, 13 Jul 2005) | 2 lines
+-- Wed, 30 Jan 2008 07:01:39 -0000 by deveiant (r98) -----
+   Added:   spec/linguistics/iso639_spec.rb (new)
+            spec/linguistics_spec.rb
+            -> renamed from /trunk/tests/use.tests.rb@r97
+            spec/linguistics/en_spec.rb
+            -> renamed from /trunk/tests/en/conjunction.tests.rb@r97
+            misc/rake/verifytask.rb (new)
+            misc/rake (new)
+            misc/rake/helpers.rb (new) (and 6 other/s)
+   Changed: lib/linguistics/iso639.rb
+            lib/linguistics.rb
+            Linguistics.tmproj
+   Deleted: tests/en/conjunction.tests.rb
+            tests/use.tests.rb
 
-- Ignored html directory.
+   Started update of specs and build system
 
-------------------------------------------------------------------------
-r81 | ged | 2005-07-13 18:35:45 -0400 (Wed, 13 Jul 2005) | 2 lines
 
-- Merged changes from project-utils.
+-- Wed, 25 Jul 2007 17:18:09 -0000 by deveiant (r97) -----
+   Added:   examples (new)
+            examples/generalize_sentence.rb (new)
 
-------------------------------------------------------------------------
-r80 | ged | 2005-07-13 17:04:50 -0400 (Wed, 13 Jul 2005) | 2 lines
+   Adding examples directory
 
-Initial checkin. Fixes #3.
 
-------------------------------------------------------------------------
-r79 | ged | 2005-07-13 16:18:54 -0400 (Wed, 13 Jul 2005) | 2 lines
+-- Wed, 13 Jun 2007 05:25:38 -0000 by deveiant (r95) -----
+   Added:   tests/en/lprintf.tests.rb (new)
+   Changed: README
+            tests/en/conjunction.tests.rb
+            .gemspec
+            tests/use.tests.rb
+            utils.rb
+            makedist.rb (and 17 other/s)
 
-- Set svn:keyword
+   Checkpoint commit
 
-------------------------------------------------------------------------
-r78 | ged | 2005-07-13 15:58:43 -0400 (Wed, 13 Jul 2005) | 5 lines
 
-- Fixed up subversion constants
-- Merged contributions from Francis Hwang <sera@fhwang.net>
-  (#camel_case_to_english, #english_to_camel_case, #proper_noun). Closes #2
-- Set svn:keyword
+-- Tue, 11 Jul 2006 22:42:34 -0000 by ged (r93) -----
+   Changed: docs/CATALOG
 
-------------------------------------------------------------------------
-r77 | ged | 2005-07-13 08:46:29 -0400 (Wed, 13 Jul 2005) | 3 lines
 
-- Added Subversion constants
-- Cleaned up comments for language proxy class.
+    * Updating docs/CATALOG with new CVS/server info
 
-------------------------------------------------------------------------
-r76 | ged | 2005-07-13 08:43:53 -0400 (Wed, 13 Jul 2005) | 2 lines
 
-Initial checkin.
+-- Tue, 11 Jul 2006 22:41:56 -0000 by ged (r92) -----
+   Changed: tests/en/conjunction.tests.rb
+            lib/linguistics/en.rb
 
-------------------------------------------------------------------------
-r75 | ged | 2005-07-13 08:42:30 -0400 (Wed, 13 Jul 2005) | 2 lines
 
-Initial checkin.
+    * Fix #conjunction with :penultimate => false for lists of three.
 
-------------------------------------------------------------------------
-r74 | deveiant | 2004-05-08 15:15:04 -0400 (Sat, 08 May 2004) | 2 lines
 
-- Added compatibility with Aoki-san's install.rb. Kind of.
+-- Tue, 11 Jul 2006 19:17:58 -0000 by ged (r91) -----
+   Changed: lib/linguistics/en.rb
+            tests/en/inflect.tests.rb
 
-------------------------------------------------------------------------
-r73 | deveiant | 2004-05-08 15:07:51 -0400 (Sat, 08 May 2004) | 2 lines
 
-- Bugfix: Linkparser should start out missing by default.
+    * Fixed the ':and' setting in EN#numwords. Closes #8.
 
-------------------------------------------------------------------------
-r72 | deveiant | 2004-05-08 15:07:09 -0400 (Sat, 08 May 2004) | 3 lines
 
-- Fixed to work even if it's not in the cwd. Thanks to batsman on
-  irc://irc.freenode.net/#ruby-lang for reporting this.
+-- Sun, 30 Apr 2006 00:53:56 -0000 by ged (r89) -----
+   Added:   Linguistics.tmproj (new)
+            experiments/conjunct-with-block.rb (new)
+   Changed: /trunk
+            tests/en/conjunction.tests.rb
+            utils.rb
+            lib/linguistics.rb
+            lib/linguistics/en.rb
+            lib/linguistics/en/wordnet.rb (and 2 other/s)
 
-------------------------------------------------------------------------
-r68 | deveiant | 2003-10-09 09:24:25 -0400 (Thu, 09 Oct 2003) | 2 lines
+    * Added optional block to #conjuction to allow inline conversion of joined
+    objects.
+    * Added lprintf for injecting linguistics into formatted strings.
 
-Initial checkin.
 
-------------------------------------------------------------------------
-r67 | deveiant | 2003-10-09 09:23:09 -0400 (Thu, 09 Oct 2003) | 4 lines
+-- Fri, 04 Nov 2005 12:17:24 -0000 by ged (r88) -----
+   Added:   experiments/lprintf.rb (new)
+   Changed: experiments/api.rb
 
-- Updated requirements list
+   * Updated api experiment so that it actually runs by commenting out the leftover
+   Perl stuff.
+   * Added lprintf() experiment.
 
-- Removed unnecessary readline require
 
-------------------------------------------------------------------------
-r66 | deveiant | 2003-10-09 09:21:48 -0400 (Thu, 09 Oct 2003) | 3 lines
+-- Sun, 30 Oct 2005 23:59:33 -0000 by ged (r87) -----
+   Changed: lib/linguistics.rb
 
-- Fixed requirements/optional libraries (Thanks to Yuri Leikind
-  <y.leikind@sam-solutions.net> for bringing this to my attention).
+   - Added autoloading of language constants.
 
-------------------------------------------------------------------------
-r65 | deveiant | 2003-10-09 09:20:50 -0400 (Thu, 09 Oct 2003) | 6 lines
 
-- Wildcarded everything under lib/ so new additions don't have to be explicitly
-  listed.
+-- Fri, 14 Oct 2005 20:39:57 -0000 by ged (r86) -----
+   Changed: docs/makedocs.rb
+            utils.rb
+            makedist.rb
+            install.rb
 
-- Added README.english (Thanks to Yuri Leikind <y.leikind@sam-solutions.net> for
-  bringing this to my attention).
+   - Updated to latest project-utils.
 
-------------------------------------------------------------------------
-r64 | deveiant | 2003-09-14 07:28:02 -0400 (Sun, 14 Sep 2003) | 7 lines
 
-- Calls to #synset no longer trap parse errors. This was done for two reasons:
+-- Fri, 14 Oct 2005 20:34:49 -0000 by ged (r85) -----
+   Changed: lib/linguistics/en.rb
 
-  1. If the WordNet doesn't load, WordNet::ParseError is an undefined constant,
-     so the function fails with a semi-ambiguous error message.
+   - Replaced 'hash.dup.update' with 'hash.merge'.
 
-  2. The user of the library might wish to handle the parse failure herself.
 
-------------------------------------------------------------------------
-r63 | deveiant | 2003-09-14 07:20:51 -0400 (Sun, 14 Sep 2003) | 2 lines
+-- Thu, 14 Jul 2005 23:12:24 -0000 by ged (r83) -----
+   Changed: ChangeLog
 
-- Added redist/ to $LOAD_PATH.
+   Updated changelog
 
-------------------------------------------------------------------------
-r62 | deveiant | 2003-09-14 07:15:57 -0400 (Sun, 14 Sep 2003) | 4 lines
 
-- Added synopsis of use to the comment header.
+-- Wed, 13 Jul 2005 23:09:21 -0000 by ged (r82) -----
+   Changed: docs
 
-- Added reminder to finish documenting the auto-generated code.
+   - Ignored html directory.
 
-------------------------------------------------------------------------
-r61 | deveiant | 2003-09-14 07:15:33 -0400 (Sun, 14 Sep 2003) | 2 lines
 
-- Added synopsis of use to the comment header.
+-- Wed, 13 Jul 2005 22:35:45 -0000 by ged (r81) -----
+   Changed: docs/makedocs.rb
+            utils.rb
+            makedist.rb
 
-------------------------------------------------------------------------
-r60 | deveiant | 2003-09-14 07:15:18 -0400 (Sun, 14 Sep 2003) | 2 lines
+   - Merged changes from project-utils.
 
-- Added README.english
 
-------------------------------------------------------------------------
-r59 | deveiant | 2003-09-14 07:15:05 -0400 (Sun, 14 Sep 2003) | 2 lines
+-- Wed, 13 Jul 2005 21:04:50 -0000 by ged (r80) -----
+   Added:   .gemspec (new)
 
-- Fixed screwed-up code resulting from broken paste.
+   Initial checkin. Fixes #3.
 
-------------------------------------------------------------------------
-r58 | deveiant | 2003-09-14 07:14:28 -0400 (Sun, 14 Sep 2003) | 2 lines
 
-- Added mention of README.english.
+-- Wed, 13 Jul 2005 20:18:54 -0000 by ged (r79) -----
+   Changed: experiments/api.rb
+            experiments/randobjlist.rb
+            experiments/wn-proglang.rb
+            experiments/allobjlist.rb
+            experiments/lafcadio_plural.rb
+            experiments/farmobjs.rb (and 2 other/s)
 
-------------------------------------------------------------------------
-r57 | deveiant | 2003-09-14 06:47:12 -0400 (Sun, 14 Sep 2003) | 2 lines
+   - Set svn:keyword
 
-- Removed redundant mention of the WordNet module from the comment header.
 
-------------------------------------------------------------------------
-r56 | deveiant | 2003-09-14 06:45:01 -0400 (Sun, 14 Sep 2003) | 2 lines
+-- Wed, 13 Jul 2005 19:58:43 -0000 by ged (r78) -----
+   Added:   tests/en/titlecase.tests.rb (new)
+            tests/en/lafcadio.tests.rb (new)
+   Changed: redist/crosscase.rb
+            tests/use.tests.rb
+            tests/en/linkparser.tests.rb
+            lib/linguistics.rb
+            lib/linguistics/en.rb
+            tests/lingtestcase.rb (and 2 other/s)
+   Deleted: redist/hashslice.rb
 
-- Fixed the comment header some more.
+   - Fixed up subversion constants
+   - Merged contributions from Francis Hwang <sera@fhwang.net>
+   (#camel_case_to_english, #english_to_camel_case, #proper_noun). Closes #2
+   - Set svn:keyword
 
-------------------------------------------------------------------------
-r55 | deveiant | 2003-09-14 06:39:04 -0400 (Sun, 14 Sep 2003) | 2 lines
 
-- Now installs the stuff in redist/ too.
+-- Wed, 13 Jul 2005 12:46:29 -0000 by ged (r77) -----
+   Changed: lib/linguistics.rb
 
-------------------------------------------------------------------------
-r54 | deveiant | 2003-09-14 06:36:00 -0400 (Sun, 14 Sep 2003) | 2 lines
+   - Added Subversion constants
+   - Cleaned up comments for language proxy class.
 
-- Changed pattern for the redist directory to catch any .rb files.
 
-------------------------------------------------------------------------
-r53 | deveiant | 2003-09-14 06:35:32 -0400 (Sun, 14 Sep 2003) | 2 lines
+-- Wed, 13 Jul 2005 12:43:53 -0000 by ged (r76) -----
+   Added:   experiments/lafcadio_plural.rb (new)
 
-- Fixed names of constants to reduce the chances of collision.
+   Initial checkin.
 
-------------------------------------------------------------------------
-r52 | deveiant | 2003-09-14 06:33:01 -0400 (Sun, 14 Sep 2003) | 2 lines
 
-Initial checkin from version 0.01 of CrossCase.
+-- Wed, 13 Jul 2005 12:42:30 -0000 by ged (r75) -----
+   Added:   experiments/TEMPLATE.rb.tpl (new)
 
-------------------------------------------------------------------------
-r51 | deveiant | 2003-09-14 06:30:38 -0400 (Sun, 14 Sep 2003) | 3 lines
+   Initial checkin.
 
-- Changed parsing of non-sentences to expect errors in accordance with changes
-  to the API of the LinkParser integration.
 
-------------------------------------------------------------------------
-r50 | deveiant | 2003-09-14 06:24:58 -0400 (Sun, 14 Sep 2003) | 3 lines
+-- Sat, 08 May 2004 19:15:04 -0000 by deveiant (r74) -----
+   Changed: install.rb
 
-- Added CrossCase require/include to provide under_barred aliasing for camelCase
-  functions.
+   - Added compatibility with Aoki-san's install.rb. Kind of.
 
-------------------------------------------------------------------------
-r49 | deveiant | 2003-09-14 06:24:06 -0400 (Sun, 14 Sep 2003) | 4 lines
 
-- Added Martin to the Authors list.
+-- Sat, 08 May 2004 19:07:51 -0000 by deveiant (r73) -----
+   Changed: lib/linguistics/en/linkparser.rb
 
-- Updated optional list.
+   - Bugfix: Linkparser should start out missing by default.
 
-------------------------------------------------------------------------
-r48 | deveiant | 2003-09-14 06:23:19 -0400 (Sun, 14 Sep 2003) | 2 lines
 
-Initial checkin.
+-- Sat, 08 May 2004 19:07:09 -0000 by deveiant (r72) -----
+   Changed: test.rb
 
-------------------------------------------------------------------------
-r47 | deveiant | 2003-09-14 05:29:15 -0400 (Sun, 14 Sep 2003) | 13 lines
+   - Fixed to work even if it's not in the cwd. Thanks to batsman on
+   irc://irc.freenode.net/#ruby-lang for reporting this.
 
-- Touched up the file description a bit.
 
-- @lp_error now intitialized: bug spotted by Martin Chase.
+-- Thu, 09 Oct 2003 13:24:25 -0000 by deveiant (r68) -----
+   Added:   .cvsignore (new)
 
-- Calls to #linkParse no longer trap parse errors. This was done for two
-  reasons:
+   Initial checkin.
 
-  1. If the LinkParser module doesn't load, LinkParser::ParseError is an
-     undefined constant, so the function fails with a semi-ambiguous error
-     message.
 
-  2. The user of the library might wish to handle the parse failure herself.
+-- Thu, 09 Oct 2003 13:23:09 -0000 by deveiant (r67) -----
+   Changed: install.rb
 
-------------------------------------------------------------------------
-r46 | deveiant | 2003-09-11 01:04:55 -0400 (Thu, 11 Sep 2003) | 2 lines
+   - Updated requirements list
+   - Removed unnecessary readline require
 
-Checkpoint commit
 
-------------------------------------------------------------------------
-r45 | deveiant | 2003-09-11 01:04:04 -0400 (Thu, 11 Sep 2003) | 4 lines
+-- Thu, 09 Oct 2003 13:21:48 -0000 by deveiant (r66) -----
+   Changed: README
 
-- Added test for functional interface to auto-generated code.
+   - Fixed requirements/optional libraries (Thanks to Yuri Leikind
+   <y.leikind@sam-solutions.net> for bringing this to my attention).
 
-- Removed tests of the 'use' function into their own test case.
 
-------------------------------------------------------------------------
-r44 | deveiant | 2003-09-11 01:03:12 -0400 (Thu, 11 Sep 2003) | 2 lines
+-- Thu, 09 Oct 2003 13:20:50 -0000 by deveiant (r65) -----
+   Changed: MANIFEST
 
-- Added test for functional interface to auto-generated code.
+   - Wildcarded everything under lib/ so new additions don't have to be explicitly
+   listed.
+   - Added README.english (Thanks to Yuri Leikind <y.leikind@sam-solutions.net> for
+   bringing this to my attention).
 
-------------------------------------------------------------------------
-r43 | deveiant | 2003-09-11 01:02:32 -0400 (Thu, 11 Sep 2003) | 2 lines
 
-Initial checkin.
+-- Sun, 14 Sep 2003 11:28:02 -0000 by deveiant (r64) -----
+   Changed: lib/linguistics/en/wordnet.rb
 
-------------------------------------------------------------------------
-r42 | deveiant | 2003-09-11 01:02:04 -0400 (Thu, 11 Sep 2003) | 6 lines
+   - Calls to #synset no longer trap parse errors. This was done for two reasons:
+   1. If the WordNet doesn't load, WordNet::ParseError is an undefined constant,
+   so the function fails with a semi-ambiguous error message.
+   2. The user of the library might wish to handle the parse failure herself.
 
-- Fixed require block at the top.
 
-- Changed name of intermediate class to reflect change in linguistics.rb.
+-- Sun, 14 Sep 2003 11:20:51 -0000 by deveiant (r63) -----
+   Changed: test.rb
 
-- Fixed 1.8 complaint.
+   - Added redist/ to $LOAD_PATH.
 
-------------------------------------------------------------------------
-r41 | deveiant | 2003-09-11 01:00:56 -0400 (Thu, 11 Sep 2003) | 4 lines
 
-- Added a dummy test so if the tests for optional modules can't be run (because
-  the modules on which they depend aren't installed), it doesn't count as a
-  failure because there were no tests.
+-- Sun, 14 Sep 2003 11:15:57 -0000 by deveiant (r62) -----
+   Changed: lib/linguistics/en/wordnet.rb
 
-------------------------------------------------------------------------
-r40 | deveiant | 2003-09-11 00:59:51 -0400 (Thu, 11 Sep 2003) | 2 lines
+   - Added synopsis of use to the comment header.
+   - Added reminder to finish documenting the auto-generated code.
 
-- Fixed leftover comment from copy.
 
-------------------------------------------------------------------------
-r39 | deveiant | 2003-09-11 00:57:46 -0400 (Thu, 11 Sep 2003) | 2 lines
+-- Sun, 14 Sep 2003 11:15:33 -0000 by deveiant (r61) -----
+   Changed: lib/linguistics/en/linkparser.rb
 
-- Fixed typo.
+   - Added synopsis of use to the comment header.
 
-------------------------------------------------------------------------
-r38 | deveiant | 2003-09-11 00:57:27 -0400 (Thu, 11 Sep 2003) | 7 lines
 
-- Removed some more code for the aborted attempt to make the module
-  1.6-compatible.
+-- Sun, 14 Sep 2003 11:15:18 -0000 by deveiant (r60) -----
+   Changed: docs/CATALOG
 
-- Added requires for new extensions 'wordnet', 'linkparser', and 'infinitive'.
+   - Added README.english
 
-- Updated docs in the header, though they're not yet ready for release.
 
-------------------------------------------------------------------------
-r37 | deveiant | 2003-09-11 00:55:11 -0400 (Thu, 11 Sep 2003) | 10 lines
+-- Sun, 14 Sep 2003 11:15:05 -0000 by deveiant (r59) -----
+   Changed: README.english
 
-- Changed name of "inflector" class to "languageProxy" to better fit what it
-  does.
+   - Fixed screwed-up code resulting from broken paste.
 
-- Added support for transparent delegator proxy methods.
 
-- Added support for MyClass::extend( Linguistics ) and class MyClass; include
-  Linguistics; end.
+-- Sun, 14 Sep 2003 11:14:28 -0000 by deveiant (r58) -----
+   Changed: README
 
-- Modified code in #load_language to minimize the number of requires.
+   - Added mention of README.english.
 
-------------------------------------------------------------------------
-r36 | deveiant | 2003-09-11 00:52:32 -0400 (Thu, 11 Sep 2003) | 2 lines
 
-- Added :installProxy config to the #use call.
+-- Sun, 14 Sep 2003 10:47:12 -0000 by deveiant (r57) -----
+   Changed: lib/linguistics/en.rb
 
-------------------------------------------------------------------------
-r35 | deveiant | 2003-09-11 00:52:03 -0400 (Thu, 11 Sep 2003) | 2 lines
+   - Removed redundant mention of the WordNet module from the comment header.
 
-Initial checkin.
 
-------------------------------------------------------------------------
-r34 | deveiant | 2003-09-11 00:51:41 -0400 (Thu, 11 Sep 2003) | 2 lines
+-- Sun, 14 Sep 2003 10:45:01 -0000 by deveiant (r56) -----
+   Changed: lib/linguistics/en/linkparser.rb
 
-- Added example output.
+   - Fixed the comment header some more.
 
-------------------------------------------------------------------------
-r33 | deveiant | 2003-09-11 00:51:26 -0400 (Thu, 11 Sep 2003) | 3 lines
 
-- Reworked to be more generically useful, and support parsing of options from
-  CATALOG file.
+-- Sun, 14 Sep 2003 10:39:04 -0000 by deveiant (r55) -----
+   Changed: install.rb
 
-------------------------------------------------------------------------
-r32 | deveiant | 2003-09-11 00:50:49 -0400 (Thu, 11 Sep 2003) | 2 lines
+   - Now installs the stuff in redist/ too.
 
-- Added rdoc-option header.
 
-------------------------------------------------------------------------
-r31 | deveiant | 2003-09-11 00:50:13 -0400 (Thu, 11 Sep 2003) | 2 lines
+-- Sun, 14 Sep 2003 10:36:00 -0000 by deveiant (r54) -----
+   Changed: MANIFEST
 
-- Brought up-to-date with canonical source.
+   - Changed pattern for the redist directory to catch any .rb files.
 
-------------------------------------------------------------------------
-r30 | deveiant | 2003-09-11 00:49:45 -0400 (Thu, 11 Sep 2003) | 2 lines
 
-- Removed finished items.
+-- Sun, 14 Sep 2003 10:35:32 -0000 by deveiant (r53) -----
+   Changed: lib/linguistics/en/infinitive.rb
 
-------------------------------------------------------------------------
-r29 | deveiant | 2003-09-11 00:48:46 -0400 (Thu, 11 Sep 2003) | 2 lines
+   - Fixed names of constants to reduce the chances of collision.
 
-- Beginnings of update for new release. Still needs more work before release.
 
-------------------------------------------------------------------------
-r28 | deveiant | 2003-09-11 00:48:06 -0400 (Thu, 11 Sep 2003) | 2 lines
+-- Sun, 14 Sep 2003 10:33:01 -0000 by deveiant (r52) -----
+   Added:   redist/crosscase.rb (new)
 
-- Added ChangeLog.
+   Initial checkin from version 0.01 of CrossCase.
 
-------------------------------------------------------------------------
-r27 | deveiant | 2003-09-11 00:25:23 -0400 (Thu, 11 Sep 2003) | 2 lines
 
-Initial checkin.
+-- Sun, 14 Sep 2003 10:30:38 -0000 by deveiant (r51) -----
+   Changed: tests/en/linkparser.tests.rb
 
-------------------------------------------------------------------------
-r26 | deveiant | 2003-09-09 23:48:46 -0400 (Tue, 09 Sep 2003) | 2 lines
+   - Changed parsing of non-sentences to expect errors in accordance with changes
+   to the API of the LinkParser integration.
 
-Initial checkin.
 
-------------------------------------------------------------------------
-r25 | stillflame | 2003-09-09 15:29:15 -0400 (Tue, 09 Sep 2003) | 2 lines
+-- Sun, 14 Sep 2003 10:24:58 -0000 by deveiant (r50) -----
+   Changed: lib/linguistics/en.rb
 
-initial import
+   - Added CrossCase require/include to provide under_barred aliasing for camelCase
+   functions.
 
-------------------------------------------------------------------------
-r24 | deveiant | 2003-08-26 06:35:16 -0400 (Tue, 26 Aug 2003) | 2 lines
 
-Initial checkin.
+-- Sun, 14 Sep 2003 10:24:06 -0000 by deveiant (r49) -----
+   Changed: README
 
-------------------------------------------------------------------------
-r23 | deveiant | 2003-07-10 20:36:40 -0400 (Thu, 10 Jul 2003) | 2 lines
+   - Added Martin to the Authors list.
+   - Updated optional list.
 
-- Added a Range#step 1.6 compat function.
 
-------------------------------------------------------------------------
-r22 | deveiant | 2003-07-10 20:20:10 -0400 (Thu, 10 Jul 2003) | 2 lines
+-- Sun, 14 Sep 2003 10:23:19 -0000 by deveiant (r48) -----
+   Added:   README.english (new)
 
-- 1.6 fixes.
+   Initial checkin.
 
-------------------------------------------------------------------------
-r21 | deveiant | 2003-07-10 20:13:54 -0400 (Thu, 10 Jul 2003) | 2 lines
 
-- More 1.6ish fixes.
+-- Sun, 14 Sep 2003 09:29:15 -0000 by deveiant (r47) -----
+   Changed: lib/linguistics/en/linkparser.rb
 
-------------------------------------------------------------------------
-r20 | deveiant | 2003-07-10 19:52:36 -0400 (Thu, 10 Jul 2003) | 2 lines
+   - Touched up the file description a bit.
+   - @lpError now intitialized: bug spotted by Martin Chase.
+   - Calls to #linkParse no longer trap parse errors. This was done for two
+   reasons:
+   1. If the LinkParser module doesn't load, LinkParser::ParseError is an
+   undefined constant, so the function fails with a semi-ambiguous error
+   message.
+   2. The user of the library might wish to handle the parse failure herself.
 
-Made module_methods out of the backend functions to support including linguistic methods again.
 
-------------------------------------------------------------------------
-r19 | deveiant | 2003-07-10 19:45:26 -0400 (Thu, 10 Jul 2003) | 2 lines
+-- Thu, 11 Sep 2003 05:04:55 -0000 by deveiant (r46) -----
+   Added:   ChangeLog (new)
 
-- Fixed use of Hash#merge! (1.8 feature)
+   Checkpoint commit
 
-------------------------------------------------------------------------
-r18 | deveiant | 2003-07-10 19:38:24 -0400 (Thu, 10 Jul 2003) | 2 lines
 
-- Fixed usage of Hash#merge (a 1.8 feature).
+-- Thu, 11 Sep 2003 05:04:04 -0000 by deveiant (r45) -----
+   Changed: tests/en/inflect.tests.rb
 
-------------------------------------------------------------------------
-r17 | deveiant | 2003-07-09 20:00:00 -0400 (Wed, 09 Jul 2003) | 2 lines
+   - Added test for functional interface to auto-generated code.
+   - Removed tests of the 'use' function into their own test case.
 
-- Removed unneccessary require of test/unit/mock.
 
-------------------------------------------------------------------------
-r16 | deveiant | 2003-07-09 19:24:42 -0400 (Wed, 09 Jul 2003) | 2 lines
+-- Thu, 11 Sep 2003 05:03:12 -0000 by deveiant (r44) -----
+   Changed: tests/en/conjunction.tests.rb
 
-Initial checkin.
+   - Added test for functional interface to auto-generated code.
 
-------------------------------------------------------------------------
-r15 | deveiant | 2003-07-09 17:45:36 -0400 (Wed, 09 Jul 2003) | 2 lines
 
-Initial checkin.
+-- Thu, 11 Sep 2003 05:02:32 -0000 by deveiant (r43) -----
+   Added:   lib/linguistics/en/wordnet.rb (new)
+            tests/en/infinitive.tests.rb (new)
 
-------------------------------------------------------------------------
-r14 | deveiant | 2003-07-09 16:39:59 -0400 (Wed, 09 Jul 2003) | 2 lines
+   Initial checkin.
 
-- Explicitly listed linguistics.rb so it gets documented first.
 
-------------------------------------------------------------------------
-r13 | deveiant | 2003-07-09 16:39:25 -0400 (Wed, 09 Jul 2003) | 2 lines
+-- Thu, 11 Sep 2003 05:02:04 -0000 by deveiant (r42) -----
+   Changed: tests/use.tests.rb
 
-- Commented out rdoc-selection code, as it doesn't work.
+   - Fixed require block at the top.
+   - Changed name of intermediate class to reflect change in linguistics.rb.
+   - Fixed 1.8 complaint.
 
-------------------------------------------------------------------------
-r12 | deveiant | 2003-07-09 16:38:14 -0400 (Wed, 09 Jul 2003) | 2 lines
 
-- Fleshed out instructions for use and addition.
+-- Thu, 11 Sep 2003 05:00:56 -0000 by deveiant (r41) -----
+   Changed: tests/lingtestcase.rb
 
-------------------------------------------------------------------------
-r11 | deveiant | 2003-07-09 16:37:06 -0400 (Wed, 09 Jul 2003) | 2 lines
+   - Added a dummy test so if the tests for optional modules can't be run (because
+   the modules on which they depend aren't installed), it doesn't count as a
+   failure because there were no tests.
 
-- RDoc fixes
 
-------------------------------------------------------------------------
-r10 | deveiant | 2003-07-09 16:35:29 -0400 (Wed, 09 Jul 2003) | 2 lines
+-- Thu, 11 Sep 2003 04:59:51 -0000 by deveiant (r40) -----
+   Changed: tests/TEMPLATE.rb.tpl
 
-- Made some RDoc fixes
+   - Fixed leftover comment from copy.
 
-------------------------------------------------------------------------
-r9 | deveiant | 2003-07-09 15:30:42 -0400 (Wed, 09 Jul 2003) | 4 lines
 
-- Added array-wrapping to allow single classes in the :classes config argument.
+-- Thu, 11 Sep 2003 04:57:46 -0000 by deveiant (r39) -----
+   Changed: lib/linguistics/iso639.rb
 
-- Wrapped the code that adds the inflector method in a test for the method's existance to avoid constantly redefining it for classes which already have it.
+   - Fixed typo.
 
-------------------------------------------------------------------------
-r8 | deveiant | 2003-07-09 15:16:21 -0400 (Wed, 09 Jul 2003) | 2 lines
 
-- Moved Array extension to the bottom of the file to avoid confusion, and turned on :nodoc: for it.
+-- Thu, 11 Sep 2003 04:57:27 -0000 by deveiant (r38) -----
+   Changed: lib/linguistics/en.rb
 
-------------------------------------------------------------------------
-r7 | deveiant | 2003-07-09 14:24:13 -0400 (Wed, 09 Jul 2003) | 2 lines
+   - Removed some more code for the aborted attempt to make the module
+   1.6-compatible.
+   - Added requires for new extensions 'wordnet', 'linkparser', and 'infinitive'.
+   - Updated docs in the header, though they're not yet ready for release.
 
-- Moved into the en/ directory to separate language-specific tests from general tests.
 
-------------------------------------------------------------------------
-r6 | deveiant | 2003-07-09 12:15:20 -0400 (Wed, 09 Jul 2003) | 2 lines
+-- Thu, 11 Sep 2003 04:55:11 -0000 by deveiant (r37) -----
+   Changed: lib/linguistics.rb
 
-Fixed project-grokking expression
+   - Changed name of "inflector" class to "languageProxy" to better fit what it
+   does.
+   - Added support for transparent delegator proxy methods.
+   - Added support for MyClass::extend( Linguistics ) and class MyClass; include
+   Linguistics; end.
+   - Modified code in #loadLanguage to minimize the number of requires.
 
-------------------------------------------------------------------------
-r5 | deveiant | 2003-07-09 12:13:52 -0400 (Wed, 09 Jul 2003) | 2 lines
 
-Initial checkin.
+-- Thu, 11 Sep 2003 04:52:32 -0000 by deveiant (r36) -----
+   Changed: .irbrc
 
-------------------------------------------------------------------------
-r4 | deveiant | 2003-07-09 11:54:43 -0400 (Wed, 09 Jul 2003) | 2 lines
+   - Added :installProxy config to the #use call.
 
-Initial checkin
 
-------------------------------------------------------------------------
-r1 | deveiant | 2003-07-09 10:49:57 -0400 (Wed, 09 Jul 2003) | 2 lines
+-- Thu, 11 Sep 2003 04:52:03 -0000 by deveiant (r35) -----
+   Added:   experiments/wn-proglang.rb (new)
+            experiments/generalize.rb (new)
 
-Initial revision
+   Initial checkin.
 
-------------------------------------------------------------------------
+
+-- Thu, 11 Sep 2003 04:51:41 -0000 by deveiant (r34) -----
+   Changed: experiments/allobjlist.rb
+
+   - Added example output.
+
+
+-- Thu, 11 Sep 2003 04:51:26 -0000 by deveiant (r33) -----
+   Changed: docs/makedocs.rb
+
+   - Reworked to be more generically useful, and support parsing of options from
+   CATALOG file.
+
+
+-- Thu, 11 Sep 2003 04:50:49 -0000 by deveiant (r32) -----
+   Changed: docs/CATALOG
+
+   - Added rdoc-option header.
+
+
+-- Thu, 11 Sep 2003 04:50:13 -0000 by deveiant (r31) -----
+   Changed: utils.rb
+
+   - Brought up-to-date with canonical source.
+
+
+-- Thu, 11 Sep 2003 04:49:45 -0000 by deveiant (r30) -----
+   Changed: TODO
+
+   - Removed finished items.
+
+
+-- Thu, 11 Sep 2003 04:48:46 -0000 by deveiant (r29) -----
+   Changed: README
+
+   - Beginnings of update for new release. Still needs more work before release.
+
+
+-- Thu, 11 Sep 2003 04:48:06 -0000 by deveiant (r28) -----
+   Changed: MANIFEST
+
+   - Added ChangeLog.
+
+
+-- Thu, 11 Sep 2003 04:25:23 -0000 by deveiant (r27) -----
+   Added:   lib/linguistics/en/linkparser.rb (new)
+            lib/linguistics/en (new)
+            lib/linguistics/en/infinitive.rb (new)
+
+   Initial checkin.
+
+
+-- Wed, 10 Sep 2003 03:48:46 -0000 by deveiant (r26) -----
+   Added:   tests/en/wordnet.tests.rb (new)
+
+   Initial checkin.
+
+
+-- Tue, 09 Sep 2003 19:29:15 -0000 by stillflame (r25) -----
+   Added:   tests/en/linkparser.tests.rb (new)
+
+   initial import
+
+
+-- Tue, 26 Aug 2003 10:35:16 -0000 by deveiant (r24) -----
+   Added:   docs/.cvsignore (new)
+
+   Initial checkin.
+
+
+-- Fri, 11 Jul 2003 00:36:40 -0000 by deveiant (r23) -----
+   Changed: lib/linguistics/en.rb
+
+   - Added a Range#step 1.6 compat function.
+
+
+-- Fri, 11 Jul 2003 00:20:10 -0000 by deveiant (r22) -----
+   Changed: tests/use.tests.rb
+
+   - 1.6 fixes.
+
+
+-- Fri, 11 Jul 2003 00:13:54 -0000 by deveiant (r21) -----
+   Changed: lib/linguistics.rb
+
+   - More 1.6ish fixes.
+
+
+-- Thu, 10 Jul 2003 23:52:36 -0000 by deveiant (r20) -----
+   Changed: lib/linguistics/en.rb
+
+   Made module_methods out of the backend functions to support including linguistic methods again.
+
+
+-- Thu, 10 Jul 2003 23:45:26 -0000 by deveiant (r19) -----
+   Changed: lib/linguistics.rb
+
+   - Fixed use of Hash#merge! (1.8 feature)
+
+
+-- Thu, 10 Jul 2003 23:38:24 -0000 by deveiant (r18) -----
+   Changed: lib/linguistics/en.rb
+
+   - Fixed usage of Hash#merge (a 1.8 feature).
+
+
+-- Thu, 10 Jul 2003 00:00:00 -0000 by deveiant (r17) -----
+   Changed: tests/lingtestcase.rb
+
+   - Removed unneccessary require of test/unit/mock.
+
+
+-- Wed, 09 Jul 2003 23:24:42 -0000 by deveiant (r16) -----
+   Added:   MANIFEST (new)
+
+   Initial checkin.
+
+
+-- Wed, 09 Jul 2003 21:45:36 -0000 by deveiant (r15) -----
+   Added:   install.rb (new)
+
+   Initial checkin.
+
+
+-- Wed, 09 Jul 2003 20:39:59 -0000 by deveiant (r14) -----
+   Changed: docs/CATALOG
+
+   - Explicitly listed linguistics.rb so it gets documented first.
+
+
+-- Wed, 09 Jul 2003 20:39:25 -0000 by deveiant (r13) -----
+   Changed: utils.rb
+
+   - Commented out rdoc-selection code, as it doesn't work.
+
+
+-- Wed, 09 Jul 2003 20:38:14 -0000 by deveiant (r12) -----
+   Changed: README
+
+   - Fleshed out instructions for use and addition.
+
+
+-- Wed, 09 Jul 2003 20:37:06 -0000 by deveiant (r11) -----
+   Changed: tests/use.tests.rb
+            Artistic
+            lib/linguistics.rb
+
+   - RDoc fixes
+
+
+-- Wed, 09 Jul 2003 20:35:29 -0000 by deveiant (r10) -----
+   Changed: lib/linguistics/iso639.rb
+
+   - Made some RDoc fixes
+
+
+-- Wed, 09 Jul 2003 19:30:42 -0000 by deveiant (r9) -----
+   Changed: lib/linguistics.rb
+
+   - Added array-wrapping to allow single classes in the :classes config argument.
+   - Wrapped the code that adds the inflector method in a test for the method's existance to avoid constantly redefining it for classes which already have it.
+
+
+-- Wed, 09 Jul 2003 19:16:21 -0000 by deveiant (r8) -----
+   Changed: lib/linguistics/en.rb
+
+   - Moved Array extension to the bottom of the file to avoid confusion, and turned on :nodoc: for it.
+
+
+-- Wed, 09 Jul 2003 18:24:13 -0000 by deveiant (r7) -----
+   Deleted: tests/conjunction.tests.rb
+            tests/en_inflect.tests.rb
+
+   - Moved into the en/ directory to separate language-specific tests from general tests.
+
+
+-- Wed, 09 Jul 2003 16:15:20 -0000 by deveiant (r6) -----
+   Changed: makedist.rb
+
+   Fixed project-grokking expression
+
+
+-- Wed, 09 Jul 2003 16:13:52 -0000 by deveiant (r5) -----
+   Added:   docs/makedocs.rb (new)
+
+   Initial checkin.
+
+
+-- Wed, 09 Jul 2003 15:54:43 -0000 by deveiant (r4) -----
+   Added:   experiments/allobjlist.rb (new)
+            experiments/farmobjs.rb (new)
+
+   Initial checkin
+
+
+-- Wed, 09 Jul 2003 14:49:57 -0000 by deveiant (r1) -----
+   Added:   README (new)
+            tests/conjunction.tests.rb (new)
+            redist/hashslice.rb (new)
+            tests/en/conjunction.tests.rb (new)
+            /trunk (new)
+            tests/use.tests.rb (new) (and 24 other/s)
+
+   Initial revision
+
+
+Copyright (c) 2008, Michael Granger
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+  * Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+
+  * Neither the name of the author/s, nor the names of the project's
+    contributors may be used to endorse or promote products derived from this
+    software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Linguistics.tmproj

-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>currentDocument</key>
-	<string>tests/en/inflect.tests.rb</string>
-	<key>documents</key>
-	<array>
-		<dict>
-			<key>expanded</key>
-			<true/>
-			<key>name</key>
-			<string>Linguistics</string>
-			<key>regexFolderFilter</key>
-			<string>!.*/(\.(svn|DS_Store)|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
-			<key>sourceDirectory</key>
-			<string></string>
-		</dict>
-	</array>
-	<key>fileHierarchyDrawerWidth</key>
-	<integer>317</integer>
-	<key>metaData</key>
-	<dict>
-		<key>README</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>44</integer>
-				<key>line</key>
-				<integer>34</integer>
-			</dict>
-			<key>columnSelection</key>
-			<false/>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>23</integer>
-			<key>selectFrom</key>
-			<dict>
-				<key>column</key>
-				<integer>17</integer>
-				<key>line</key>
-				<integer>32</integer>
-			</dict>
-			<key>selectTo</key>
-			<dict>
-				<key>column</key>
-				<integer>44</integer>
-				<key>line</key>
-				<integer>34</integer>
-			</dict>
-		</dict>
-		<key>examples/generalize_sentence.rb</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>9</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>experiments/farmobjs.rb</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>lib/linguistics/en/linkparser.rb</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>0</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>tests/en/inflect.tests.rb</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>20</integer>
-				<key>line</key>
-				<integer>372</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>276</integer>
-		</dict>
-		<key>tests/en/linkparser.tests.rb</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>0</integer>
-				<key>line</key>
-				<integer>30</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>0</integer>
-		</dict>
-		<key>tests/en/lprintf.tests.rb</key>
-		<dict>
-			<key>caret</key>
-			<dict>
-				<key>column</key>
-				<integer>44</integer>
-				<key>line</key>
-				<integer>73</integer>
-			</dict>
-			<key>firstVisibleColumn</key>
-			<integer>0</integer>
-			<key>firstVisibleLine</key>
-			<integer>19</integer>
-		</dict>
-	</dict>
-	<key>openDocuments</key>
-	<array>
-		<string>tests/en/inflect.tests.rb</string>
-	</array>
-	<key>showFileHierarchyDrawer</key>
-	<true/>
-	<key>treeState</key>
-	<dict>
-		<key>Linguistics</key>
-		<dict>
-			<key>isExpanded</key>
-			<true/>
-			<key>subItems</key>
-			<dict>
-				<key>lib</key>
-				<dict>
-					<key>isExpanded</key>
-					<true/>
-					<key>subItems</key>
-					<dict>
-						<key>linguistics</key>
-						<dict>
-							<key>isExpanded</key>
-							<true/>
-							<key>subItems</key>
-							<dict>
-								<key>en</key>
-								<dict>
-									<key>isExpanded</key>
-									<true/>
-									<key>subItems</key>
-									<dict/>
-								</dict>
-							</dict>
-						</dict>
-					</dict>
-				</dict>
-				<key>spec</key>
-				<dict>
-					<key>isExpanded</key>
-					<true/>
-					<key>subItems</key>
-					<dict>
-						<key>linguistics</key>
-						<dict>
-							<key>isExpanded</key>
-							<true/>
-							<key>subItems</key>
-							<dict/>
-						</dict>
-					</dict>
-				</dict>
-				<key>tests</key>
-				<dict>
-					<key>isExpanded</key>
-					<true/>
-					<key>subItems</key>
-					<dict>
-						<key>en</key>
-						<dict>
-							<key>isExpanded</key>
-							<true/>
-							<key>subItems</key>
-							<dict/>
-						</dict>
-					</dict>
-				</dict>
-			</dict>
-		</dict>
-	</dict>
-	<key>windowFrame</key>
-	<string>{{302, 63}, {837, 965}}</string>
-</dict>
-</plist>

MANIFEST

-Artistic
-experiments/randobjlist.rb
-install.rb
-lib/linguistics/en.rb
-lib/linguistics/iso639.rb
-lib/linguistics.rb
-lib/linguistics/**/*.rb
-MANIFEST
-README
-README.english
-redist/*.rb
-test.rb
-tests/en/conjunction.tests.rb
-tests/en/inflect.tests.rb
-tests/lingtestcase.rb
-tests/use.tests.rb
-TODO
-utils.rb
-ChangeLog
 
 == Requirements
 
-* Ruby >= 1.8.4
+* Ruby >= 1.8.6
 
 
 == Optional
 
-* Ruby-WordNet (>= 0.02) - adds integration for the Ruby binding for the WordNet� lexical
-  reference system.
+* Ruby-WordNet (>= 0.0.5) - adds integration for the Ruby binding for the
+  WordNet� lexical refrence system.
 
   URL: http://deveiate.org/projects/Ruby-WordNet
-  Download: http://deveiate.org/code/Ruby-WordNet-0.02.tar.gz
 
-* LinkParser (>= 0.0.4) - adds integration for the Ruby Link Grammar Parser by
+* LinkParser (>= 1.0.2) - adds integration for the Ruby Link Grammar Parser by
   Martin Chase.
 
   URL: http://dev.faeriemud.org/~stillflame/linkparse.html
 
 == General Information
 
-This module is a framework for building linguistic utilities for Ruby objects
+Linguistics is a framework for building linguistic utilities for Ruby objects
 in any language. It includes a generic language-independant front end, a
 module for mapping language codes into language names, and a module which
 contains various English-language utilities.
 MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 
 
- $Id: README,v 1.6 2003/10/09 13:21:48 deveiant Exp $
+ $Id$
 
 
 #!rake
 #
-# Ruby Linguistics library rakefile
+# Linguistics rakefile
 #
-# Copyright (c) 2008, The FaerieMUD Consortium
+# Based on various other Rakefiles, especially one by Ben Bleything
+#
+# Copyright (c) 2008 The FaerieMUD Consortium
 #
 # Authors:
-# * Michael Granger <mgranger@laika.com>
+#  * Michael Granger <ged@FaerieMUD.org>
 #
 
 BEGIN {
 	require 'pathname'
 	basedir = Pathname.new( __FILE__ ).dirname
-	libdir = basedir + 'lib'
-	docsdir = basedir + 'docs'
+
+	libdir = basedir + "lib"
+	extdir = basedir + "ext"
 
 	$LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
-	$LOAD_PATH.unshift( docsdir.to_s ) unless $LOAD_PATH.include?( docsdir.to_s )
+	$LOAD_PATH.unshift( extdir.to_s ) unless $LOAD_PATH.include?( extdir.to_s )
 }
 
 
 require 'rubygems'
 require 'rake'
 require 'rake/rdoctask'
+require 'rake/testtask'
 require 'rake/packagetask'
-require 'rake/gempackagetask'
-require 'pathname'
+require 'rake/clean'
 
-include Config
 $dryrun = false
 
-# Pathname constants
-BASEDIR       = Pathname.new( __FILE__ ).dirname.expand_path
+### Config constants
+BASEDIR       = Pathname.new( __FILE__ ).dirname.relative_path_from( Pathname.getwd )
+BINDIR        = BASEDIR + 'bin'
 LIBDIR        = BASEDIR + 'lib'
+EXTDIR        = BASEDIR + 'ext'
 DOCSDIR       = BASEDIR + 'docs'
-MISCDIR       = BASEDIR + 'misc'
-RDOCDIR       = DOCSDIR + 'rdoc'
 PKGDIR        = BASEDIR + 'pkg'
-ARTIFACTS_DIR = Pathname.new( ENV['CC_BUILD_ARTIFACTS'] || '' )
 
-TEXT_FILES    = %w( Rakefile README README.english Artistic ).
-	collect {|filename| BASEDIR + filename }
+PROJECT_NAME  = 'Linguistics'
+PKG_NAME      = PROJECT_NAME.downcase
+PKG_SUMMARY   = 'a framework for building linguistic utilities for Ruby objects'
+VERSION_FILE  = LIBDIR + 'linguistics.rb'
+PKG_VERSION   = VERSION_FILE.read[ /VERSION = '(\d+\.\d+\.\d+)'/, 1 ]
+PKG_FILE_NAME = "#{PKG_NAME.downcase}-#{PKG_VERSION}"
+GEM_FILE_NAME = "#{PKG_FILE_NAME}.gem"
+
+ARTIFACTS_DIR = Pathname.new( ENV['CC_BUILD_ARTIFACTS'] || 'artifacts' )
+
+TEXT_FILES    = %w( Rakefile ChangeLog README LICENSE ).collect {|filename| BASEDIR + filename }
+BIN_FILES     = Pathname.glob( BINDIR + '*' ).delete_if {|item| item =~ /\.svn/ }
+LIB_FILES     = Pathname.glob( LIBDIR + '**/*.rb' ).delete_if {|item| item =~ /\.svn/ }
+EXT_FILES     = Pathname.glob( EXTDIR + '**/*.{c,h,rb}' ).delete_if {|item| item =~ /\.svn/ }
 
 SPECDIR       = BASEDIR + 'spec'
-SPEC_FILES    = Pathname.glob( SPECDIR + '**/*_spec.rb' ).
-	delete_if {|item| item =~ /\.svn/ }
-SPEC_EXCLUDES = 'spec,monkeypatches,/Library/Ruby'
+SPECLIBDIR    = SPECDIR + 'lib'
+SPEC_FILES    = Pathname.glob( SPECDIR + '**/*_spec.rb' ).delete_if {|item| item =~ /\.svn/ } +
+                Pathname.glob( SPECLIBDIR + '**/*.rb' ).delete_if {|item| item =~ /\.svn/ }
 
-LIB_FILES     = Pathname.glob( LIBDIR + '**/*.rb').
-	delete_if {|item| item =~ /\.svn/ }
+TESTDIR       = BASEDIR + 'tests'
+TEST_FILES    = Pathname.glob( TESTDIR + '**/*.tests.rb' ).delete_if {|item| item =~ /\.svn/ }
 
-RELEASE_FILES = TEXT_FILES + LIB_FILES + SPEC_FILES
+RAKE_TASKDIR  = BASEDIR + 'rake'
+RAKE_TASKLIBS = Pathname.glob( RAKE_TASKDIR + '*.rb' )
 
+LOCAL_RAKEFILE = BASEDIR + 'Rakefile.local'
 
-### Rake helper functions
-require MISCDIR + 'rake/helpers'
+EXTRA_PKGFILES = []
+EXTRA_PKGFILES.concat Pathname.glob( BASEDIR + 'examples/*.rb' ).delete_if {|item| item =~ /\.svn/ } 
+EXTRA_PKGFILES.concat Pathname.glob( BASEDIR + 'README.english' ).delete_if {|item| item =~ /\.svn/ } 
 
-### Package constants
-PKG_NAME      = 'linguistics'
-PKG_VERSION   = find_pattern_in_file( /VERSION = '(\d+\.\d+\.\d+)'/, LIBDIR + 'linguistics.rb' ).first
-PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
+RELEASE_FILES = TEXT_FILES + 
+	SPEC_FILES + 
+	TEST_FILES + 
+	BIN_FILES +
+	LIB_FILES + 
+	EXT_FILES + 
+	RAKE_TASKLIBS +
+	EXTRA_PKGFILES
 
-RELEASE_NAME  = "REL #{PKG_VERSION}"
+RELEASE_FILES << LOCAL_RAKEFILE if LOCAL_RAKEFILE.exist?
 
-# Load task plugins
-RAKE_TASKDIR = MISCDIR + 'rake'
-Pathname.glob( RAKE_TASKDIR + '*.rb' ).each do |tasklib|
-	next if tasklib =~ %r{/helpers.rb$}
-	require tasklib
-end
+COVERAGE_MINIMUM = ENV['COVERAGE_MINIMUM'] ? Float( ENV['COVERAGE_MINIMUM'] ) : 85.0
+RCOV_EXCLUDES = 'spec,tests,/Library/Ruby,/var/lib,/usr/local/lib'
+RCOV_OPTS = [
+	'--exclude', RCOV_EXCLUDES,
+	'--xrefs',
+	'--save',
+	'--callsites',
+	#'--aggregate', 'coverage.data' # <- doesn't work as of 0.8.1.2.0
+  ]
 
-if Rake.application.options.trace
-	$trace = true
-	log "$trace is enabled"
-end
 
-if Rake.application.options.dryrun
-	$dryrun = true
-	log "$dryrun is enabled"
-	Rake.application.options.dryrun = false
-end
+# Subversion constants -- directory names for releases and tags
+SVN_TRUNK_DIR    = 'trunk'
+SVN_RELEASES_DIR = 'releases'
+SVN_BRANCHES_DIR = 'branches'
+SVN_TAGS_DIR     = 'tags'
 
-### Default task
-task :default  => [:clean, :spec, :verify, :package]
+SVN_DOTDIR       = BASEDIR + '.svn'
+SVN_ENTRIES      = SVN_DOTDIR + 'entries'
 
 
-### Task: clean
-desc "Clean pkg, coverage, and rdoc; remove .bak files"
-task :clean => [ :clobber_rdoc, :clobber_package, :clobber_coverage ] do
-	files = FileList['**/*.bak']
-	files.clear_exclude
-	File.rm( files ) unless files.empty?
-	FileUtils.rm_rf( 'artifacts' )
-end
+### Load some task libraries that need to be loaded early
+require RAKE_TASKDIR + 'helpers.rb'
+require RAKE_TASKDIR + 'svn.rb'
+require RAKE_TASKDIR + 'verifytask.rb'
 
+# Define some constants that depend on the 'svn' tasklib
+PKG_BUILD = get_svn_rev( BASEDIR ) || 0
+SNAPSHOT_PKG_NAME = "#{PKG_FILE_NAME}.#{PKG_BUILD}"
+SNAPSHOT_GEM_NAME = "#{SNAPSHOT_PKG_NAME}.gem"
 
-### Task: docs -- Convenience task for rebuilding dynamic docs
-task :docs => [ :coverage, :rdoc ]
+# Documentation constants
+RDOCDIR = DOCSDIR + 'api'
+RDOC_OPTIONS = [
+	'-w', '4',
+	'-SHN',
+	'-i', '.',
+	'-m', 'README',
+	'-W', 'http://deveiate.org/projects/Linguistics//browser/trunk/'
+  ]
 
+# Release constants
+SMTP_HOST = 'mail.faeriemud.org'
+SMTP_PORT = 465 # SMTP + SSL
 
-### Task: rdoc
-Rake::RDocTask.new do |rdoc|
-	rdoc.rdoc_dir = 'docs/api'
-	rdoc.title    = "Linguistics - a natural language framework for Ruby"
+# Project constants
+PROJECT_HOST = 'deveiate.org'
+PROJECT_PUBDIR = "/usr/local/www/public/code"
+PROJECT_DOCDIR = "#{PROJECT_PUBDIR}/#{PKG_NAME}"
+PROJECT_SCPPUBURL = "#{PROJECT_HOST}:#{PROJECT_PUBDIR}"
+PROJECT_SCPDOCURL = "#{PROJECT_HOST}:#{PROJECT_DOCDIR}"
 
-	rdoc.options += [
-		'-w', '4',
-		'-SHN',
-		'-i', 'docs',
-		'-f', 'darkfish',
-		'-m', 'README',
-		'-W', 'http://deveiate.org/projects/linguistics/trunk/'
-	  ]
-	
-	rdoc.rdoc_files.include TEXT_FILES.collect {|f| f.relative_path_from(BASEDIR).to_s }
-	rdoc.rdoc_files.include LIB_FILES.collect {|f| f.relative_path_from(BASEDIR).to_s }
-end
+# Rubyforge stuff
+RUBYFORGE_GROUP = 'deveiate'
+RUBYFORGE_PROJECT = 'linguistics'
 
+# Gem dependencies: gemname => version
+DEPENDENCIES = {
+}
 
-### Task: gem
-gemspec = Gem::Specification.new do |gem|
-	pkg_build = get_svn_rev( BASEDIR ) || 0
-	
-	gem.name    	= PKG_NAME
-	gem.version 	= "%s.%s" % [ PKG_VERSION, pkg_build ]
+# Developer Gem dependencies: gemname => version
+DEVELOPMENT_DEPENDENCIES = {
+	'amatch'      => '>= 0.2.3',
+	'rake'        => '>= 0.8.1',
+	'rcodetools'  => '>= 0.7.0.0',
+	'rcov'        => '>= 0',
+	'RedCloth'    => '>= 4.0.3',
+	'rspec'       => '>= 0',
+	'rubyforge'   => '>= 0',
+	'termios'     => '>= 0',
+	'text-format' => '>= 1.0.0',
+	'tmail'       => '>= 1.2.3.1',
+	'ultraviolet' => '>= 0.10.2',
+	'libxml-ruby' => '>= 0.8.3',
+	'wordnet' => '>=1.0.5',
+	'linkparser' => '>=1.0.2',
+}
 
-	gem.summary     = "A generic, language-neutral framework for extending Ruby " +
-	        "objects with linguistic methods."
-	gem.description = <<-EOD
-	:TODO: Finish writing this description.
-	ThingFish is a highly-accessable network datastore. And it needs more description.
+# Non-gem requirements: packagename => version
+REQUIREMENTS = {
+}
+
+# RubyGem specification
+GEMSPEC   = Gem::Specification.new do |gem|
+	gem.name              = PKG_NAME.downcase
+	gem.version           = PKG_VERSION
+
+	gem.summary           = PKG_SUMMARY
+	gem.description       = <<-EOD
+	in any language. It includes a generic language-independant front end, a
+	module for mapping language codes into language names, and a module which
+	contains various English-language utilities.
 	EOD
 
-	gem.authors  	= "Michael Granger, Martin Chase"
-	gem.email       = "ged@FaerieMUD.org, stillflame@FaerieMUD.org"
-	gem.homepage 	= "http://deveiate.org/projects/Linguistics/"
+	gem.authors           = 'Michael Granger'
+	gem.email             = 'ged@FaerieMUD.org'
+	gem.homepage          = 'http://deveiate.org/projects/Linguistics/'
+	gem.rubyforge_project = RUBYFORGE_PROJECT
 
-	gem.has_rdoc 	= true
+	gem.has_rdoc          = true
+	gem.rdoc_options      = RDOC_OPTIONS
 
-	gem.files      	= RELEASE_FILES.
+	gem.bindir            = BINDIR.relative_path_from(BASEDIR).to_s
+	
+
+	gem.files             = RELEASE_FILES.
 		collect {|f| f.relative_path_from(BASEDIR).to_s }
-	gem.test_files 	= SPEC_FILES.
+	gem.test_files        = SPEC_FILES.
 		collect {|f| f.relative_path_from(BASEDIR).to_s }
-end
-Rake::GemPackageTask.new( gemspec ) do |task|
-	task.gem_spec = gemspec
-	task.need_tar = false
-	task.need_tar_gz = true
-	task.need_tar_bz2 = true
-	task.need_zip = true
-end
-
-
-### Task: install
-desc "Install Linguistics as a conventional library"
-task :install do
-	log "Installing Linguistics as a convention library"
-	sitelib = Pathname.new( CONFIG['sitelibdir'] )
-	Dir.chdir( LIBDIR ) do
-		LIB_FILES.each do |libfile|
-			relpath = libfile.relative_path_from( LIBDIR )
-			target = sitelib + relpath
-			FileUtils.mkpath target.dirname,
-				:mode => 0755, :verbose => true, :noop => $dryrun unless target.dirname.directory?
-			FileUtils.install relpath, target,
-				:mode => 0644, :verbose => true, :noop => $dryrun
-		end
+		
+	DEPENDENCIES.each do |name, version|
+		version = '>= 0' if version.length.zero?
+		gem.add_runtime_dependency( name, version )
+	end
+	
+	DEVELOPMENT_DEPENDENCIES.each do |name, version|
+		version = '>= 0' if version.length.zero?
+		gem.add_development_dependency( name, version )
+	end
+	
+	REQUIREMENTS.each do |name, version|
+		gem.requirements << [ name, version ].compact.join(' ')
 	end
 end
 
-### Task: install_gem
-desc "Install Linguistics as a gem"
-task :install_gem => [:package] do
-	installer = Gem::Installer.new( %{pkg/#{PKG_FILE_NAME}.gem} )
-	installer.install
+# Manual-generation config
+MANUALDIR = DOCSDIR + 'manual'
+
+$trace = Rake.application.options.trace ? true : false
+$dryrun = Rake.application.options.dryrun ? true : false
+
+
+# Load any remaining task libraries
+RAKE_TASKLIBS.each do |tasklib|
+	next if tasklib =~ %r{/(helpers|svn|verifytask)\.rb$}
+	begin
+		require tasklib
+	rescue ScriptError => err
+		fail "Task library '%s' failed to load: %s: %s" %
+			[ tasklib, err.class.name, err.message ]
+		trace "Backtrace: \n  " + err.backtrace.join( "\n  " )
+	rescue => err
+		log "Task library '%s' failed to load: %s: %s. Some tasks may not be available." %
+			[ tasklib, err.class.name, err.message ]
+		trace "Backtrace: \n  " + err.backtrace.join( "\n  " )
+	end
 end
 
-desc "Uninstall Linguistics if it's been installed as a conventional library"
-task :uninstall do
-	log "Uninstalling conventionally-installed Linguistics library files"
-	sitelib = Pathname.new( CONFIG['sitelibdir'] )
-	dir = sitelib + 'linguistics'
-	FileUtils.rm_rf( dir, :verbose => true, :noop => $dryrun )
-	lib = sitelib + 'linguistics.rb'
-	FileUtils.rm( lib, :verbose => true, :noop => $dryrun )
+# Load any project-specific rules defined in 'Rakefile.local' if it exists
+import LOCAL_RAKEFILE if LOCAL_RAKEFILE.exist?
+
+
+#####################################################################
+###	T A S K S 	
+#####################################################################
+
+### Default task
+task :default  => [:clean, :local, :spec, :rdoc, :package]
+
+### Task the local Rakefile can append to -- no-op by default
+task :local
+
+
+### Task: clean
+CLEAN.include 'coverage'
+CLOBBER.include 'artifacts', 'coverage.info', PKGDIR
+
+# Target to hinge on ChangeLog updates
+file SVN_ENTRIES
+
+### Task: changelog
+file 'ChangeLog' => SVN_ENTRIES.to_s do |task|
+	log "Updating #{task.name}"
+
+	changelog = make_svn_changelog()
+	File.open( task.name, 'w' ) do |fh|
+		fh.print( changelog )
+	end
 end
 
-### Task: uninstall_gem
-task :uninstall_gem => [:clean] do
-	uninstaller = Gem::Uninstaller.new( PKG_FILE_NAME )
-	uninstaller.uninstall
-end
 
-
-
-### Cruisecontrol task
+### Task: cruise (Cruisecontrol task)
 desc "Cruisecontrol build"
-task :cruise => [:clean, :coverage, :package] do |task|
+task :cruise => [:clean, :spec, :package] do |task|
 	raise "Artifacts dir not set." if ARTIFACTS_DIR.to_s.empty?
 	artifact_dir = ARTIFACTS_DIR.cleanpath
 	artifact_dir.mkpath
 	
-	$stderr.puts "Copying coverage stats..."
-	FileUtils.cp_r( 'coverage', artifact_dir )
+	coverage = BASEDIR + 'coverage'
+	if coverage.exist? && coverage.directory?
+		$stderr.puts "Copying coverage stats..."
+		FileUtils.cp_r( 'coverage', artifact_dir )
+	end
 	
 	$stderr.puts "Copying packages..."
 	FileUtils.cp_r( FileList['pkg/*'].to_a, artifact_dir )
 end
 
 
-### RSpec tasks
-begin
-	gem 'rspec', '>= 1.1.1'
-	require 'spec/rake/spectask'
-
-	COMMON_SPEC_OPTS = ['-c', '-f', 's']
-
-	### Task: spec
-	Spec::Rake::SpecTask.new( :spec ) do |task|
-		task.spec_files = SPEC_FILES
-		task.libs += [LIBDIR]
-		task.spec_opts = COMMON_SPEC_OPTS
-	end
-	task :test => [:spec]
-
-
-	namespace :spec do
-		desc "Run rspec every time there's a change to one of the files"
-        task :autotest do
-            require 'autotest/rspec'
-            autotester = Autotest::Rspec.new
-
-			autotester.exceptions = %r{\.svn|\.skel}
-            autotester.run
-        end
-
-	
-		desc "Generate HTML output for a spec run"
-		Spec::Rake::SpecTask.new( :html ) do |task|
-			task.spec_files = SPEC_FILES
-			task.spec_opts = ['-f','h', '-D']
-		end
-
-		desc "Generate plain-text output for a CruiseControl.rb build"
-		Spec::Rake::SpecTask.new( :text ) do |task|
-			task.spec_files = SPEC_FILES
-			task.spec_opts = ['-f','p']
-		end
-	end
-rescue LoadError => err
-	task :no_rspec do
-		$stderr.puts "Testing tasks not defined: RSpec rake tasklib not available: %s" %
-			[ err.message ]
-	end
-	
-	task :spec => :no_rspec
-	namespace :spec do
-		task :autotest => :no_rspec
-		task :html => :no_rspec
-		task :text => :no_rspec
-	end
+desc "Update the build system to the latest version"
+task :update_build do
+	log "Updating the build system"
+	sh 'svn', 'up', RAKE_TASKDIR
+	log "Updating the Rakefile"
+	sh 'rake', '-f', RAKE_TASKDIR + 'Metarakefile'
 end
 
-
-### RCov (via RSpec) tasks
-begin
-	gem 'rcov'
-	gem 'rspec', '>= 1.1.1'
-
-	COVERAGE_TARGETDIR = BASEDIR + 'coverage'
-
-	RCOV_OPTS = ['--exclude', SPEC_EXCLUDES, '--xrefs', '--save']
-
-	### Task: coverage (via RCov)
-	### Task: spec
-	desc "Build test coverage reports"
-	Spec::Rake::SpecTask.new( :coverage ) do |task|
-		task.spec_files = SPEC_FILES
-		task.libs += LIB_FILES
-		task.spec_opts = ['-f', 'p', '-b']
-		task.rcov_opts = RCOV_OPTS
-		task.rcov = true
-	end
-	task :coverage do
-		rmtree( COVERAGE_TARGETDIR )
-		cp_r( 'coverage', COVERAGE_TARGETDIR, :verbose => true )
-	end
-	
-	task :rcov => [:coverage] do; end
-	
-	### Other coverage tasks
-	namespace :coverage do
-		desc "Generate a detailed text coverage report"
-		Spec::Rake::SpecTask.new( :text ) do |task|
-			task.spec_files = SPEC_FILES
-			task.libs += FileList['plugins/**/lib']
-			task.rcov_opts = RCOV_OPTS + ['--text-report']
-			task.rcov = true
-		end
-
-		desc "Show differences in coverage from last run"
-		Spec::Rake::SpecTask.new( :diff ) do |task|
-			task.spec_files = SPEC_FILES
-			task.libs += FileList['plugins/**/lib']
-			task.rcov_opts = ['--text-coverage-diff']
-			task.rcov = true
-		end
-
-		### Task: verify coverage
-		desc "Build coverage statistics"
-		VerifyTask.new( :verify => :rcov ) do |task|
-			task.threshold = 85.0
-		end
-		
-		desc "Run RCov in 'spec-only' mode to check coverage from specs"
-		Spec::Rake::SpecTask.new( :speconly ) do |task|
-			task.spec_files = SPEC_FILES
-			task.libs += FileList['plugins/**/lib']
-			task.rcov_opts = ['--exclude', SPEC_EXCLUDES, '--text-report', '--save']
-			task.rcov = true
-		end
-	end
-
-	task :clobber_coverage do
-		rmtree( COVERAGE_TARGETDIR )
-	end
-
-rescue LoadError => err
-	task :no_rcov do
-		$stderr.puts "Coverage tasks not defined: RSpec+RCov tasklib not available: %s" %
-			[ err.message ]
-	end
-
-	task :coverage => :no_rcov
-	task :clobber_coverage
-	task :rcov => :no_rcov
-	namespace :coverage do
-		task :text => :no_rcov
-		task :diff => :no_rcov
-	end
-	task :verify => :no_rcov
-end
-
-
-
-### Coding style checks and fixes
-namespace :style do
-	
-	BLANK_LINE = /^\s*$/
-	GOOD_INDENT = /^(\t\s*)?\S/
-
-	# A list of the files that have legitimate leading whitespace, etc.
-	PROBLEM_FILES = [ SPECDIR + 'config_spec.rb' ]
-	
-	desc "Check source files for inconsistent indent and fix them"
-	task :fix_indent do
-		files = LIB_FILES + SPEC_FILES
-
-		badfiles = Hash.new {|h,k| h[k] = [] }
-		
-		trace "Checking files for indentation"
-		files.each do |file|
-			if PROBLEM_FILES.include?( file )
-				trace "  skipping problem file #{file}..."
-				next
-			end
-			
-			trace "  #{file}"
-			linecount = 0
-			file.each_line do |line|
-				linecount += 1
-				
-				# Skip blank lines
-				next if line =~ BLANK_LINE
-				
-				# If there's a line with incorrect indent, note it and skip to the 
-				# next file
-				if line !~ GOOD_INDENT
-					trace "    Bad line %d: %p" % [ linecount, line ]
-					badfiles[file] << [ linecount, line ]
-				end
-			end
-		end
-
-		if badfiles.empty?
-			log "No indentation problems found."
-		else
-			log "Found incorrect indent in #{badfiles.length} files:\n  "
-			badfiles.each do |file, badlines|
-				log "  #{file}:\n" +
-					"    " + badlines.collect {|badline| "%5d: %p" % badline }.join( "\n    " )
-			end
-		end
-	end
-
-end
-
-

TODO

-
-= Linguistics Module To-Do List
-
-* Add missing Lingua::EN::Inflect features:
-  * Number-insensitive Equality methods, e.g., +PL_eq()+, +PL_N_eq()+, etc.
-  * String iterpolation methods? This can already be done via things like +"The
-    #{'cat'.en.no(catCount)} in the hat."+, but it might be nice to have some
-    more convenient notation and an #interpolate method.
-  * User-defined inflections
-
-* Ask the stemmable.rb authors if they'd let me put it into the en.rb module.
-
-* Port more Perl modules:
-  * Lingua::Phonology?
-  * Others?
-
-

docs/.cvsignore

-html

docs/CATALOG

-#
-# Title:  Ruby Linguistics Module
-# Main:   README
-# Upload: ssh://yhaliwell/usr/local/www/devEiate.org/public/code/Linguistics/
-# Webcvs: http://deveiate.org/projects/Linguistics/browser/trunk
-#
-lib/linguistics.rb
-lib/**/*.rb
-README
-README.english
-TODO
-ChangeLog

docs/makedocs.rb

-#!/usr/bin/ruby
-#
-#	RDoc Documentation Generation Script
-#	$Id$
-#
-#	Copyright (c) 2001-2005 The FaerieMUD Consortium.
-#
-#	This is free software. You may use, modify, and/or redistribute this
-#	software under the terms of the Perl Artistic License. (See
-#	http://language.perl.com/misc/Artistic.html)
-#
-
-# Make sure we're in the correct directory, and if not, change there.
-BEGIN {
-	basedir = File::dirname(File::dirname( File::expand_path(__FILE__) ))
-	unless Dir::pwd == basedir
-		Dir::chdir( basedir ) 
-	end
-	$LOAD_PATH.unshift basedir
-}
-
-# Load modules
-require 'optparse'
-require 'rdoc/rdoc'
-require 'utils'
-include UtilityFunctions
-
-def makeDocs( docsdir, template='html', diagrams=false, upload=nil, ridocs=false )
-	debug_msg "docsdir = %p, template = %p, diagrams = %p, upload = %p, ridocs = %p" %
-		[docsdir, template, diagrams, upload, ridocs]
-
-	title = findRdocTitle()
-	docs = findRdocableFiles()
-	main = findRdocMain()
-	webcvs = findRdocCvsURL()
-
-
-	flags = [
-		'--all',
-		'--inline-source',
-		'--fmt', 'html',
-		'--include', 'docs',
-		'--template', template,
-		'--op', docsdir,
-		'--title', title,
-		'--tab-width', 4,
-	]
-
-	flags += [ '--quiet' ] unless $VERBOSE
-	flags += [ '--diagram' ] if diagrams
-	flags += [ '--main', main ] if main
-	flags += [ '--webcvs', webcvs ] if webcvs
-
-	if ridocs
-		header "Will create/install 'ri' source" if ridocs
-		buildRi( docs )
-	else
-		header "Making documentation in #{docsdir}."
-		header "Will upload to '#{upload}'\n" if upload
-		buildDocs( flags, docs )
-		uploadDocs( upload, docsdir ) if upload
-	end
-end
-
-
-def buildDocs( flags, docs )
-	message "Running 'rdoc #{flags.join(' ')} #{docs.join(' ')}'\n" if $VERBOSE
-	unless $DEBUG
-		begin
-			r = RDoc::RDoc.new
-			r.document( flags + docs )
-		rescue RDoc::RDocError => e
-			$stderr.puts e.message
-			exit(1)
-		end
-	end
-end
-
-
-def uploadDocs( url, docsdir )
-	header "Uploading new docs snapshot to #{url}."
-
-	case url
-	
-	# SSH target
-	when %r{^ssh://(.*)}
-		target = $1
-		if target =~ %r{^([^/]+)/(.*)}
-			host, path = $1, $2
-			path = "/" + path unless path =~ /^(\/|\.)/
-			cmd = "tar -C #{docsdir} -cf - . | ssh #{host} 'tar -C #{path} -xvf -'"
-			unless $DEBUG
-				system( cmd )
-			else
-				message "Would have uploaded using the command:\n    #{cmd}\n\n"
-			end
-		else
-			abort "--upload ssh://host/path"
-		end
-	when %r{^file://(.*)}
-		targetdir = $1
-		targetdir.gsub!( %r{^file://}, '' )
-
-		File.makedirs targetdir, true
-		Dir["#{docsdir}/**/*"].each {|file|
-			fname = file.gsub( %r:#{docsdir}/:, '' )
-			if File.directory? file
-				unless $DEBUG
-					File.makedirs File.join(targetdir, fname), true
-				else
-					message %{File.makedirs %s, true\n} % File.join(targetdir, fname)
-				end
-			else
-				unless $DEBUG
-					File.install( file, File.join(targetdir, fname), 0444, true )
-				else
-					message %{File.install( %s, %s, 0444, true )\n} % [
-						file,
-						File.join(targetdir, fname),
-					]
-				end
-			end
-		}
-
-	else
-		raise "I don't know how to upload to urls like '#{url}'."
-	end
-end
-
-def buildRi( docs )
-	message "Running 'rdoc -R #{docs.join(' ')}'\n" if $VERBOSE
-	unless $DEBUG
-		begin
-			r = RDoc::RDoc.new
-			r.document( ['-R'] + docs )
-		rescue RDoc::RDocError => e
-			$stderr.puts e.message
-			exit(1)
-		end
-	end
-	
-end
-
-
-if $0 == __FILE__
-	upload = nil
-	diagrams = false
-	template = 'html'
-	docsdir = "docs/html"
-	rimode = false
-	
-
-	# Read command-line options
-	ARGV.options do |oparser|
-		oparser.banner = "Usage: #$0 [options]\n"
-
-		oparser.separator "RDoc options:"
-		oparser.on( "--diagrams", "-d", TrueClass, "Generate diagrams" ) do
-			diagrams = true
-		end
-
-		oparser.on( "--output=DIR", "-o=DIR", String, "Set the output directory" ) do |val|
-			docsdir = val
-		end
-
- 		oparser.on( "--ri", "-R", TrueClass, "Generate content for 'ri' instead of HTML" ) do
- 			rimode = true
-		end
-
-		oparser.separator ""
-		oparser.separator "Post-generation options:"
-
-		oparser.on( "--upload=[URI]", "-u=[URI]", String, "Upload to the given URI" ) do |val|
-			upload = val
-			upload = findRdocUpload() if val.nil? || val.empty?
-		end
-
-		oparser.separator ""
-		oparser.separator "Output options:"
-
-		oparser.on( "--debug", "-d", TrueClass, "Output debugging information" ) do
-			$VERBOSE = true
-			debug_msg "Turned debugging on."
-		end
-
-		oparser.on( "--verbose", "-v", TrueClass, "Make progress verbose" ) do
-			$VERBOSE = true
-			debug_msg "Turned verbose on."
-		end
-
-		# Handle the 'help' option
-		oparser.on( "--help", "-h", "Display this text." ) do
-			$stderr.puts oparser
-			exit!(0)
-		end
-
-		oparser.parse!
-	end
-
-	makeDocs( docsdir, template, diagrams, upload, rimode )
-end

install.rb

-#!/usr/bin/ruby
-#
-#	Module Install Script
-#	$Id: install.rb 11 2005-08-07 03:30:22Z ged $
-#
-#	Thanks to Masatoshi SEKI for ideas found in his install.rb.
-#
-#	Copyright (c) 2001-2005 The FaerieMUD Consortium.
-#
-#	This is free software. You may use, modify, and/or redistribute this
-#	software under the terms of the Perl Artistic License. (See
-#	http://language.perl.com/misc/Artistic.html)
-#
-
-require './utils.rb'
-include UtilityFunctions
-
-require 'rbconfig'
-include Config
-
-require 'find'
-require 'ftools'
-require 'optparse'
-
-$version	= %q$Revision: 11 $
-$rcsId		= %q$Id: install.rb 11 2005-08-07 03:30:22Z ged $
-
-# Define required libraries
-RequiredLibraries = [
-	# libraryname, nice name, RAA URL, Download URL, e.g.,
-	#[ 'strscan', "Strscan", 
-	#	'http://www.ruby-lang.org/en/raa-list.rhtml?name=strscan',
-	#	'http://i.loveruby.net/archive/strscan/strscan-0.6.7.tar.gz',
-	#],
-]
-
-class Installer
-
-	@@PrunePatterns = [
-		/CVS/,
-		/~$/,
-		%r:(^|/)\.:,
-		/\.tpl$/,
-	]
-
-	def initialize( testing=false )
-		@ftools = (testing) ? self : File
-	end
-
-	### Make the specified dirs (which can be a String or an Array of Strings)
-	### with the specified mode.
-	def makedirs( dirs, mode=0755, verbose=false )
-		dirs = [ dirs ] unless dirs.is_a? Array
-
-		oldumask = File::umask
-		File::umask( 0777 - mode )
-
-		for dir in dirs
-			if @ftools == File
-				File::mkpath( dir, $verbose )
-			else
-				$stderr.puts "Make path %s with mode %o" % [ dir, mode ]
-			end
-		end
-
-		File::umask( oldumask )
-	end
-
-	def install( srcfile, dstfile, mode=nil, verbose=false )
-		dstfile = File.catname(srcfile, dstfile)
-		unless FileTest.exist? dstfile and File.cmp srcfile, dstfile
-			$stderr.puts "   install #{srcfile} -> #{dstfile}"
-		else
-			$stderr.puts "   skipping #{dstfile}: unchanged"
-		end
-	end
-
-	public
-
-	def installFiles( src, dstDir, mode=0444, verbose=false )
-		directories = []
-		files = []
-		
-		if File.directory?( src )
-			Find.find( src ) {|f|
-				Find.prune if @@PrunePatterns.find {|pat| f =~ pat}
-				next if f == src
-
-				if FileTest.directory?( f )
-					directories << f.gsub( /^#{src}#{File::Separator}/, '' )
-					next 
-
-				elsif FileTest.file?( f )
-					files << f.gsub( /^#{src}#{File::Separator}/, '' )
-
-				else
-					Find.prune
-				end
-			}
-		else
-			files << File.basename( src )
-			src = File.dirname( src )
-		end
-		
-		dirs = [ dstDir ]
-		dirs |= directories.collect {|d| File.join(dstDir,d)}
-		makedirs( dirs, 0755, verbose )
-		files.each {|f|
-			srcfile = File.join(src,f)
-			dstfile = File.dirname(File.join( dstDir,f ))