protocol – Method Protocols for Ruby Classes
Description
This library offers an implementation of protocols against which you can check the conformity of your classes or instances of your classes. They are a bit like Java Interfaces, but as mixin modules they can also contain already implemented methods. Additionally you can define preconditions/postconditions for methods specified in a protocol.
Here's a small example of how a Stack protocol might be specified:
StackProtocol = Protocol do
def push(x)
postcondition { top == x }
postcondition { result == myself }
end
def top() end
def size() end
def empty?()
postcondition { size == 0 ? result : !result }
end
def pop()
s = size
precondition { not empty? }
postcondition { size == s - 1 }
end
end
Then conformity to the protocol can be declared and checked like this (preconditions and postconditions will be checked during runtime):
class S ... conform_to StackProtocol end
More involved examples can be foud in the examples subdirectory of the source distribution.
Installation
The library can be installed via rubygems:
# gem install protocol
The gem and the source archive can also be downloaded directly from rubyforge.org.
If you want to install this library from the source archive you also need Ryan Davis' ParseTree extension.
Author
Florian Frank <flori@ping.de>License
This is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License Version 2 as published by the Free Software Foundation: GNU GPL.