armin-joellenbeck-rdbc 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +32 -31
- data/examples/stack.rb +0 -36
- data/lib/contract.rb +1 -1
- data/lib/contract_decorator.rb +3 -1
- data/lib/translate.rb +0 -38
- data/rdbc.gemspec +2 -2
- metadata +3 -4
- data/lib/decorator.rb +0 -31
data/Rakefile
CHANGED
@@ -1,31 +1,32 @@
|
|
1
|
-
require 'rake/gempackagetask'
|
2
|
-
require 'rake/rdoctask'
|
3
|
-
|
4
|
-
|
5
|
-
task :default =>
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
t.
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
'--
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
1
|
+
require 'rake/gempackagetask'
|
2
|
+
require 'rake/rdoctask'
|
3
|
+
require 'spec/rake/spectask'
|
4
|
+
|
5
|
+
task :default => 'spec'
|
6
|
+
|
7
|
+
task :all => [:clobber, :spec, :doc, :package]
|
8
|
+
|
9
|
+
Spec::Rake::SpecTask.new do |t|
|
10
|
+
t.libs << 'spec' << 'examples' << 'lib'
|
11
|
+
t.spec_opts << '--diff' << 'unified'
|
12
|
+
t.spec_opts << '--format' << 'progress'
|
13
|
+
end
|
14
|
+
|
15
|
+
Rake::RDocTask.new(:doc) do |t|
|
16
|
+
t.rdoc_dir = 'doc'
|
17
|
+
t.rdoc_files.include('README', 'lib/**/*.rb')
|
18
|
+
t.options = [
|
19
|
+
'--all',
|
20
|
+
'--charset', 'utf8',
|
21
|
+
'--inline-source',
|
22
|
+
'--main', 'README',
|
23
|
+
'--title', 'Design by Contract for Ruby'
|
24
|
+
]
|
25
|
+
end
|
26
|
+
|
27
|
+
Rake::GemPackageTask.new(eval(File.read('rdbc.gemspec'))) do |pkg|
|
28
|
+
end
|
29
|
+
|
30
|
+
task :auto do
|
31
|
+
sh 'RUBYLIB=spec:examples:lib:$RUBYLIB autospec'
|
32
|
+
end
|
data/examples/stack.rb
CHANGED
@@ -23,54 +23,18 @@ class Stack
|
|
23
23
|
@objects.size
|
24
24
|
end
|
25
25
|
|
26
|
-
# doctest: A new Stack should be empty.
|
27
|
-
# >> stack = Stack.new
|
28
|
-
# >> stack.empty?
|
29
|
-
# => true
|
30
26
|
def empty?
|
31
27
|
size == 0
|
32
28
|
end
|
33
29
|
|
34
|
-
# doctest: A new Stack should have no object on top.
|
35
|
-
# >> stack = Stack.new
|
36
|
-
# >> begin
|
37
|
-
# ?> stack.top
|
38
|
-
# ?> rescue Test::Unit::AssertionFailedError
|
39
|
-
# ?> true
|
40
|
-
# ?> else
|
41
|
-
# ?> false
|
42
|
-
# ?> end
|
43
|
-
# => true
|
44
30
|
def top
|
45
31
|
@objects.last
|
46
32
|
end
|
47
33
|
|
48
|
-
# doctest: From a new Stack no object can be popped.
|
49
|
-
# >> stack = Stack.new
|
50
|
-
# >> begin
|
51
|
-
# ?> stack.pop
|
52
|
-
# ?> rescue Test::Unit::AssertionFailedError
|
53
|
-
# ?> true
|
54
|
-
# ?> else
|
55
|
-
# ?> false
|
56
|
-
# ?> end
|
57
|
-
# => true
|
58
34
|
def pop
|
59
35
|
@objects.pop
|
60
36
|
end
|
61
37
|
|
62
|
-
# doctest: A pushed object should be on the top.
|
63
|
-
# >> stack = Stack.new
|
64
|
-
# >> object = Object.new
|
65
|
-
# >> stack.push(object)
|
66
|
-
# >> stack.empty?
|
67
|
-
# => false
|
68
|
-
# >> stack.top
|
69
|
-
# => object
|
70
|
-
# >> stack.pop
|
71
|
-
# => object
|
72
|
-
# >> stack.empty?
|
73
|
-
# => true
|
74
38
|
def push(object)
|
75
39
|
@objects.push(object)
|
76
40
|
nil
|
data/lib/contract.rb
CHANGED
data/lib/contract_decorator.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
+
require 'rubygems'
|
1
2
|
require 'decorator'
|
3
|
+
|
2
4
|
require 'translate'
|
3
5
|
|
4
6
|
|
@@ -10,7 +12,7 @@ class ContractDecorator < Decorator
|
|
10
12
|
|
11
13
|
def initialize(object)
|
12
14
|
super(object)
|
13
|
-
@contract = self.
|
15
|
+
@contract = self.__class__.contract_class.new
|
14
16
|
end
|
15
17
|
|
16
18
|
def method_missing(method, *args)
|
data/lib/translate.rb
CHANGED
@@ -1,47 +1,9 @@
|
|
1
1
|
module Translate
|
2
2
|
|
3
|
-
# doctest: Translate should give the pre method for a normal method
|
4
|
-
# >> Translate.method_pre(:method)
|
5
|
-
# => :method_pre
|
6
|
-
#
|
7
|
-
# doctest: Translate should give the pre method for a question method
|
8
|
-
# >> Translate.method_pre(:method?)
|
9
|
-
# => :method_pre?
|
10
|
-
#
|
11
|
-
# doctest: Translate should give the pre method for an exclamation method
|
12
|
-
# >> Translate.method_pre(:method!)
|
13
|
-
# => :method_pre!
|
14
|
-
#
|
15
|
-
# doctest: Translate should give the pre method for an assignment method
|
16
|
-
# >> Translate.method_pre(:method=)
|
17
|
-
# => :method_pre=
|
18
|
-
#
|
19
|
-
# doctest: Translate should give the pre method for an operator
|
20
|
-
# >> Translate.method_pre(:+)
|
21
|
-
# => :op_plus_pre
|
22
3
|
def self.method_pre(method)
|
23
4
|
method_with_suffix(method, :pre)
|
24
5
|
end
|
25
6
|
|
26
|
-
# doctest: Translate should give the post method for a normal method
|
27
|
-
# >> Translate.method_post(:method)
|
28
|
-
# => :method_post
|
29
|
-
#
|
30
|
-
# doctest: Translate should give the post method for a question method
|
31
|
-
# >> Translate.method_post(:method?)
|
32
|
-
# => :method_post?
|
33
|
-
#
|
34
|
-
# doctest: Translate should give the post method for an exclamation method
|
35
|
-
# >> Translate.method_post(:method!)
|
36
|
-
# => :method_post!
|
37
|
-
#
|
38
|
-
# doctest: Translate should give the post method for an assignment method
|
39
|
-
# >> Translate.method_post(:method=)
|
40
|
-
# => :method_post=
|
41
|
-
#
|
42
|
-
# doctest: Translate should give the post method for an operator
|
43
|
-
# >> Translate.method_post(:+)
|
44
|
-
# => :op_plus_post
|
45
7
|
def self.method_post(method)
|
46
8
|
method_with_suffix(method, :post)
|
47
9
|
end
|
data/rdbc.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'rdbc'
|
3
|
-
s.version = '0.0.
|
3
|
+
s.version = '0.0.7'
|
4
4
|
s.summary = 'Design by Contract for Ruby.'
|
5
5
|
s.author = 'Armin Joellenbeck'
|
6
6
|
s.email = 'armin@joellenbeck.net'
|
@@ -22,5 +22,5 @@ Gem::Specification.new do |s|
|
|
22
22
|
'--main', 'README',
|
23
23
|
'--title', 'Design by Contract for Ruby'
|
24
24
|
]
|
25
|
-
s.add_dependency('
|
25
|
+
s.add_dependency('armin-joellenbeck-decorator')
|
26
26
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: armin-joellenbeck-rdbc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Armin Joellenbeck
|
@@ -9,11 +9,11 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-10-27 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: armin-joellenbeck-decorator
|
17
17
|
version_requirement:
|
18
18
|
version_requirements: !ruby/object:Gem::Requirement
|
19
19
|
requirements:
|
@@ -35,7 +35,6 @@ files:
|
|
35
35
|
- rdbc.gemspec
|
36
36
|
- examples/stack_contract.rb
|
37
37
|
- examples/stack.rb
|
38
|
-
- lib/decorator.rb
|
39
38
|
- lib/contract.rb
|
40
39
|
- lib/translate.rb
|
41
40
|
- lib/contract_decorator.rb
|
data/lib/decorator.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
class Decorator
|
2
|
-
|
3
|
-
attr_reader :object
|
4
|
-
|
5
|
-
# doctest: A Decorator should be initialized with thr decorated object.
|
6
|
-
# >> object = Object.new
|
7
|
-
# >> decorator = Decorator.new(object)
|
8
|
-
# >> decorator.object == object
|
9
|
-
# => true
|
10
|
-
def initialize(object)
|
11
|
-
@object = object
|
12
|
-
end
|
13
|
-
|
14
|
-
def method_missing(method, *args)
|
15
|
-
@object.send(method, *args)
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
|
-
class Class
|
22
|
-
|
23
|
-
def decorator(decorator_class)
|
24
|
-
old_new = self.method(:new)
|
25
|
-
(class << self; self; end).send(:define_method, :new) do |*args|
|
26
|
-
object = old_new.call(*args)
|
27
|
-
decorator_class.new(object)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|