renaudb-batfish 0.1.0 → 0.1.1

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/README.rdoc CHANGED
@@ -4,6 +4,10 @@ Just a bunch of functions.
4
4
 
5
5
  Batfish is a collection of useful algorithms and data structures that I developed through the years for various projects. I decided to publish in case my hard drive comes to crash and for everyone to use.
6
6
 
7
+ http://renaudbourassa.com/projects/batfish/
8
+
9
+ http://github.com/renaudb/batfish/
10
+
7
11
  == Install
8
12
 
9
13
  If you haven't already, add github's gem server to your sources:
@@ -38,5 +42,9 @@ Here is a list of the algorithms and data structures batfish implements.
38
42
 
39
43
  === Data Structures
40
44
 
45
+ - Linked List
46
+ - Sorted Linked List
47
+ - Stack
48
+ - Queue
41
49
  - BK-Tree
42
50
  - Trie
data/Rakefile CHANGED
@@ -2,19 +2,6 @@ require 'rake'
2
2
  require 'rake/testtask'
3
3
  require 'rake/rdoctask'
4
4
 
5
- begin
6
- require 'jeweler'
7
- Jeweler::Tasks.new do |gemspec|
8
- gemspec.name = "batfish"
9
- gemspec.summary = "Just a bunch of functions."
10
- gemspec.email = "me@renaudbourassa.com"
11
- gemspec.homepage = "http://github.com/renaudb/batfish"
12
- gemspec.authors = ["Renaud Bourassa"]
13
- end
14
- rescue LoadError
15
- puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
16
- end
17
-
18
5
  Rake::TestTask.new do |t|
19
6
  t.test_files = FileList['test/test*.rb']
20
7
  t.verbose = true
data/batfish.gemspec CHANGED
@@ -1,29 +1,31 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
1
  # -*- encoding: utf-8 -*-
5
2
 
6
3
  Gem::Specification.new do |s|
7
4
  s.name = %q{batfish}
8
- s.version = "0.1.0"
5
+ s.version = "0.1.1"
9
6
 
10
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
8
  s.authors = ["Renaud Bourassa"]
12
- s.date = %q{2009-08-23}
9
+ s.date = %q{2009-09-23}
13
10
  s.email = %q{me@renaudbourassa.com}
14
11
  s.extra_rdoc_files = [
15
- "README.rdoc"
12
+ "README.rdoc"
16
13
  ]
17
14
  s.files = [
18
- "README.rdoc",
15
+ "README.rdoc",
19
16
  "Rakefile",
20
- "VERSION",
21
17
  "batfish.gemspec",
22
18
  "lib/batfish.rb",
23
19
  "lib/data/bktree.rb",
20
+ "lib/data/linkedlist.rb",
21
+ "lib/data/queue.rb",
22
+ "lib/data/stack.rb",
24
23
  "lib/data/trie.rb",
25
24
  "test/helper.rb",
26
25
  "test/test_bktree.rb",
26
+ "test/test_linkedlist.rb",
27
+ "test/test_queue.rb",
28
+ "test/test_stack.rb",
27
29
  "test/test_trie.rb"
28
30
  ]
29
31
  s.homepage = %q{http://github.com/renaudb/batfish}
@@ -32,8 +34,11 @@ Gem::Specification.new do |s|
32
34
  s.rubygems_version = %q{1.3.3}
33
35
  s.summary = %q{Just a bunch of functions.}
34
36
  s.test_files = [
35
- "test/helper.rb",
37
+ "test/helper.rb",
36
38
  "test/test_bktree.rb",
39
+ "test/test_linkedlist.rb",
40
+ "test/test_queue.rb",
41
+ "test/test_stack.rb",
37
42
  "test/test_trie.rb"
38
43
  ]
39
44
 
data/lib/batfish.rb CHANGED
@@ -1,2 +1,5 @@
1
- require 'data/trie'
2
- require 'data/bktree'
1
+ require File.dirname(__FILE__) + '/data/linkedlist'
2
+ require File.dirname(__FILE__) + '/data/stack'
3
+ require File.dirname(__FILE__) + '/data/queue'
4
+ require File.dirname(__FILE__) + '/data/trie'
5
+ require File.dirname(__FILE__) + '/data/bktree'
data/lib/data/bktree.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Batfish
2
2
 
3
- # A BK-tree is a datastructure used for
3
+ # A BK-tree is a data structure used for
4
4
  # nearest neighbor lookup in a metric space.
5
5
  # A metric space is any space with the
6
6
  # following properties:
@@ -9,18 +9,18 @@ module Batfish
9
9
  # * d(x,y) = d(y,x)
10
10
  # * d(x,z) <= d(x,y) + d(y,z)
11
11
  #
12
- # To use this datastructure, the objects added
12
+ # To use this data structure, the objects added
13
13
  # to it must have a distance_to(other) class method
14
14
  # defined.
15
15
  class BKTree
16
16
  attr_reader :root
17
17
 
18
- # Initialize a BKTree.
19
- def initialize
18
+ # Initializes a BKTree.
19
+ def initialize()
20
20
  @root = nil
21
21
  end
22
22
 
23
- # Add an object to the tree.
23
+ # Adds an object to the tree.
24
24
  # Returns the tree itself so several
25
25
  # adds may be chained together.
26
26
  def add(obj)
@@ -34,7 +34,7 @@ module Batfish
34
34
  alias_method :<<, :add
35
35
 
36
36
  # Returns true if the tree is empty.
37
- def empty?
37
+ def empty?()
38
38
  return @root.nil? ? true : false
39
39
  end
40
40
 
@@ -100,7 +100,7 @@ module Batfish
100
100
  class Node
101
101
  attr_reader :value, :children
102
102
 
103
- # Initialize a BKTree Node with
103
+ # Initializes a BKTree Node with
104
104
  # the given object as its value
105
105
  # or nil if no object is given.
106
106
  def initialize(obj=nil)
@@ -108,7 +108,7 @@ module Batfish
108
108
  @children = {}
109
109
  end
110
110
 
111
- # Add a node to a node in
111
+ # Adds a node to a node in
112
112
  # a recursive way.
113
113
  def add(obj)
114
114
  distance = obj.distance_to(@value)
@@ -0,0 +1,183 @@
1
+ module Batfish
2
+
3
+ # A Linked List is a data structure
4
+ # that consists of a sequence of data
5
+ # records such that each record point
6
+ # to the following record of the
7
+ # sequence.
8
+ class LinkedList
9
+ attr_reader :first
10
+
11
+ # Initializes a Linked List.
12
+ def initialize()
13
+ @first = nil
14
+ end
15
+
16
+ # Returns true if the linked list
17
+ # is empty.
18
+ def empty?()
19
+ return @first.nil?
20
+ end
21
+
22
+ # Returns true if the given object
23
+ # is present in the tree.
24
+ def include?(obj)
25
+ self.each do |node|
26
+ if node == obj
27
+ return true
28
+ end
29
+ end
30
+ return false
31
+ end
32
+
33
+ # Returns the length of the linked
34
+ # list.
35
+ def length()
36
+ length = 0
37
+ self.each { length += 1 }
38
+ return length
39
+ end
40
+
41
+ # Inserts an object at the beginning
42
+ # of the linked list. Returns the
43
+ # linked list itself so several
44
+ # inserts may be chained together.
45
+ def insert_begin(obj)
46
+ node = Node.new(obj)
47
+ node.next, @first = @first, node
48
+ return self
49
+ end
50
+ alias_method :<<, :insert_begin
51
+
52
+ # Inserts an object after a given
53
+ # object in the linked list.
54
+ # Returns nil if the given object
55
+ # can't be found otherwise returns
56
+ # the linked list itself so several
57
+ # inserts may be chained together.
58
+ def insert_after(obj, after)
59
+ node = Node.new(obj)
60
+ cur = @first
61
+ while cur
62
+ if cur.value == after
63
+ cur.next, node.next = node, cur.next
64
+ return self
65
+ end
66
+ cur = cur.next
67
+ end
68
+ return nil
69
+ end
70
+
71
+ # Removes the object at the beginning
72
+ # of the linked list. Returns the
73
+ # removed object.
74
+ def delete_begin()
75
+ node = @first
76
+ @first = @first.next
77
+ return node.value
78
+ end
79
+
80
+ # Removes the object after a given
81
+ # object in the linked list. Returns
82
+ # nil if the object can't be found,
83
+ # otherwise returns the removed
84
+ # object.
85
+ def delete_after(after)
86
+ cur = @first
87
+ while cur
88
+ if cur.value == after
89
+ node = cur.next
90
+ cur.next = node.next
91
+ return node
92
+ end
93
+ cur = cur.next
94
+ end
95
+ return nil
96
+ end
97
+
98
+ # Removes a given object in the linked
99
+ # list. Returns nil if the object
100
+ # can't be found, otherwise returns
101
+ # the removed object.
102
+ def delete(obj)
103
+ cur = @first
104
+ if cur.value == obj
105
+ @first = @first.next
106
+ end
107
+ while cur.next do
108
+ if cur.next.value == obj
109
+ node = cur.next
110
+ cur.next = node.next
111
+ return node.value
112
+ end
113
+ cur = cur.next
114
+ end
115
+ return nil
116
+ end
117
+
118
+ # Calls block once for each object
119
+ # in the stack, starting with the
120
+ # object at the beginning.
121
+ def each()
122
+ cur = @first
123
+ while cur do
124
+ yield cur.value
125
+ cur = cur.next
126
+ end
127
+ end
128
+
129
+ # This class represents a node in
130
+ # a Linked List.
131
+ class Node
132
+ attr_accessor :next
133
+ attr_reader :value
134
+
135
+ # Initializes a Linked List Node with
136
+ # the given object as its value
137
+ # or nil if no object is given.
138
+ def initialize(obj=nil)
139
+ @value = obj
140
+ @next = nil
141
+ end
142
+ end
143
+ end
144
+
145
+ # A Sorted Linked List is a data
146
+ # structure that consists of an
147
+ # ordered sequence of data records
148
+ # such that each record point to
149
+ # the following record of the sequence.
150
+ class SortedLinkedList < LinkedList
151
+
152
+ # Inserts an object in the linked list,
153
+ # keeping the objects ordered.
154
+ def insert(obj)
155
+ node = Node.new(obj)
156
+ if @first.nil?
157
+ @first = node
158
+ return self
159
+ end
160
+ prev = nil
161
+ cur = @first
162
+ while cur
163
+ if block_given?
164
+ if yield(cur.value, obj) >= 0
165
+ break
166
+ end
167
+ elsif obj <= cur.value
168
+ break
169
+ end
170
+ prev = cur
171
+ cur = cur.next
172
+ end
173
+ node.next = cur
174
+ if prev
175
+ prev.next = node
176
+ else
177
+ @first = node
178
+ end
179
+ return self
180
+ end
181
+ alias_method :<<, :insert
182
+ end
183
+ end
data/lib/data/queue.rb ADDED
@@ -0,0 +1,72 @@
1
+ module Batfish
2
+
3
+ # A Queue is a first in, first out
4
+ # (FIFO) data structure characterized
5
+ # by two fundamental operations:
6
+ # enqueue and dequeue.
7
+ class Queue
8
+ attr_reader :first, :last
9
+
10
+ # Initializes a Queue.
11
+ def initialize()
12
+ @first = nil
13
+ @last = nil
14
+ end
15
+
16
+ # Returns true if the queue is
17
+ # empty.
18
+ def empty?()
19
+ return @first.nil?
20
+ end
21
+
22
+ # Adds an object to the back
23
+ # of the queue. Returns the
24
+ # queue itself so several
25
+ # enqueue may be chained.
26
+ def enqueue(obj)
27
+ node = Node.new(obj)
28
+ if @first.nil?
29
+ @first = @last = node
30
+ else
31
+ @last.next = node
32
+ @last = node
33
+ end
34
+ return self
35
+ end
36
+ alias_method :<<, :enqueue
37
+
38
+ # Removes the object at
39
+ # the front of the queue
40
+ # and returns it.
41
+ def dequeue()
42
+ node = @first
43
+ @first = @first.next
44
+ return node.value
45
+ end
46
+
47
+ # Calls block once for each
48
+ # object in the queue, starting
49
+ # with the one at the front.
50
+ def each()
51
+ cur = @first
52
+ while cur
53
+ yield cur.value
54
+ cur = cur.next
55
+ end
56
+ end
57
+
58
+ # This class represents a node
59
+ # in a queue.
60
+ class Node
61
+ attr_accessor :value, :next, :prev
62
+
63
+ # Initializes a Queue Node with
64
+ # the given object as its value
65
+ # or nil if no object is given.
66
+ def initialize(obj=nil)
67
+ @value = obj
68
+ @next = nil
69
+ end
70
+ end
71
+ end
72
+ end
data/lib/data/stack.rb ADDED
@@ -0,0 +1,66 @@
1
+ module Batfish
2
+
3
+ # A Stack is a last in, first out
4
+ # (LIFO) data structure characterized
5
+ # by two fundamental operations:
6
+ # push and pop.
7
+ class Stack
8
+ attr_reader :first
9
+
10
+ # Initializes a Stack.
11
+ def initialize()
12
+ @first = nil
13
+ end
14
+
15
+ # Returns true if the stack is
16
+ # empty.
17
+ def empty?()
18
+ return @first.nil?
19
+ end
20
+
21
+ # Adds an object to the top of
22
+ # the list. Returns the stack
23
+ # itself so several push may be
24
+ # chained.
25
+ def push(obj)
26
+ node = Node.new(obj)
27
+ node.next = @first
28
+ @first = node
29
+ return self
30
+ end
31
+ alias_method :<<, :push
32
+
33
+ # Removes the object at the top
34
+ # of the stack and returns it.
35
+ def pop()
36
+ node = @first
37
+ @first = @first.next
38
+ return node.value
39
+ end
40
+
41
+ # Calls block once for each object
42
+ # in the stack, starting with the
43
+ # one on the top.
44
+ def each()
45
+ cur = @first
46
+ while cur
47
+ yield cur.value
48
+ cur = cur.next
49
+ end
50
+ end
51
+
52
+ # This class represents a node in
53
+ # a Stack.
54
+ class Node
55
+ attr_accessor :value, :next, :prev
56
+
57
+ # Initializes a Stack Node with
58
+ # the given object as its value
59
+ # or nil if no object is given.
60
+ def initialize(obj=nil)
61
+ @value = obj
62
+ @next = nil
63
+ end
64
+ end
65
+ end
66
+ end
data/lib/data/trie.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Batfish
2
2
 
3
- # A Trie is a datastructure used to
3
+ # A Trie is a data structure used to
4
4
  # store key value pairs where the key
5
5
  # is a string. It does so by through
6
6
  # a tree-like structure where each edge
@@ -11,8 +11,8 @@ module Batfish
11
11
  class Trie
12
12
  attr_reader :root
13
13
 
14
- # Initialize a Trie
15
- def initialize
14
+ # Initializes a Trie.
15
+ def initialize()
16
16
  @root = Node.new()
17
17
  end
18
18
 
@@ -59,13 +59,13 @@ module Batfish
59
59
  end
60
60
 
61
61
  # Returns true if the trie is empty.
62
- def empty?
62
+ def empty?()
63
63
  return @root.children.empty? ? true : false
64
64
  end
65
65
 
66
66
  # Calls block once for each key value
67
67
  # pair in the trie.
68
- def each
68
+ def each()
69
69
  @root.each("") do |k, v|
70
70
  yield(k, v)
71
71
  end
@@ -76,7 +76,7 @@ module Batfish
76
76
  class Node
77
77
  attr_reader :value, :children
78
78
 
79
- # Initialize a Trie Node with
79
+ # Initializes a Trie Node with
80
80
  # the given object as its value
81
81
  # or nil if no object is given.
82
82
  def initialize(value=nil)
@@ -84,7 +84,7 @@ module Batfish
84
84
  @children = {}
85
85
  end
86
86
 
87
- # Add a node to a node in a
87
+ # Adds a node to a node in a
88
88
  # recursive way.
89
89
  def add(key, value)
90
90
  if key.empty?
@@ -98,7 +98,7 @@ module Batfish
98
98
  end
99
99
  end
100
100
 
101
- # Delete a key value pair from
101
+ # Deletes a key value pair from
102
102
  # a node in a recursive way.
103
103
  def delete(key)
104
104
  if key.empty?
@@ -138,8 +138,8 @@ module Batfish
138
138
  # Calls block once for each key
139
139
  # value pairs under self.
140
140
  def each(key, &block)
141
- if value
142
- yield(key, value)
141
+ if @value
142
+ yield(key, @value)
143
143
  end
144
144
  @children.each do |letter, child|
145
145
  child.each(key + letter, &block)
@@ -0,0 +1,119 @@
1
+ require 'test/unit'
2
+ require 'test/helper'
3
+
4
+ include Batfish
5
+
6
+ class TestLinkedList < Test::Unit::TestCase
7
+
8
+ def setup
9
+ @ll = LinkedList.new()
10
+ end
11
+
12
+ def test_empty?
13
+ assert(@ll.empty?)
14
+ @ll.insert_begin(1)
15
+ @ll.insert_begin(2)
16
+ @ll << 3 << 4 << 5
17
+ @ll.delete_begin()
18
+ @ll.delete_begin()
19
+ @ll.delete_begin()
20
+ @ll.delete_begin()
21
+ @ll.delete_begin()
22
+ assert(@ll.empty?)
23
+ end
24
+
25
+ def test_insert
26
+ @ll.insert_begin(5)
27
+ @ll.insert_begin(3)
28
+ @ll.insert_begin(1)
29
+ @ll.insert_after(2, 1)
30
+ @ll.insert_after(4, 3)
31
+ cur = @ll.first
32
+ i = 1
33
+ while cur
34
+ assert_equal(i, cur.value)
35
+ i += 1
36
+ cur = cur.next
37
+ end
38
+ end
39
+
40
+ def test_delete
41
+ @ll << 9 << 8 << 7 << 6 << 5 << 4 << 3 << 2 << 1
42
+ @ll.delete(8)
43
+ @ll.delete(5)
44
+ @ll.delete(2)
45
+ assert(!@ll.delete(99))
46
+ @ll.delete_begin
47
+ @ll.delete_begin
48
+ @ll.delete_after(7)
49
+ @ll.delete_after(4)
50
+ elements = [4,7]
51
+ cur = @ll.first
52
+ elements.each do |el|
53
+ assert_equal(el, cur.value)
54
+ cur = cur.next
55
+ end
56
+ end
57
+
58
+ def test_include?
59
+ @ll << 1
60
+ assert(@ll.include?(1))
61
+ @ll.delete(1)
62
+ assert(!@ll.include?(1))
63
+ @ll << 1
64
+ assert(@ll.include?(1))
65
+ end
66
+
67
+ def test_length
68
+ @ll << 1 << 2 << 3 << 4 << 5
69
+ assert_equal(5, @ll.length)
70
+ @ll.delete_begin()
71
+ @ll.delete_begin()
72
+ assert_equal(3, @ll.length)
73
+ @ll << 6
74
+ assert_equal(4, @ll.length)
75
+ end
76
+
77
+ def test_each
78
+ elements = [1,2,3,4,5]
79
+ elements.each do |el|
80
+ @ll << el
81
+ end
82
+ i = elements.length
83
+ @ll.each do |el|
84
+ assert_equal(i, el)
85
+ i -= 1
86
+ end
87
+ end
88
+ end
89
+
90
+ class TestSortedLinkedList < Test::Unit::TestCase
91
+
92
+ def setup
93
+ @sll = SortedLinkedList.new()
94
+ end
95
+
96
+ def test_insert
97
+ elements = [5,1,3,4,2,6]
98
+ elements.each do |el|
99
+ @sll << el
100
+ end
101
+ i = 1
102
+ @sll.each do |el|
103
+ assert_equal(i, el)
104
+ i += 1
105
+ end
106
+ end
107
+
108
+ def test_insert_block
109
+ elements = [5,1,3,4,2,6]
110
+ elements.each do |el|
111
+ @sll.insert(el) { |x,y| -x <=> -y }
112
+ end
113
+ i = elements.length
114
+ @sll.each do |el|
115
+ assert_equal(i, el)
116
+ i -= 1
117
+ end
118
+ end
119
+ end
@@ -0,0 +1,46 @@
1
+ require 'test/unit'
2
+ require 'test/helper'
3
+
4
+ include Batfish
5
+
6
+ class TestQueue < Test::Unit::TestCase
7
+
8
+ def setup
9
+ @q = Queue.new()
10
+ end
11
+
12
+ def test_empty?
13
+ assert(@q.empty?)
14
+ @q.enqueue(1)
15
+ @q.enqueue(2)
16
+ @q << 3 << 4
17
+ @q.dequeue()
18
+ @q.dequeue()
19
+ @q.dequeue()
20
+ @q.dequeue()
21
+ assert(@q.empty?)
22
+ end
23
+
24
+ def test_dequeue
25
+ @q << 1 << 2 << 3
26
+ assert_equal(1, @q.dequeue())
27
+ assert_equal(2, @q.dequeue())
28
+ @q << 4 << 5
29
+ assert_equal(3, @q.dequeue())
30
+ assert_equal(4, @q.dequeue())
31
+ assert_equal(5, @q.dequeue())
32
+ assert(@q.empty?)
33
+ end
34
+
35
+ def test_each
36
+ elements = [1,2,3,4,5,6]
37
+ elements.each do |el|
38
+ @q << el
39
+ end
40
+ i = 0
41
+ @q.each do |el|
42
+ assert_equal(elements[i], el)
43
+ i += 1
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,46 @@
1
+ require 'test/unit'
2
+ require 'test/helper'
3
+
4
+ include Batfish
5
+
6
+ class TestStack < Test::Unit::TestCase
7
+
8
+ def setup
9
+ @s = Stack.new()
10
+ end
11
+
12
+ def test_empty?
13
+ assert(@s.empty?)
14
+ @s.push(5)
15
+ @s.push(7)
16
+ @s << 1 << 2
17
+ @s.pop()
18
+ @s.pop()
19
+ @s.pop()
20
+ @s.pop()
21
+ assert(@s.empty?)
22
+ end
23
+
24
+ def test_pop
25
+ @s << 1 << 5 << 9
26
+ assert_equal(9, @s.pop)
27
+ assert_equal(5, @s.pop)
28
+ @s << 3 << 4
29
+ assert_equal(4, @s.pop)
30
+ assert_equal(3, @s.pop)
31
+ assert_equal(1, @s.pop)
32
+ assert(@s.empty?)
33
+ end
34
+
35
+ def test_each
36
+ elements = [1,5,9,13,8,5]
37
+ elements.each do |el|
38
+ @s << el
39
+ end
40
+ i = elements.length - 1
41
+ @s.each do |el|
42
+ assert_equal(el, elements[i])
43
+ i -= 1
44
+ end
45
+ end
46
+ end
data/test/test_trie.rb CHANGED
@@ -82,16 +82,19 @@ class TestTrie < Test::Unit::TestCase
82
82
  end
83
83
 
84
84
  def test_each
85
- @t.add("dinosaur", 0)
86
- @t.add("tyrannosaurus", 4)
87
- @t.add("diplotomodon", 2)
88
- @t.add("tyrannotitan", 5)
89
- @t.add("raptor", 3)
90
- @t.add("diplodocus", 1)
91
- i = 0
85
+ words = {
86
+ "dinosaur" => 0,
87
+ "tyrannosaurus" => 4,
88
+ "diplotomodon" => 2,
89
+ "tyrannotitan" => 5,
90
+ "raptor" => 3,
91
+ "diplodocus" => 1
92
+ }
93
+ words.each do |k,v|
94
+ @t.add(k, v)
95
+ end
92
96
  @t.each do |k, v|
93
- assert_equal(i, v)
94
- i += 1
97
+ assert_equal(words[k.downcase], v)
95
98
  end
96
99
  end
97
100
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: renaudb-batfish
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Renaud Bourassa
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-23 00:00:00 -07:00
12
+ date: 2009-09-23 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -24,13 +24,18 @@ extra_rdoc_files:
24
24
  files:
25
25
  - README.rdoc
26
26
  - Rakefile
27
- - VERSION
28
27
  - batfish.gemspec
29
28
  - lib/batfish.rb
30
29
  - lib/data/bktree.rb
30
+ - lib/data/linkedlist.rb
31
+ - lib/data/queue.rb
32
+ - lib/data/stack.rb
31
33
  - lib/data/trie.rb
32
34
  - test/helper.rb
33
35
  - test/test_bktree.rb
36
+ - test/test_linkedlist.rb
37
+ - test/test_queue.rb
38
+ - test/test_stack.rb
34
39
  - test/test_trie.rb
35
40
  has_rdoc: false
36
41
  homepage: http://github.com/renaudb/batfish
@@ -62,4 +67,7 @@ summary: Just a bunch of functions.
62
67
  test_files:
63
68
  - test/helper.rb
64
69
  - test/test_bktree.rb
70
+ - test/test_linkedlist.rb
71
+ - test/test_queue.rb
72
+ - test/test_stack.rb
65
73
  - test/test_trie.rb
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.1.0