the_array_comparator 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.rspec +2 -1
- data/Gemfile +1 -1
- data/Gemfile.lock +21 -21
- data/README.md +2 -2
- data/TODO.md +2 -1
- data/gemfiles/Gemfile.default +1 -1
- data/lib/the_array_comparator/cache.rb +43 -44
- data/lib/the_array_comparator/caching_strategies/anonymous_cache.rb +69 -0
- data/lib/the_array_comparator/caching_strategies/single_value_cache.rb +69 -0
- data/lib/the_array_comparator/comparator.rb +48 -40
- data/lib/the_array_comparator/exceptions.rb +31 -2
- data/lib/the_array_comparator/{strategies → searching_strategies}/base.rb +1 -1
- data/lib/the_array_comparator/{strategies → searching_strategies}/contains_all.rb +1 -1
- data/lib/the_array_comparator/{strategies → searching_strategies}/contains_all_with_substring_search.rb +1 -1
- data/lib/the_array_comparator/{strategies → searching_strategies}/contains_any.rb +1 -1
- data/lib/the_array_comparator/{strategies → searching_strategies}/contains_any_with_substring_search.rb +1 -1
- data/lib/the_array_comparator/{strategies → searching_strategies}/contains_not.rb +1 -1
- data/lib/the_array_comparator/{strategies → searching_strategies}/contains_not_with_substring_search.rb +1 -1
- data/lib/the_array_comparator/{strategies → searching_strategies}/is_equal.rb +1 -1
- data/lib/the_array_comparator/{strategies → searching_strategies}/is_not_equal.rb +1 -1
- data/lib/the_array_comparator/strategy_dispatcher.rb +110 -0
- data/lib/the_array_comparator/version.rb +2 -2
- data/lib/the_array_comparator.rb +12 -20
- data/spec/benchmark/benchmark_spec.rb +50 -9
- data/spec/cache/anonymous_cache_spec.rb +89 -0
- data/spec/cache/single_value_cache_spec.rb +77 -0
- data/spec/cache_spec.rb +21 -70
- data/spec/comparator/base_spec.rb +2 -2
- data/spec/comparator/comparator_spec.rb +7 -37
- data/spec/comparator/contains_all_spec.rb +7 -7
- data/spec/comparator/contains_all_with_substring_search_spec.rb +6 -6
- data/spec/comparator/contains_any_spec.rb +6 -6
- data/spec/comparator/contains_any_with_substring_search_spec.rb +5 -5
- data/spec/comparator/contains_not_spec.rb +6 -6
- data/spec/comparator/contains_not_with_substring_search_spec.rb +4 -4
- data/spec/comparator/is_equal_spec.rb +7 -7
- data/spec/comparator/is_not_equal_spec.rb +6 -6
- data/spec/spec_helper.rb +1 -1
- data/spec/strategy_dispatcher/strategy_dispatcher_spec.rb +159 -0
- metadata +20 -11
data/.rspec
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
the_array_comparator (0.
|
4
|
+
the_array_comparator (0.2.0)
|
5
5
|
active_support
|
6
6
|
|
7
7
|
GEM
|
8
|
-
remote:
|
8
|
+
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
10
|
active_support (3.0.0)
|
11
11
|
activesupport (= 3.0.0)
|
@@ -17,16 +17,16 @@ GEM
|
|
17
17
|
rspec-expectations (>= 2.7.0)
|
18
18
|
awesome_print (1.1.0)
|
19
19
|
builder (3.1.4)
|
20
|
-
childprocess (0.3.
|
21
|
-
ffi (~> 1.0, >= 1.0.
|
20
|
+
childprocess (0.3.8)
|
21
|
+
ffi (~> 1.0, >= 1.0.11)
|
22
22
|
chronic (0.9.0)
|
23
|
-
churn (0.0.
|
23
|
+
churn (0.0.28)
|
24
24
|
chronic (>= 0.2.3)
|
25
25
|
hirb
|
26
26
|
json_pure
|
27
27
|
main
|
28
|
-
ruby_parser (~> 3.
|
29
|
-
sexp_processor (~> 4.1
|
28
|
+
ruby_parser (~> 3.0)
|
29
|
+
sexp_processor (~> 4.1)
|
30
30
|
coderay (1.0.8)
|
31
31
|
columnize (0.3.6)
|
32
32
|
cucumber (1.2.1)
|
@@ -34,37 +34,37 @@ GEM
|
|
34
34
|
diff-lcs (>= 1.1.3)
|
35
35
|
gherkin (~> 2.11.0)
|
36
36
|
json (>= 1.4.6)
|
37
|
-
debugger (1.3.
|
37
|
+
debugger (1.3.1)
|
38
38
|
columnize (>= 0.3.1)
|
39
39
|
debugger-linecache (~> 1.1.1)
|
40
|
-
debugger-ruby_core_source (~> 1.1.
|
40
|
+
debugger-ruby_core_source (~> 1.1.8)
|
41
41
|
debugger-linecache (1.1.2)
|
42
42
|
debugger-ruby_core_source (>= 1.1.1)
|
43
|
-
debugger-ruby_core_source (1.1.
|
43
|
+
debugger-ruby_core_source (1.1.8)
|
44
44
|
diff-lcs (1.1.3)
|
45
45
|
fattr (2.2.1)
|
46
46
|
ffaker (1.15.0)
|
47
|
-
ffi (1.
|
47
|
+
ffi (1.4.0)
|
48
48
|
fuubar (1.1.0)
|
49
49
|
rspec (~> 2.0)
|
50
50
|
rspec-instafail (~> 0.2.0)
|
51
51
|
ruby-progressbar (~> 1.0.0)
|
52
|
-
gherkin (2.11.
|
53
|
-
json (>= 1.
|
52
|
+
gherkin (2.11.6)
|
53
|
+
json (>= 1.7.6)
|
54
54
|
github-markup (0.7.5)
|
55
55
|
hashr (0.0.22)
|
56
56
|
hirb (0.7.1)
|
57
|
-
json (1.7.
|
58
|
-
json_pure (1.7.
|
57
|
+
json (1.7.7)
|
58
|
+
json_pure (1.7.7)
|
59
59
|
main (5.1.1)
|
60
60
|
arrayfields (>= 4.7.4)
|
61
61
|
chronic (>= 0.6.2)
|
62
62
|
fattr (>= 2.2.0)
|
63
63
|
map (>= 5.1.0)
|
64
|
-
map (6.
|
64
|
+
map (6.3.0)
|
65
65
|
method_source (0.8.1)
|
66
|
-
multi_json (1.
|
67
|
-
pry (0.9.
|
66
|
+
multi_json (1.6.1)
|
67
|
+
pry (0.9.12)
|
68
68
|
coderay (~> 1.0.5)
|
69
69
|
method_source (~> 0.8)
|
70
70
|
slop (~> 3.4)
|
@@ -85,7 +85,7 @@ GEM
|
|
85
85
|
ruby-progressbar (1.0.2)
|
86
86
|
ruby_parser (3.1.1)
|
87
87
|
sexp_processor (~> 4.1)
|
88
|
-
sexp_processor (4.1.
|
88
|
+
sexp_processor (4.1.5)
|
89
89
|
simplecov (0.7.1)
|
90
90
|
multi_json (~> 1.0)
|
91
91
|
simplecov-html (~> 0.7.1)
|
@@ -94,9 +94,9 @@ GEM
|
|
94
94
|
thor (0.17.0)
|
95
95
|
tmrb (1.2.7)
|
96
96
|
thor
|
97
|
-
travis-lint (1.
|
97
|
+
travis-lint (1.6.0)
|
98
98
|
hashr (~> 0.0.22)
|
99
|
-
yard (0.8.
|
99
|
+
yard (0.8.4.1)
|
100
100
|
|
101
101
|
PLATFORMS
|
102
102
|
ruby
|
data/README.md
CHANGED
@@ -9,7 +9,7 @@ Can be used to compare to arrays with a consistent api.
|
|
9
9
|
|
10
10
|
Add this line to your application's Gemfile:
|
11
11
|
|
12
|
-
gem '
|
12
|
+
gem 'the_array_comparator'
|
13
13
|
|
14
14
|
And then execute:
|
15
15
|
|
@@ -17,7 +17,7 @@ And then execute:
|
|
17
17
|
|
18
18
|
Or install it yourself as:
|
19
19
|
|
20
|
-
$ gem install
|
20
|
+
$ gem install the_array_comparator
|
21
21
|
|
22
22
|
## Usage
|
23
23
|
|
data/TODO.md
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
*
|
1
|
+
* Cache -> only check if there are __no__ new objects
|
2
|
+
|
data/gemfiles/Gemfile.default
CHANGED
@@ -3,64 +3,63 @@
|
|
3
3
|
# the main module
|
4
4
|
module TheArrayComparator
|
5
5
|
#caching class
|
6
|
-
class Cache
|
6
|
+
class Cache < StrategyDispatcher
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
@cache = []
|
11
|
-
@new_objects = false
|
12
|
-
end
|
8
|
+
strategy_reader :caching_strategies
|
9
|
+
attr_reader :caches
|
13
10
|
|
14
|
-
#
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
#
|
19
|
-
# @return [Object]
|
20
|
-
# the object which has beed added
|
21
|
-
def add(obj)
|
22
|
-
@cache << obj
|
23
|
-
@new_objects = true
|
11
|
+
# Variable to store available caches
|
12
|
+
def initialize
|
13
|
+
super()
|
14
|
+
@caches = {}
|
24
15
|
|
25
|
-
|
16
|
+
register :anonymous_cache, CachingStrategies::AnonymousCache
|
17
|
+
register :single_value_cache, CachingStrategies::SingleValueCache
|
26
18
|
end
|
27
19
|
|
28
|
-
#
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
20
|
+
# @see [StrategyDispatcher]
|
21
|
+
def class_must_have_methods
|
22
|
+
[
|
23
|
+
:add,
|
24
|
+
:clear,
|
25
|
+
:stored_objects,
|
26
|
+
:new_objects?,
|
27
|
+
:delete_object,
|
28
|
+
:fetch_object,
|
29
|
+
]
|
35
30
|
end
|
36
31
|
|
37
|
-
#
|
38
|
-
def
|
39
|
-
|
32
|
+
# @see [StrategyDispatcher]
|
33
|
+
def exception_to_raise_for_invalid_strategy
|
34
|
+
Exceptions::IncompatibleCachingStrategy
|
40
35
|
end
|
41
36
|
|
42
|
-
#
|
37
|
+
# Retrieve cache
|
43
38
|
#
|
44
|
-
# @
|
45
|
-
# the
|
46
|
-
def
|
47
|
-
|
48
|
-
end
|
39
|
+
# @param [Symbol] cache
|
40
|
+
# the cache to be used
|
41
|
+
def [](cache)
|
42
|
+
c = cache.to_sym
|
49
43
|
|
50
|
-
|
51
|
-
|
52
|
-
# @return
|
53
|
-
# the deleted object
|
54
|
-
def delete_object(num)
|
55
|
-
@cache.delete_at(num)
|
44
|
+
raise Exceptions::CacheDoesNotExist, "Unknown cache \":#{c}\" given. Did you create it in advance?" unless caches.has_key?(c)
|
45
|
+
caches[c]
|
56
46
|
end
|
57
47
|
|
58
|
-
#
|
48
|
+
# Add a new cache
|
49
|
+
#
|
50
|
+
# @param [Symbol] cache
|
51
|
+
# the cache to be created
|
59
52
|
#
|
60
|
-
# @
|
61
|
-
# the
|
62
|
-
def
|
63
|
-
|
53
|
+
# @param [Symbol] strategy
|
54
|
+
# the cache strategy to be used
|
55
|
+
def add(cache,strategy)
|
56
|
+
c = cache.to_sym
|
57
|
+
s = strategy.to_sym
|
58
|
+
|
59
|
+
raise Exceptions::UnknownCachingStrategy, "Unknown caching strategy \":#{strategy}\" given. Did you register it in advance?" unless caching_strategies.has_key?(strategy)
|
60
|
+
|
61
|
+
caches[c] = caching_strategies[s].new
|
62
|
+
caches[c]
|
64
63
|
end
|
65
64
|
end
|
66
65
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
|
3
|
+
# the main module
|
4
|
+
module TheArrayComparator
|
5
|
+
#caching strategies
|
6
|
+
module CachingStrategies
|
7
|
+
#anonymous cache
|
8
|
+
class AnonymousCache
|
9
|
+
|
10
|
+
# Create cache
|
11
|
+
def initialize
|
12
|
+
@cache = []
|
13
|
+
@new_objects = false
|
14
|
+
end
|
15
|
+
|
16
|
+
# Add object to cache
|
17
|
+
#
|
18
|
+
# @param [Object] obj
|
19
|
+
# the object which should be added to the cache
|
20
|
+
#
|
21
|
+
# @return [Object]
|
22
|
+
# the object which has beed added
|
23
|
+
def add(obj)
|
24
|
+
@cache << obj
|
25
|
+
@new_objects = true
|
26
|
+
|
27
|
+
obj
|
28
|
+
end
|
29
|
+
|
30
|
+
# Return all stored objects
|
31
|
+
#
|
32
|
+
# @return [Array]
|
33
|
+
# the cache
|
34
|
+
def stored_objects
|
35
|
+
@new_objects = false
|
36
|
+
@cache
|
37
|
+
end
|
38
|
+
|
39
|
+
# Clear the cache (delete all objects)
|
40
|
+
def clear
|
41
|
+
@cache = []
|
42
|
+
end
|
43
|
+
|
44
|
+
# Are there new objects
|
45
|
+
#
|
46
|
+
# @return [TrueClass,FalseClass]
|
47
|
+
# the result of the check
|
48
|
+
def new_objects?
|
49
|
+
@new_objects
|
50
|
+
end
|
51
|
+
|
52
|
+
# Delete an object from cache by number
|
53
|
+
#
|
54
|
+
# @return
|
55
|
+
# the deleted object
|
56
|
+
def delete_object(num)
|
57
|
+
@cache.delete_at(num)
|
58
|
+
end
|
59
|
+
|
60
|
+
# Request an object from cache by number
|
61
|
+
#
|
62
|
+
# @return
|
63
|
+
# the requested object
|
64
|
+
def fetch_object(num)
|
65
|
+
@cache[num]
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
|
3
|
+
# the main module
|
4
|
+
module TheArrayComparator
|
5
|
+
#caching strategies
|
6
|
+
module CachingStrategies
|
7
|
+
#anonymous cache
|
8
|
+
class SingleValueCache
|
9
|
+
|
10
|
+
# Create cache
|
11
|
+
def initialize
|
12
|
+
@cache = []
|
13
|
+
@new_objects = false
|
14
|
+
end
|
15
|
+
|
16
|
+
# Add object to cache
|
17
|
+
#
|
18
|
+
# @param [Object] obj
|
19
|
+
# the object which should be added to the cache
|
20
|
+
#
|
21
|
+
# @return [Object]
|
22
|
+
# the object which has beed added
|
23
|
+
def add(obj)
|
24
|
+
@cache = [ obj ]
|
25
|
+
@new_objects = true
|
26
|
+
|
27
|
+
obj
|
28
|
+
end
|
29
|
+
|
30
|
+
# Return all stored objects
|
31
|
+
#
|
32
|
+
# @return [Array]
|
33
|
+
# the cache
|
34
|
+
def stored_objects
|
35
|
+
@new_objects = false
|
36
|
+
@cache
|
37
|
+
end
|
38
|
+
|
39
|
+
# Clear the cache (delete all objects)
|
40
|
+
def clear
|
41
|
+
@cache = []
|
42
|
+
end
|
43
|
+
|
44
|
+
# Are there new objects
|
45
|
+
#
|
46
|
+
# @return [TrueClass,FalseClass]
|
47
|
+
# the result of the check
|
48
|
+
def new_objects?
|
49
|
+
@new_objects
|
50
|
+
end
|
51
|
+
|
52
|
+
# Delete an object from cache by number
|
53
|
+
#
|
54
|
+
# @return
|
55
|
+
# the deleted object
|
56
|
+
def delete_object
|
57
|
+
@cache.delete_at(0)
|
58
|
+
end
|
59
|
+
|
60
|
+
# Request an object from cache by number
|
61
|
+
#
|
62
|
+
# @return
|
63
|
+
# the requested object
|
64
|
+
def fetch_object
|
65
|
+
@cache[0]
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -1,46 +1,48 @@
|
|
1
1
|
#encoding: utf-8
|
2
|
+
require 'the_array_comparator/caching_strategies/anonymous_cache'
|
3
|
+
require 'the_array_comparator/caching_strategies/single_value_cache'
|
2
4
|
|
3
5
|
# the main module
|
4
6
|
module TheArrayComparator
|
5
7
|
# the main comparator shell class
|
6
|
-
class Comparator
|
7
|
-
|
8
|
-
|
9
|
-
@comparators = {}
|
10
|
-
class << self
|
11
|
-
|
12
|
-
# @!attribute [rw] command
|
13
|
-
# Return all available comparator strategies
|
14
|
-
attr_accessor :comparators
|
15
|
-
|
16
|
-
# Register a new comparator strategy
|
17
|
-
#
|
18
|
-
# @param [String,Symbol] name
|
19
|
-
# The name which can be used to refer to the registered strategy
|
20
|
-
#
|
21
|
-
# @param [Comparator] klass
|
22
|
-
# The strategy class which should be registered
|
23
|
-
#
|
24
|
-
# @raise Exceptions::IncompatibleComparator
|
25
|
-
# Raise exception if an incompatible comparator class is given
|
26
|
-
def register(name,klass)
|
27
|
-
@comparators ||= {}
|
28
|
-
|
29
|
-
if klass.new.respond_to?(:success?)
|
30
|
-
@comparators[name.to_sym] = klass
|
31
|
-
else
|
32
|
-
raise Exceptions::IncompatibleComparator, "Registering #{klass} failed. It does not support \"success?\"-instance-method"
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
8
|
+
class Comparator < StrategyDispatcher
|
9
|
+
|
10
|
+
strategy_reader :comparators
|
36
11
|
|
37
12
|
# Create a new comparator instance
|
38
13
|
# and register default comparators
|
39
14
|
#
|
40
15
|
# @return [Comparator]
|
41
16
|
# a new comparator
|
42
|
-
def initialize
|
43
|
-
|
17
|
+
def initialize(cache=Cache.new)
|
18
|
+
super()
|
19
|
+
|
20
|
+
@cache = cache
|
21
|
+
@cache.add(:checks, :anonymous_cache)
|
22
|
+
@cache.add(:result, :single_value_cache)
|
23
|
+
|
24
|
+
register :contains_all, SearchingStrategies::ContainsAll
|
25
|
+
register :contains_any, SearchingStrategies::ContainsAny
|
26
|
+
register :not_contains, SearchingStrategies::ContainsNot
|
27
|
+
register :contains_all_as_substring, SearchingStrategies::ContainsAllWithSubstringSearch
|
28
|
+
register :contains_any_as_substring, SearchingStrategies::ContainsAnyWithSubstringSearch
|
29
|
+
register :not_contains_substring, SearchingStrategies::ContainsNotWithSubstringSearch
|
30
|
+
register :is_equal, SearchingStrategies::IsEqual
|
31
|
+
register :is_not_equal, SearchingStrategies::IsNotEqual
|
32
|
+
|
33
|
+
@result = Result.new
|
34
|
+
end
|
35
|
+
|
36
|
+
# @see StrategyWrapper
|
37
|
+
def exception_invalid_strategy
|
38
|
+
Exceptions::IncompatibleComparator
|
39
|
+
end
|
40
|
+
|
41
|
+
# @see StrategyWrapper
|
42
|
+
def class_must_have_methods
|
43
|
+
[
|
44
|
+
:success?,
|
45
|
+
]
|
44
46
|
end
|
45
47
|
|
46
48
|
# Add a check to test against
|
@@ -66,17 +68,19 @@ module TheArrayComparator
|
|
66
68
|
# @raise [Exceptions::UnknownCheckType]
|
67
69
|
# if a unknown strategy is given (needs to be registered first)
|
68
70
|
def add_check(data,type,keywords,options={})
|
69
|
-
|
71
|
+
t = type.to_sym
|
72
|
+
|
73
|
+
raise Exceptions::UnknownCheckType, "Unknown check type \":#{t}\" given. Did you register it in advance?" unless comparators.has_key?(t)
|
70
74
|
opts = {
|
71
75
|
exceptions: [],
|
72
76
|
tag:'',
|
73
77
|
}.merge options
|
74
78
|
|
75
79
|
sample = Sample.new(data,keywords,opts[:exceptions],opts[:tag])
|
76
|
-
strategy_klass =
|
80
|
+
strategy_klass = comparators[t]
|
77
81
|
check = Check.new(strategy_klass,sample)
|
78
82
|
|
79
|
-
@cache.add check
|
83
|
+
@cache[:checks].add check
|
80
84
|
end
|
81
85
|
|
82
86
|
# The result of all checks defined
|
@@ -84,9 +88,13 @@ module TheArrayComparator
|
|
84
88
|
# @return [Result]
|
85
89
|
# the result class with all the data need for further analysis
|
86
90
|
def result
|
87
|
-
@cache.
|
91
|
+
if @cache[:checks].new_objects?
|
92
|
+
@cache[:checks].stored_objects.each do |c|
|
93
|
+
@result = Result.new(c.sample) unless c.success?
|
94
|
+
end
|
95
|
+
end
|
88
96
|
|
89
|
-
|
97
|
+
@result
|
90
98
|
end
|
91
99
|
|
92
100
|
# Run all checks
|
@@ -103,8 +111,8 @@ module TheArrayComparator
|
|
103
111
|
# @param [Integer] number
|
104
112
|
# the index of the check which should be deleted
|
105
113
|
def delete_check(number)
|
106
|
-
if @cache.fetch_object(number)
|
107
|
-
@cache.delete_object(number)
|
114
|
+
if @cache[:checks].fetch_object(number)
|
115
|
+
@cache[:checks].delete_object(number)
|
108
116
|
else
|
109
117
|
raise Exceptions::CheckDoesNotExist, "You tried to delete a check, which does not exist!"
|
110
118
|
end
|
@@ -120,7 +128,7 @@ module TheArrayComparator
|
|
120
128
|
# @return [Array]
|
121
129
|
# all available checks
|
122
130
|
def list_checks
|
123
|
-
@cache.stored_objects
|
131
|
+
@cache[:checks].stored_objects
|
124
132
|
end
|
125
133
|
end
|
126
134
|
end
|
@@ -3,19 +3,48 @@ module TheArrayComparator
|
|
3
3
|
# exceptions which are going to be raised under
|
4
4
|
# certain conditions
|
5
5
|
module Exceptions
|
6
|
-
# Used
|
7
|
-
#
|
6
|
+
# Used if one tries to add an unknown
|
7
|
+
# check type
|
8
8
|
class UnknownCheckType < Exception
|
9
9
|
end
|
10
|
+
#
|
11
|
+
# Used if one tries to add an unknown
|
12
|
+
# caching strategy
|
13
|
+
class UnknownCachingStrategy < Exception
|
14
|
+
end
|
10
15
|
|
11
16
|
# Used if one tries to register an
|
12
17
|
# incompatible comparator
|
13
18
|
class IncompatibleComparator < Exception
|
14
19
|
end
|
20
|
+
#
|
21
|
+
# Used if one tries to register an
|
22
|
+
# incompatible caching strategy
|
23
|
+
class IncompatibleCachingStrategy < Exception
|
24
|
+
end
|
15
25
|
|
16
26
|
# Used if one tries to delete an
|
17
27
|
# unexisting probe
|
18
28
|
class CheckDoesNotExist < Exception
|
19
29
|
end
|
30
|
+
|
31
|
+
# Used if one tries to use an unexisting
|
32
|
+
# cache
|
33
|
+
class CacheDoesNotExist < Exception
|
34
|
+
end
|
35
|
+
|
36
|
+
# Used if one forgot to implement that
|
37
|
+
# method
|
38
|
+
class MustHaveMethodNotImplemented < Exception
|
39
|
+
end
|
40
|
+
|
41
|
+
# Used if one use the library the wrong way
|
42
|
+
class WrongUsageOfLibrary < Exception
|
43
|
+
end
|
44
|
+
|
45
|
+
# Use if one tries to register an internal
|
46
|
+
# keyword
|
47
|
+
class UsedInternalKeyword < Exception
|
48
|
+
end
|
20
49
|
end
|
21
50
|
end
|