CHANGES: - The evaluation order of constraints has changed from bottom-up to top-down (which is more "natural") - "Generators" - Methods to collect valid results: #generate_constrained_value, #next_constrained_value, #collect_constrained_values_until - Changed the handling of constraint violations - Some methods are directly delegated to the constrained value: #inspect, #=~, #instance_eval, #===. - Class method constraint_attr to define attributes that are properly inherited - Blocks for constraint and handler definitions now take the current instance/object as the first argument, the value that has to be checked/handled as the second This is still not much more than a draft. But while implementing a few examples for testing the "generators", I think this little thing became more congruent. As some api changes where necessary, I uploaded this version as v0.1 is obsolete. This library provides a way to ensure that certain objects always satisfy a specified set of constraints. An object that can be constrained must be a child of Constraint::Shell, which acts as a wrapper for the actual value. Constraints can added to subclasses and its instances (per-object constraints). It is possible to define methods that handle constraint violations and retrofit the object according to its definition. With some help from the developer, this library can also be used (to some limited extent at least) to generate correct values and to find solutions fitting the set of constraints. There is no clever search routine involved here. All possible values returned by the generator are tested for their suitability until the generator says that there are no more values. The initial reason for writing this library was to create a restricted collection type of class that may contain only values meeting some criteria. Project:: http://rubyforge.org/projects/constraint/ Download:: http://rubyforge.org/frs/?group_id=748 Support:: http://rubyforge.org/forum/?group_id=748 Cheers, Thomas. ___________________________________________________________ Gesendet von Yahoo! Mail - Jetzt mit 1GB Speicher kostenlos - Hier anmelden: http://mail.yahoo.de