collection-holder 0.0.3 → 0.0.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 912685734dc2d512483fb5e4a07e4e7ddb3272bc
4
- data.tar.gz: e32fe40cf7d654e72ec6bd624d81a5edf67a852d
3
+ metadata.gz: a642fd5f065c222c5c814084e4fa1fd2d92db835
4
+ data.tar.gz: dc2b5bbcd72e8b3a73a629cb96db0d2448371c16
5
5
  SHA512:
6
- metadata.gz: 7bd371e5e4d22f63ceaf09a4d2f97846f756367e5232c5692f39a29b06fae2db36b74db41e75bd6c4adbfb4d2bf1dc16ebcc82bc35002b3975bc5a8265ba8c4b
7
- data.tar.gz: 667ee4ef9b9129ae7937451e227015c0864b235ce94562bf635aa3df899e47cce121a93cf5c96784a464ed18a33a85025fe1b549e6103db1375f706b0e3525f5
6
+ metadata.gz: 23c8ca91611d0fb7028c346a5212c325f3595b0b305dadaf16a592e69261602621212e1f6a216d18fecb3445dfcf1d4cefedbd16fd6e4113ff269c2857515858
7
+ data.tar.gz: e3ca39355047a9f639d7976949399b16e2dd2f7b39cb818053f173afe1d84d048f539eecf2385911a4559de1a90cc586d42c3212275a2e317b1989312d31c259
@@ -1,4 +1,6 @@
1
1
  require_relative 'que.rb'
2
+ require_relative 'error.rb'
3
+ require_relative 'config.rb'
2
4
 
3
5
  class CollectionHolder
4
6
 
@@ -6,13 +8,22 @@ class CollectionHolder
6
8
 
7
9
  @@collectionID = 0
8
10
 
9
- def initialize
11
+ def initialize(data = {})
12
+ raise Error if !valid_number(data[:size]) && data[:size]
13
+
14
+ @size = data[:size].to_i || $DEFAULT_HOLDER_SIZE
10
15
  @holder = Hash.new
16
+ rescue => e
17
+ e.init_failed(self.class)
11
18
  end
12
19
 
13
20
  def add(collection)
14
- @holder[key(@@collectionID)] = collection
15
- @@collectionID += 1
21
+ raise Error if @holder.size >= @size
22
+
23
+ @holder[key(@@collectionID)] = collection
24
+ @@collectionID += 1
25
+ rescue => e
26
+ e.max_size_reached(self.class)
16
27
  end
17
28
 
18
29
  def find(id)
@@ -26,7 +37,11 @@ class CollectionHolder
26
37
  end
27
38
 
28
39
  def delete(id)
40
+ raise Error if @holder.empty?
41
+
29
42
  @holder.delete(key(id))
43
+ rescue => e
44
+ e.min_size_reached(self.class)
30
45
  end
31
46
 
32
47
  private
@@ -34,4 +49,9 @@ class CollectionHolder
34
49
  id.to_s.to_sym
35
50
  end
36
51
 
52
+ def valid_number(str)
53
+ str = str.to_s
54
+ !!(str =~ /[0-9]+/ && str.length == str.match(/[0-9]+/).to_s.length)
55
+ end
56
+
37
57
  end
data/lib/config.rb ADDED
@@ -0,0 +1,4 @@
1
+
2
+ $DEFAULT_HOLDER_SIZE = 10
3
+
4
+ $DEFAULT_QUE_SIZE = 10
data/lib/error.rb ADDED
@@ -0,0 +1,15 @@
1
+ class Error < StandardError
2
+
3
+ def init_failed(klass)
4
+ puts "Couldn't make object in class:#{klass}"
5
+ end
6
+
7
+ def max_size_reached(klass)
8
+ puts "Maximum size reached in class:#{klass}"
9
+ end
10
+
11
+ def min_size_reached(klass)
12
+ puts "Minimum size reached in class:#{klass}"
13
+ end
14
+
15
+ end
data/lib/que.rb CHANGED
@@ -1,34 +1,33 @@
1
- $DEFAULT_QUE_SIZE = 10
1
+ require_relative 'error.rb'
2
+ require_relative 'config.rb'
2
3
 
3
4
  class Que
4
5
 
5
6
  attr_reader :max_size
6
7
 
7
8
  def initialize(data = {})
8
- @max_size = data[:size] || $DEFAULT_QUE_SIZE
9
+ raise Error if !valid_number(data[:size]) && data[:size]
10
+
11
+ @max_size = get_number(data[:size]) || $DEFAULT_QUE_SIZE
9
12
  @list = Queue.new
10
13
  push_list(data[:list]) if data[:list]
14
+ rescue => e
15
+ e.init_failed(self.class)
11
16
  end
12
17
 
13
18
  def pop
14
- if @list.empty?
15
- puts "Empty collection! Can't pop()"
16
- elsif
17
- @list.pop
18
- end
19
+ raise Error if @list.empty?
20
+
21
+ @list.pop
22
+ rescue => e
23
+ e.min_size_reached(self.class)
19
24
  end
20
25
 
21
26
  def push(item)
22
- begin
23
- if @list.size >= @max_size
24
- puts "Full collection! Can't push(#{item.to_s})"
25
- elsif
26
- @list.push(item)
27
- end
28
-
29
- rescue
30
- puts "Unable to push #{item.to_s}"
31
- end
27
+ raise Error if @list.size >= @max_size
28
+ @list.push item
29
+ rescue => e
30
+ e.max_size_reached(self.class)
32
31
  end
33
32
 
34
33
  def clear
@@ -48,15 +47,26 @@ class Que
48
47
  end
49
48
 
50
49
  def push_list(list)
51
- begin
52
- list.each { |data| @list.push data } if list.is_a? Array
53
- rescue
54
- puts "Unable to push list #{list.to_s}"
55
- end
50
+ raise Error if (@list.size+list.size) >= @max_size
51
+
52
+ list.each { |data| @list.push data } if list.is_a? Array
53
+ rescue => e
54
+ e.max_size_reached(self.class)
56
55
  end
57
56
 
58
57
  def display
59
58
  @list.to_s
60
59
  end
61
60
 
61
+ private
62
+ def valid_number(str)
63
+ str = str.to_s
64
+ !!(str =~ /[0-9]+/ && str.length == str.match(/[0-9]+/).to_s.length)
65
+ end
66
+
67
+ def get_number(str)
68
+ return nil if str==nil
69
+ return str.to_i
70
+ end
71
+
62
72
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: collection-holder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raj Negi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-19 00:00:00.000000000 Z
11
+ date: 2016-09-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A simple gem to manage your queues or any data structure!
14
14
  email: raj.negi@weboniselab.com
@@ -17,6 +17,8 @@ extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
19
  - lib/collection-holder.rb
20
+ - lib/config.rb
21
+ - lib/error.rb
20
22
  - lib/que.rb
21
23
  homepage: https://github.com/rajn-webonise/RubyAssignments
22
24
  licenses: