linked-list 0.0.7

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9a0280fdef3349b667cc6b932c6873c6b2e23c25
4
+ data.tar.gz: 57e230c91ee076d78d42e549dd562e3b6cdebffd
5
+ SHA512:
6
+ metadata.gz: 30ba2f45bca37a529dd265f41b523dcdf69649d4b66ce6baa1dd650815c5139e7cea5b942de9d7dcfd3f9b69ed11ff4feca8cf46be89c3dab3b5baae9f37ed7d
7
+ data.tar.gz: 556a3fa2ec3a3497159a3b4a73bbdaab88719a9c01fc63f41c84b71c773675e0369c10ae0581524d06b9999c8612667fb1c96b67c99327cc4055dfba3906e6c0
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in linked-list.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Yury Velikanau
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,67 @@
1
+ [![Code Climate](https://codeclimate.com/github/spectator/linked-list.png)](https://codeclimate.com/github/spectator/linked-list)
2
+ [![Build Status](https://secure.travis-ci.org/spectator/linked-list.png?branch=master)](http://travis-ci.org/spectator/linked-list)
3
+
4
+ # LinkedList
5
+
6
+ Ruby implementation of Linked List, following some Ruby idioms.
7
+
8
+ ## Installation
9
+
10
+ Add this line to your application's Gemfile:
11
+
12
+ ```ruby
13
+ gem 'linked-list'
14
+ ```
15
+
16
+ And then execute:
17
+
18
+ ```shell
19
+ $ bundle
20
+ ```
21
+
22
+ Or install it yourself as:
23
+
24
+ ```shell
25
+ $ gem install linked-list
26
+ ```
27
+
28
+ ## Usage
29
+
30
+ ```ruby
31
+ object = Object.new # could be anything
32
+ list = LinkedList::List.new
33
+
34
+ list.push(object)
35
+ list << object # same as `push`
36
+
37
+ list.unshift(object)
38
+
39
+ list.pop
40
+ list.shift
41
+
42
+ list.reverse
43
+ list.reverse!
44
+
45
+ list.each # Enumerator object
46
+ list.each { |e| puts e }
47
+
48
+ list.first # head of the list
49
+ list.last # tail of the list
50
+
51
+ list.to_a
52
+ ```
53
+
54
+ Please see `LinkedList::List` and `LinkedList::Node` for details.
55
+
56
+ ## TODO
57
+
58
+ * Insert / delete in the middle
59
+ * More readable `inspect`
60
+
61
+ ## Contributing
62
+
63
+ 1. Fork it
64
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
65
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
66
+ 4. Push to the branch (`git push origin my-new-feature`)
67
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,9 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.libs << 'test'
6
+ t.pattern = 'test/*_test.rb'
7
+ end
8
+
9
+ task default: 'test'
@@ -0,0 +1,3 @@
1
+ require 'linked-list/conversions'
2
+ require 'linked-list/node'
3
+ require 'linked-list/list'
@@ -0,0 +1,42 @@
1
+ module LinkedList
2
+ module Conversions
3
+ module_function
4
+
5
+ # +Node()+ tries to convert its argument to +Node+ object by first calling
6
+ # +#to_node+, if that is not availabe then it will instantiate a new +Node+
7
+ # object.
8
+ #
9
+ # == Returns:
10
+ # New +Node+ object.
11
+ #
12
+ def Node(arg)
13
+ case arg
14
+ when ->(_arg) { _arg.respond_to?(:to_node) }
15
+ arg.to_node
16
+ else
17
+ Node.new(arg)
18
+ end
19
+ end
20
+
21
+ # +List()+ tries to conver its argument to +List+ object by first calling
22
+ # +#to_list+, if that is not availabe and its argument is an array (or can
23
+ # be convertd into array with +#to_ary+) then it will instantiate a new
24
+ # +List+ object making nodes from array elements. If none above applies,
25
+ # then a new +List+ will be instantiated with one node holding argument
26
+ # value.
27
+ #
28
+ # == Returns:
29
+ # New +List+ object.
30
+ #
31
+ def List(arg)
32
+ case arg
33
+ when ->(_arg) { _arg.respond_to?(:to_list) }
34
+ arg.to_list
35
+ when ->(_arg) { _arg.respond_to?(:to_ary) }
36
+ arg.to_ary.each_with_object(List.new) { |n, l| l.push(Node(n)) }
37
+ else
38
+ List.new.push(Node(arg))
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,176 @@
1
+ module LinkedList
2
+ class List
3
+ include Conversions
4
+
5
+ attr_reader :length
6
+ alias_method :size, :length
7
+
8
+ def initialize
9
+ @head = nil
10
+ @tail = nil
11
+ @length = 0
12
+ end
13
+
14
+ # Returns the first element of the list or nil.
15
+ #
16
+ def first
17
+ @head && @head.data
18
+ end
19
+
20
+ # Returns the last element of the list or nil.
21
+ #
22
+ def last
23
+ @tail && @tail.data
24
+ end
25
+
26
+ # Pushes new nodes to the end of the list.
27
+ #
28
+ # == Parameters:
29
+ # node:: Any object, including +Node+ objects.
30
+ #
31
+ # == Returns:
32
+ # self of +List+ object.
33
+ #
34
+ def push(node)
35
+ node = Node(node)
36
+ @head ||= node
37
+
38
+ @tail.next = node if @tail
39
+ @tail = node
40
+
41
+ @length += 1
42
+ self
43
+ end
44
+ alias_method :<<, :push
45
+
46
+ # Pushes new nodes on top of the list.
47
+ #
48
+ # == Parameters:
49
+ # node:: Any object, including +Node+ objects.
50
+ #
51
+ # == Returns:
52
+ # self of +List+ object.
53
+ #
54
+ def unshift(node)
55
+ node = Node(node)
56
+ @tail ||= node
57
+
58
+ node.next = @head
59
+ @head = node
60
+
61
+ @length += 1
62
+ self
63
+ end
64
+
65
+ # Removes node from the end of the list.
66
+ #
67
+ # == Returns:
68
+ # Data stored in the node or nil.
69
+ #
70
+ def pop
71
+ return nil unless @head
72
+
73
+ node = @head
74
+ next_to_tail = nil
75
+ while(node = node.next)
76
+ next_to_tail = node unless node.next
77
+ end
78
+ @head = nil unless next_to_tail
79
+
80
+ tail = @tail
81
+ @tail = next_to_tail
82
+
83
+ @length -= 1
84
+ tail.data
85
+ end
86
+
87
+ # Removes node from the beginning of the list.
88
+ #
89
+ # == Returns:
90
+ # Data stored in the node or nil.
91
+ #
92
+ def shift
93
+ return nil unless @head
94
+
95
+ head = __shift
96
+ @tail = nil unless @head
97
+
98
+ @length -= 1
99
+ head.data
100
+ end
101
+
102
+ # Reverse list of nodes and returns new instance of the list.
103
+ #
104
+ # == Returns:
105
+ # New +List+ in reverse order.
106
+ #
107
+ def reverse
108
+ List(to_a).reverse!
109
+ end
110
+
111
+ # Reverses list of nodes in place.
112
+ #
113
+ # == Returns:
114
+ # self in reverse order.
115
+ #
116
+ def reverse!
117
+ return self unless @head
118
+
119
+ prev_node = __shift
120
+ prev_node.next = nil
121
+ @tail = prev_node
122
+
123
+ while(@head)
124
+ curr_node = __shift
125
+ curr_node.next = prev_node
126
+ prev_node = curr_node
127
+ end
128
+ @head = prev_node
129
+ self
130
+ end
131
+
132
+ # Iterates over nodes from top to bottom passing node data to the block if
133
+ # given. If no block given, returns +Enumerator+.
134
+ #
135
+ # == Returns:
136
+ # +Enumerator+ or yields data to the block stored in every node on the
137
+ # list.
138
+ #
139
+ def each
140
+ return to_enum(__callee__) unless block_given?
141
+ __each { |e| yield(e.data) }
142
+ end
143
+
144
+ # Converts list to array.
145
+ #
146
+ def to_a
147
+ each.to_a
148
+ end
149
+ alias_method :to_ary, :to_a
150
+
151
+ # Conversion function, see +Conversions.List+.
152
+ #
153
+ # == Returns:
154
+ # self
155
+ #
156
+ def to_list
157
+ self
158
+ end
159
+
160
+ private
161
+
162
+ def __shift
163
+ head = @head
164
+ @head = @head.next
165
+ head
166
+ end
167
+
168
+ def __each
169
+ next_node = @head
170
+ while(next_node)
171
+ yield next_node
172
+ next_node = next_node.next
173
+ end
174
+ end
175
+ end
176
+ end
@@ -0,0 +1,19 @@
1
+ module LinkedList
2
+ class Node
3
+ attr_accessor :data, :next
4
+
5
+ def initialize(data)
6
+ @data = data
7
+ @next = nil
8
+ end
9
+
10
+ # Conversion function, see +Conversions.Node+.
11
+ #
12
+ # == Returns:
13
+ # self
14
+ #
15
+ def to_node
16
+ self
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,5 @@
1
+ module Linked
2
+ module List
3
+ VERSION = '0.0.7'
4
+ end
5
+ end
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'linked-list/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'linked-list'
8
+ spec.version = Linked::List::VERSION
9
+ spec.authors = ['Yury Velikanau']
10
+ spec.email = ['yury.velikanau@gmail.com']
11
+ spec.description = %q{Ruby implementation of Linked List, following some Ruby idioms.}
12
+ spec.summary = %q{Ruby implementation of Linked List, following some Ruby idioms.}
13
+ spec.homepage = 'https://github.com/spectator/linked-list'
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.add_development_dependency 'rake'
22
+ spec.add_development_dependency 'bundler', '>= 1.3', '<= 2.0'
23
+ spec.add_development_dependency 'minitest', '>= 5.0', '<= 6.0'
24
+ end
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+
3
+ describe LinkedList::Conversions do
4
+ describe 'Node()' do
5
+ it 'returns self if node is given' do
6
+ node = create_node('foo')
7
+ assert_equal LinkedList::Conversions.Node(node), node
8
+ end
9
+
10
+ it 'returns new node' do
11
+ assert_instance_of LinkedList::Node,
12
+ LinkedList::Conversions.Node('foo')
13
+ end
14
+ end
15
+
16
+ describe 'List()' do
17
+ it 'returns self if list is given' do
18
+ list = create_list
19
+ assert_equal LinkedList::Conversions.List(list), list
20
+ end
21
+
22
+ it 'returns list with nodes made from array' do
23
+ list = LinkedList::Conversions.List([1, 2])
24
+ assert_equal [1, 2], [list.first, list.last]
25
+ end
26
+
27
+ it 'returns new list with one node' do
28
+ list = LinkedList::Conversions.List('foo')
29
+ assert_equal 'foo', list.first
30
+ end
31
+ end
32
+ end
data/test/list_test.rb ADDED
@@ -0,0 +1,203 @@
1
+ require 'test_helper'
2
+
3
+ describe LinkedList::List do
4
+ let(:list) { create_list }
5
+ let(:node_1) { create_node('foo') }
6
+ let(:node_2) { create_node('bar') }
7
+
8
+ describe 'instantiation' do
9
+ it 'assigns first to nil' do
10
+ assert_nil list.first
11
+ end
12
+
13
+ it 'assigns last to nil' do
14
+ assert_nil list.last
15
+ end
16
+
17
+ it 'has zero length' do
18
+ assert_equal 0, list.length
19
+ end
20
+ end
21
+
22
+ describe '#push' do
23
+ it 'last pushed node can be accessed with #last' do
24
+ list.push(node_1)
25
+ assert_equal node_1.data, list.last
26
+ end
27
+
28
+ it 'last pushed node data can be accessed with #first' do
29
+ list.push(node_1)
30
+ assert_equal node_1.data, list.first
31
+ end
32
+
33
+ it 'maintains first pushed node as first' do
34
+ list.push(node_1)
35
+ list.push(node_2)
36
+ assert_equal node_1.data, list.first
37
+ end
38
+
39
+ it 'sets reference to the next node' do
40
+ list.push(node_1)
41
+ list.push(node_2)
42
+ assert_equal node_1.next, node_2
43
+ end
44
+
45
+ it 'increases list length by 1' do
46
+ list.push(node_1)
47
+ assert_equal 1, list.length
48
+ end
49
+
50
+ it 'returns self' do
51
+ assert_equal list.push(node_1), list
52
+ end
53
+ end
54
+
55
+ describe '#unshift' do
56
+ it 'last pushed node can be accessed with #last' do
57
+ list.unshift(node_1)
58
+ assert_equal node_1.data, list.last
59
+ end
60
+
61
+ it 'last pushed node can be accessed with #first' do
62
+ list.unshift(node_1)
63
+ assert_equal node_1.data, list.first
64
+ end
65
+
66
+ it 'maintains first pushed node as last' do
67
+ list.unshift(node_1)
68
+ list.unshift(node_2)
69
+ assert_equal node_1.data, list.last
70
+ end
71
+
72
+ it 'sets reference to the next node' do
73
+ list.unshift(node_1)
74
+ list.unshift(node_2)
75
+ assert_equal node_2.next, node_1
76
+ end
77
+
78
+ it 'increases list length by 1' do
79
+ list.unshift(node_1)
80
+ assert_equal 1, list.length
81
+ end
82
+
83
+ it 'returns self' do
84
+ assert_equal list.unshift(node_1), list
85
+ end
86
+ end
87
+
88
+ describe '#pop' do
89
+ it 'returns nil if list is empty' do
90
+ assert_nil list.pop
91
+ end
92
+
93
+ it 'returns node from the end of the list' do
94
+ list.push(node_1)
95
+ list.push(node_2)
96
+ assert_equal node_2.data, list.pop
97
+ end
98
+
99
+ it 'sets #last to nil when all nodes are removed' do
100
+ list.push(node_1)
101
+ list.pop
102
+ assert_nil list.last
103
+ end
104
+
105
+ it 'sets #first to nil when all nodes are removed' do
106
+ list.push(node_1)
107
+ list.pop
108
+ assert_nil list.first
109
+ end
110
+
111
+ it 'reduces list length by 1' do
112
+ list.push(node_1)
113
+ list.pop
114
+ assert_equal 0, list.length
115
+ end
116
+ end
117
+
118
+ describe '#shift' do
119
+ it 'returns nil if list is empty' do
120
+ assert_nil list.shift
121
+ end
122
+
123
+ it 'returns node from the top of the list' do
124
+ list.push(node_1)
125
+ list.push(node_2)
126
+ assert_equal node_1.data, list.shift
127
+ end
128
+
129
+ it 'sets #last to nil when all nodes are removed' do
130
+ list.push(node_1)
131
+ list.shift
132
+ assert_nil list.last
133
+ end
134
+
135
+ it 'sets #first to nil when all nodes are removed' do
136
+ list.push(node_1)
137
+ list.shift
138
+ assert_nil list.first
139
+ end
140
+
141
+ it 'reduces list length by 1' do
142
+ list.push(node_1)
143
+ list.shift
144
+ assert_equal 0, list.length
145
+ end
146
+ end
147
+
148
+ describe '#reverse' do
149
+ it 'returns new empty list when receiver list is empty' do
150
+ refute_equal list, list.reverse
151
+ end
152
+
153
+ it 'returns new list in reverse order' do
154
+ list.push(node_1)
155
+ refute_equal list.reverse, list.reverse!
156
+ end
157
+
158
+ it 'reverses order of nodes' do
159
+ list.push(node_1)
160
+ list.push(node_2)
161
+ new_list = list.reverse
162
+ assert_equal %w(bar foo), [new_list.first, new_list.last]
163
+ end
164
+ end
165
+
166
+ describe '#reverse!' do
167
+ it 'returns self when list is empty' do
168
+ assert_equal list, list.reverse!
169
+ end
170
+
171
+ it 'reverses order of nodes' do
172
+ list.push(node_1)
173
+ list.push(node_2)
174
+ list.reverse!
175
+ assert_equal [node_2.data, node_1.data], [list.first, list.last]
176
+ end
177
+
178
+ it 'returns same object' do
179
+ list.push(node_1)
180
+ assert_equal list, list.reverse!
181
+ end
182
+ end
183
+
184
+ describe '#each' do
185
+ it 'returns enumerator if no block given' do
186
+ assert_instance_of Enumerator, list.each
187
+ end
188
+
189
+ it 'pass each node data to the block' do
190
+ list.push(node_1)
191
+ list.push(node_2)
192
+ nodes = []
193
+ list.each { |e| nodes << e }
194
+ assert_equal %w(foo bar), nodes
195
+ end
196
+ end
197
+
198
+ describe 'conversion' do
199
+ it '#to_list returns self' do
200
+ assert_equal list, list.to_list
201
+ end
202
+ end
203
+ end
data/test/node_test.rb ADDED
@@ -0,0 +1,33 @@
1
+ require 'test_helper'
2
+
3
+ describe LinkedList::Node do
4
+ let(:node) { create_node('foo') }
5
+
6
+ describe 'instantiation' do
7
+ it 'assigns data' do
8
+ assert_equal 'foo', node.data
9
+ end
10
+
11
+ it 'assigns nil to next' do
12
+ assert_nil node.next
13
+ end
14
+ end
15
+
16
+ describe 'accessors' do
17
+ it '#data' do
18
+ node.data = 'bar'
19
+ assert_equal 'bar', node.data
20
+ end
21
+
22
+ it '#next' do
23
+ node.next = 'bar'
24
+ assert_equal 'bar', node.next
25
+ end
26
+ end
27
+
28
+ describe 'conversion' do
29
+ it '#to_node returns self' do
30
+ assert_equal node, node.to_node
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,15 @@
1
+ require 'linked-list'
2
+
3
+ gem 'minitest'
4
+ require 'minitest/autorun'
5
+ require 'minitest/pride'
6
+
7
+ class Minitest::Spec
8
+ def create_node(*args)
9
+ LinkedList::Node.new(*args)
10
+ end
11
+
12
+ def create_list(*args)
13
+ LinkedList::List.new(*args)
14
+ end
15
+ end
metadata ADDED
@@ -0,0 +1,119 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: linked-list
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.7
5
+ platform: ruby
6
+ authors:
7
+ - Yury Velikanau
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-12-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ - - <=
35
+ - !ruby/object:Gem::Version
36
+ version: '2.0'
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '1.3'
44
+ - - <=
45
+ - !ruby/object:Gem::Version
46
+ version: '2.0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: minitest
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '5.0'
54
+ - - <=
55
+ - !ruby/object:Gem::Version
56
+ version: '6.0'
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '5.0'
64
+ - - <=
65
+ - !ruby/object:Gem::Version
66
+ version: '6.0'
67
+ description: Ruby implementation of Linked List, following some Ruby idioms.
68
+ email:
69
+ - yury.velikanau@gmail.com
70
+ executables: []
71
+ extensions: []
72
+ extra_rdoc_files: []
73
+ files:
74
+ - .gitignore
75
+ - .travis.yml
76
+ - Gemfile
77
+ - LICENSE.txt
78
+ - README.md
79
+ - Rakefile
80
+ - lib/linked-list.rb
81
+ - lib/linked-list/conversions.rb
82
+ - lib/linked-list/list.rb
83
+ - lib/linked-list/node.rb
84
+ - lib/linked-list/version.rb
85
+ - linked-list.gemspec
86
+ - test/conversions_test.rb
87
+ - test/list_test.rb
88
+ - test/node_test.rb
89
+ - test/test_helper.rb
90
+ homepage: https://github.com/spectator/linked-list
91
+ licenses:
92
+ - MIT
93
+ metadata: {}
94
+ post_install_message:
95
+ rdoc_options: []
96
+ require_paths:
97
+ - lib
98
+ required_ruby_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - '>='
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ requirements: []
109
+ rubyforge_project:
110
+ rubygems_version: 2.0.14
111
+ signing_key:
112
+ specification_version: 4
113
+ summary: Ruby implementation of Linked List, following some Ruby idioms.
114
+ test_files:
115
+ - test/conversions_test.rb
116
+ - test/list_test.rb
117
+ - test/node_test.rb
118
+ - test/test_helper.rb
119
+ has_rdoc: