ducktypechecker 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -1,4 +1,4 @@
1
- Duck Type Checker is copyrighted free software by Brian Takita <brian.takita@gmail.com>.
1
+ Duck Type Checker is copyrighted free software by Brian Takita <Brian.Takita@gmail.com>.
2
2
  You can redistribute it and/or modify it under either the terms of the GPL, or the conditions below:
3
3
 
4
4
  1. You may make and give away verbatim copies of the source form of the
@@ -1,12 +1,76 @@
1
+ # DuckType - A mixin that checks an object to see if it implements
2
+ # certain methods (ie "Walks like a Duck"). If the object does not
3
+ # implement a given method, an exception is raised
4
+ # or user defined action is performed.
5
+ #
6
+ # ===Example
7
+ # require 'ducktypechecker'
8
+ #
9
+ # class Test
10
+ # def a_method(a)
11
+ # DuckType.check(a, [:method_one, :method_two], 'a')
12
+ # puts a.method_one
13
+ # puts a.method_two
14
+ # end
15
+ # end
16
+ #
17
+ # class A
18
+ # def method_one
19
+ # 'method_one'
20
+ # end
21
+ # end
22
+ #
23
+ # t = Test.new
24
+ # t.a_method(A.new)
25
+ # # A TypeError exception is raised with the message
26
+ # #"Variable 'a' needs to implement 'method_two'."
27
+ #
28
+ # ==Passing a Block
29
+ # You can also use a custom action adding a block to the
30
+ # DuckType.check method.
31
+ #
32
+ # ===Example
33
+ # require 'ducktypechecker'
34
+ # s = Struct.new(:a)
35
+ # o = s.new(1)
36
+ # DuckType.check(o, [:a, :b]) do |s|
37
+ # print "Method '#{s.to_s}' is not implemented in object 'o'."
38
+ # end
39
+ # # "Method 'b' is not implemented in object 'o'."
40
+ #
41
+ # ==Mixin
42
+ # You can also mixin DuckType into your own class.
43
+ #
44
+ # ===Example
45
+ # require 'ducktypechecker'
46
+ # class Test
47
+ # include(DuckType)
48
+ # def a_method(a)
49
+ # duck_type_check(a, [:method_one, :method_two], 'a')
50
+ # puts a.method_one
51
+ # puts a.method_two
52
+ # end
53
+ # end
54
+ #
55
+ # class A
56
+ # def method_one
57
+ # 'method_one'
58
+ # end
59
+ # end
60
+ #
61
+ # t = Test.new
62
+ # t.a_method(A.new)
63
+ # # A TypeError exception is raised with the message
64
+ # #"Variable 'a' needs to implement 'method_two'."
65
+
1
66
  module DuckType
2
67
  # Checks the given object if is responds to the given
3
68
  # method signatures.
4
- # ==Arguments
5
- # :obj = The object being tested
6
- # :methods = A method name or enumerable of the method names.
7
- # :var_name = The name of the variable begin tested.
8
- # This is useful for the default messages.
9
- # ==Block
69
+ # ===Arguments
70
+ # :obj = The object being tested
71
+ # :methods = A method name or enumerable of the method names.
72
+ # :var_name = The name of the variable begin tested.
73
+ # ===Block
10
74
  # Optionally a block may be passed to respond to a method that
11
75
  # is not implemented by the object.
12
76
  def self.check(obj, methods, var_name = nil, &block)
@@ -28,7 +92,16 @@ module DuckType
28
92
  end
29
93
  end
30
94
 
31
- # Instance implementation of the static method DuckTypeChecker.check
95
+ # Instance implementation of DuckType.check
96
+ # Checks the given object if is responds to the given
97
+ # method signatures.
98
+ # ===Arguments
99
+ # :obj = The object being tested
100
+ # :methods = A method name or enumerable of the method names.
101
+ # :var_name = The name of the variable begin tested.
102
+ # ===Block
103
+ # Optionally a block may be passed to respond to a method that
104
+ # is not implemented by the object.
32
105
  def duck_type_check(obj, methods, var_name = nil, &block)
33
106
  DuckType.check(obj, methods, var_name, &block)
34
107
  end
@@ -1,2 +1,2 @@
1
1
  dir = File.dirname(__FILE__)
2
- require "#{dir}/duck_type_checker"
2
+ require "#{dir}/duck_type_checker"
metadata CHANGED
@@ -3,9 +3,9 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: ducktypechecker
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.0
7
- date: 2005-09-01 00:00:00 -07:00
8
- summary: Check to see if an object contains the required method signatures.
6
+ version: 0.1.1
7
+ date: 2005-09-05 00:00:00 -07:00
8
+ summary: Check to see if an object "walks like a duck".
9
9
  require_paths:
10
10
  - lib
11
11
  email: brian.takita@gmail.com