linked 0.4.0 → 0.5.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.
@@ -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