linked 0.4.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Linked
4
+ # Collection of common utility methods.
5
+ module Util
6
+ protected def object_identifier
7
+ format '%s:0x%0x', self.class.name, object_id
8
+ end
9
+ end
10
+ end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Linked
4
- VERSION = '0.4.0'
4
+ # The current version number of the Linked library.
5
+ VERSION = '0.5.1'
5
6
  end
data/linked.gemspec CHANGED
@@ -1,26 +1,38 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+
2
+ # frozen_string_literal: true
3
+
4
+ lib = File.expand_path('lib', __dir__)
3
5
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
6
  require 'linked/version'
5
7
 
6
8
  Gem::Specification.new do |spec|
7
- spec.name = "linked"
9
+ spec.name = 'linked'
8
10
  spec.version = Linked::VERSION
9
- spec.authors = ["Sebastian Lindberg"]
10
- spec.email = ["seb.lindberg@gmail.com"]
11
+ spec.authors = ['Sebastian Lindberg']
12
+ spec.email = ['seb.lindberg@gmail.com']
11
13
 
12
- spec.summary = %q{Yet another linked list implementation in Ruby.}
13
- spec.description = %q{Yes, there are a lot of linked list implementaions out there but I wrote my own all the same. This library is ment to be subclassed/included by other objects that that behave like linked lists.}
14
- spec.homepage = "https://github.com/seblindberg/ruby-linked"
15
- spec.license = "MIT"
14
+ spec.summary = 'Yet another linked list implementation in Ruby.'
15
+ spec.description = 'Yes, there are a lot of linked list implementaions ' \
16
+ 'out there but I wrote my own all the same. This ' \
17
+ 'library is ment to be subclassed/included by other ' \
18
+ 'objects that that behave like linked lists.'
19
+ spec.homepage = 'https://github.com/seblindberg/ruby-linked'
20
+ spec.license = 'MIT'
16
21
 
17
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
- spec.bindir = "exe"
22
+ spec.files = `git ls-files -z`
23
+ .split("\x0")
24
+ .reject { |f| f.match(%r{^(test|spec|features)/}) }
25
+ spec.bindir = 'exe'
19
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
- spec.require_paths = ["lib"]
27
+ spec.require_paths = ['lib']
28
+
29
+ spec.metadata['yard.run'] = 'yri'
21
30
 
22
- spec.add_development_dependency "bundler", "~> 1.12"
23
- spec.add_development_dependency "rake", "~> 10.0"
24
- spec.add_development_dependency "minitest", "~> 5.0"
25
- spec.add_development_dependency "coveralls", "~> 0.8"
31
+ spec.add_development_dependency 'bundler', '~> 1.12'
32
+ spec.add_development_dependency 'coveralls', '~> 0.8'
33
+ spec.add_development_dependency 'minitest', '~> 5.0'
34
+ spec.add_development_dependency 'rake', '~> 10.0'
35
+ spec.add_development_dependency 'rubocop', '~> 0.52'
36
+ spec.add_development_dependency 'simplecov', '~> 0.9'
37
+ spec.add_development_dependency 'yard', '~> 0.9'
26
38
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: linked
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Lindberg
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-08-12 00:00:00.000000000 Z
11
+ date: 2018-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -25,19 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.12'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: coveralls
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '0.8'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0.8'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -53,19 +53,61 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: coveralls
56
+ name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.8'
61
+ version: '10.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.8'
68
+ version: '10.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.52'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.52'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.9'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.9'
97
+ - !ruby/object:Gem::Dependency
98
+ name: yard
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.9'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.9'
69
111
  description: Yes, there are a lot of linked list implementaions out there but I wrote
70
112
  my own all the same. This library is ment to be subclassed/included by other objects
71
113
  that that behave like linked lists.
@@ -76,6 +118,7 @@ extensions: []
76
118
  extra_rdoc_files: []
77
119
  files:
78
120
  - ".gitignore"
121
+ - ".rubocop.yml"
79
122
  - ".travis.yml"
80
123
  - Gemfile
81
124
  - LICENSE.txt
@@ -86,14 +129,16 @@ files:
86
129
  - lib/linked.rb
87
130
  - lib/linked/item.rb
88
131
  - lib/linked/list.rb
89
- - lib/linked/list/eol.rb
132
+ - lib/linked/list_enumerable.rb
90
133
  - lib/linked/listable.rb
134
+ - lib/linked/util.rb
91
135
  - lib/linked/version.rb
92
136
  - linked.gemspec
93
137
  homepage: https://github.com/seblindberg/ruby-linked
94
138
  licenses:
95
139
  - MIT
96
- metadata: {}
140
+ metadata:
141
+ yard.run: yri
97
142
  post_install_message:
98
143
  rdoc_options: []
99
144
  require_paths:
@@ -110,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
155
  version: '0'
111
156
  requirements: []
112
157
  rubyforge_project:
113
- rubygems_version: 2.5.1
158
+ rubygems_version: 2.7.3
114
159
  signing_key:
115
160
  specification_version: 4
116
161
  summary: Yet another linked list implementation in Ruby.
@@ -1,84 +0,0 @@
1
- module Linked
2
- class List
3
- # End Of List
4
- #
5
- # This class implements a special list item that is placed at both the end
6
- # and the beginning of a chain of listable items to form a list. The naming
7
- # (end of list) comes from the fact that this object, by returning true for
8
- # calls to #nil?, signifies the end of a list of Items. In both directions
9
- # as a matter of fact, which is why the head and tail objects defined by
10
- # Item are combined into one.
11
- #
12
- # In a nutshell, the structure looks something like this:
13
- #
14
- # +-------------------- EOL --------------------+
15
- # | (head) (tail) |
16
- # +---------------------------------------------+
17
- # ^ +-- Item 1 ---+ +-- Item N ---+ ^
18
- # +-| prev | next |<- ... ->| prev | next |-+
19
- # +------+------+ +------+------+
20
-
21
- class EOL
22
- include Listable
23
-
24
- # Calling #delete on the EOL is not supported and would break the
25
- # connection between the list and its items.
26
-
27
- undef delete
28
-
29
- # Creates a new enf-of-list, as part of a list, with no items yet added to
30
- # it.
31
- #
32
- # list - a List object.
33
-
34
- def initialize(list)
35
- super()
36
- self.list = list
37
- reset
38
- end
39
-
40
- # EOL objects will return true when asked if they are nil. This is
41
- # foremost an implementation detail to comply with the requirements of the
42
- # Item class, but also logical in the sense that end-of-list objects are
43
- # not really part of the list, and should therefore be considered nil.
44
- #
45
- # Returns true.
46
-
47
- def nil?
48
- true
49
- end
50
-
51
- # Inserts one or more items at the end of the list.
52
- #
53
- # See Item#append for more details.
54
-
55
- def append(object)
56
- empty? ? super : prev!.append(object)
57
- end
58
-
59
- # Inserts one or more items at the beginning of the list.
60
- #
61
- # See Item#append for more details.
62
-
63
- def prepend(object)
64
- empty? ? super : next!.prepend(object)
65
- end
66
-
67
- # Private helper to reset the EOL to its initial state. This method should
68
- # never be called directly as it leaves the both the list and the items in
69
- # an inconsistant state.
70
-
71
- private def reset
72
- self.prev = self.next = self
73
- end
74
-
75
- # Private helper to check if the item chain is empty.
76
- #
77
- # Return true if the chain is empty, otherwise nil.
78
-
79
- private def empty?
80
- prev!.equal? self
81
- end
82
- end
83
- end
84
- end