lru-cacher 1.0.0 → 1.1.0
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 +4 -4
- data/.idea/lru-cache.iml +3 -3
- data/.idea/workspace.xml +46 -44
- data/lib/{lru/cacher → lru-cacher}/node.rb +1 -1
- data/lib/lru-cacher/version.rb +3 -0
- data/lib/lru-cacher.rb +60 -0
- data/lru-cacher.gemspec +2 -2
- metadata +4 -4
- data/lib/lru/cacher/version.rb +0 -5
- data/lib/lru/cacher.rb +0 -62
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f0da03883a1d722d7e19a157e5d8ff580d070eb
|
4
|
+
data.tar.gz: 739fd54ac9201187e8a37360cc9be95bc44ba2f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a27393c566a1c2a0b621df697e438d2f2f3ce69b0f065190837cd36110108439f3486d5f405d3bd6ba2085ffbf1d2aac1fe1603a2a0172a8200e086a7cfccc6
|
7
|
+
data.tar.gz: dd71f7c1eb708f9be2a847686a495bbe0c59fb525322757d2bd4eff1a4ae0d3e1feda30b4bf9b3f491c5eaa856ecc4e3df9fc8e28cbb07abd4945691ab179b92
|
data/.idea/lru-cache.iml
CHANGED
@@ -10,10 +10,10 @@
|
|
10
10
|
</facet>
|
11
11
|
</component>
|
12
12
|
<component name="ModuleRunConfigurationManager">
|
13
|
-
<configuration default="false" name="cacher" type="RubyRunConfigurationType" factoryName="Ruby" temporary="true">
|
13
|
+
<configuration default="false" name="lru-cacher" type="RubyRunConfigurationType" factoryName="Ruby" temporary="true">
|
14
14
|
<module name="lru-cache" />
|
15
15
|
<RUBY_RUN_CONFIG NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
16
|
-
<RUBY_RUN_CONFIG NAME="WORK DIR" VALUE="$MODULE_DIR$/lib/lru" />
|
16
|
+
<RUBY_RUN_CONFIG NAME="WORK DIR" VALUE="$MODULE_DIR$/lib/lru-cacher" />
|
17
17
|
<RUBY_RUN_CONFIG NAME="SHOULD_USE_SDK" VALUE="false" />
|
18
18
|
<RUBY_RUN_CONFIG NAME="ALTERN_SDK_NAME" VALUE="" />
|
19
19
|
<RUBY_RUN_CONFIG NAME="myPassParentEnvs" VALUE="true" />
|
@@ -25,7 +25,7 @@
|
|
25
25
|
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
26
26
|
</COVERAGE_PATTERN>
|
27
27
|
</EXTENSION>
|
28
|
-
<RUBY_RUN_CONFIG NAME="SCRIPT_PATH" VALUE="$MODULE_DIR$/lib/lru
|
28
|
+
<RUBY_RUN_CONFIG NAME="SCRIPT_PATH" VALUE="$MODULE_DIR$/lib/lru-cacher.rb" />
|
29
29
|
<RUBY_RUN_CONFIG NAME="SCRIPT_ARGS" VALUE="" />
|
30
30
|
<method />
|
31
31
|
</configuration>
|
data/.idea/workspace.xml
CHANGED
@@ -25,21 +25,21 @@
|
|
25
25
|
</component>
|
26
26
|
<component name="FileEditorManager">
|
27
27
|
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
28
|
-
<file leaf-file-name="cacher.rb" pinned="false" current-in-tab="false">
|
29
|
-
<entry file="file://$PROJECT_DIR$/../lru-cacher/lib/lru
|
28
|
+
<file leaf-file-name="lru-cacher.rb" pinned="false" current-in-tab="false">
|
29
|
+
<entry file="file://$PROJECT_DIR$/../lru-cacher/lib/lru-cacher.rb">
|
30
30
|
<provider selected="true" editor-type-id="text-editor">
|
31
|
-
<state relative-caret-position="
|
32
|
-
<caret line="
|
31
|
+
<state relative-caret-position="885">
|
32
|
+
<caret line="59" column="1" selection-start-line="59" selection-start-column="1" selection-end-line="59" selection-end-column="1" />
|
33
33
|
<folding />
|
34
34
|
</state>
|
35
35
|
</provider>
|
36
36
|
</entry>
|
37
37
|
</file>
|
38
38
|
<file leaf-file-name="node.rb" pinned="false" current-in-tab="false">
|
39
|
-
<entry file="file://$PROJECT_DIR$/../lru-cacher/lib/lru
|
39
|
+
<entry file="file://$PROJECT_DIR$/../lru-cacher/lib/lru-cacher/node.rb">
|
40
40
|
<provider selected="true" editor-type-id="text-editor">
|
41
41
|
<state relative-caret-position="165">
|
42
|
-
<caret line="11" column="
|
42
|
+
<caret line="11" column="28" selection-start-line="11" selection-start-column="3" selection-end-line="11" selection-end-column="3" />
|
43
43
|
<folding />
|
44
44
|
</state>
|
45
45
|
</provider>
|
@@ -48,8 +48,8 @@
|
|
48
48
|
<file leaf-file-name="lru-cacher.gemspec" pinned="false" current-in-tab="false">
|
49
49
|
<entry file="file://$PROJECT_DIR$/../lru-cacher/lru-cacher.gemspec">
|
50
50
|
<provider selected="true" editor-type-id="text-editor">
|
51
|
-
<state relative-caret-position="
|
52
|
-
<caret line="
|
51
|
+
<state relative-caret-position="105">
|
52
|
+
<caret line="7" column="27" selection-start-line="7" selection-start-column="27" selection-end-line="7" selection-end-column="27" />
|
53
53
|
<folding />
|
54
54
|
</state>
|
55
55
|
</provider>
|
@@ -66,10 +66,10 @@
|
|
66
66
|
</entry>
|
67
67
|
</file>
|
68
68
|
<file leaf-file-name="version.rb" pinned="false" current-in-tab="true">
|
69
|
-
<entry file="file://$PROJECT_DIR$/../lru-cacher/lib/lru
|
69
|
+
<entry file="file://$PROJECT_DIR$/../lru-cacher/lib/lru-cacher/version.rb">
|
70
70
|
<provider selected="true" editor-type-id="text-editor">
|
71
71
|
<state relative-caret-position="15">
|
72
|
-
<caret line="1" column="
|
72
|
+
<caret line="1" column="16" selection-start-line="1" selection-start-column="16" selection-end-line="1" selection-end-column="16" />
|
73
73
|
<folding />
|
74
74
|
</state>
|
75
75
|
</provider>
|
@@ -119,6 +119,10 @@
|
|
119
119
|
<option value="$PROJECT_DIR$/../lru-cacher/lru-cache.gemspec" />
|
120
120
|
<option value="$PROJECT_DIR$/../lru-cacher/README.md" />
|
121
121
|
<option value="$PROJECT_DIR$/../lru-cacher/lib/lru/cacher/version.rb" />
|
122
|
+
<option value="$PROJECT_DIR$/../lru-cacher/lib/lru-cacher/node.rb" />
|
123
|
+
<option value="$PROJECT_DIR$/../lru-cacher/lru-cacher.gemspec" />
|
124
|
+
<option value="$PROJECT_DIR$/../lru-cacher/lib/lru-cacher.rb" />
|
125
|
+
<option value="$PROJECT_DIR$/../lru-cacher/lib/lru-cacher/version.rb" />
|
122
126
|
</list>
|
123
127
|
</option>
|
124
128
|
</component>
|
@@ -189,10 +193,6 @@
|
|
189
193
|
<option name="myItemId" value="lib" />
|
190
194
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
191
195
|
</PATH_ELEMENT>
|
192
|
-
<PATH_ELEMENT>
|
193
|
-
<option name="myItemId" value="lru" />
|
194
|
-
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
195
|
-
</PATH_ELEMENT>
|
196
196
|
</PATH>
|
197
197
|
<PATH>
|
198
198
|
<PATH_ELEMENT>
|
@@ -208,11 +208,7 @@
|
|
208
208
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
209
209
|
</PATH_ELEMENT>
|
210
210
|
<PATH_ELEMENT>
|
211
|
-
<option name="myItemId" value="lru" />
|
212
|
-
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
213
|
-
</PATH_ELEMENT>
|
214
|
-
<PATH_ELEMENT>
|
215
|
-
<option name="myItemId" value="cacher" />
|
211
|
+
<option name="myItemId" value="lru-cacher" />
|
216
212
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
217
213
|
</PATH_ELEMENT>
|
218
214
|
</PATH>
|
@@ -230,11 +226,17 @@
|
|
230
226
|
<property name="settings.editor.splitter.proportion" value="0.2" />
|
231
227
|
<property name="WebServerToolWindowFactoryState" value="false" />
|
232
228
|
</component>
|
233
|
-
<component name="
|
234
|
-
<
|
229
|
+
<component name="RecentsManager">
|
230
|
+
<key name="MoveFile.RECENT_KEYS">
|
231
|
+
<recent name="$PROJECT_DIR$/../lru-cacher/lib" />
|
232
|
+
<recent name="$PROJECT_DIR$/../lru-cacher/lib/lru-cacher" />
|
233
|
+
</key>
|
234
|
+
</component>
|
235
|
+
<component name="RunManager" selected="Ruby.lru-cacher">
|
236
|
+
<configuration default="false" name="lru-cacher" type="RubyRunConfigurationType" factoryName="Ruby" temporary="true">
|
235
237
|
<module name="lru-cache" />
|
236
238
|
<RUBY_RUN_CONFIG NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
237
|
-
<RUBY_RUN_CONFIG NAME="WORK DIR" VALUE="$MODULE_DIR$/lib/lru" />
|
239
|
+
<RUBY_RUN_CONFIG NAME="WORK DIR" VALUE="$MODULE_DIR$/lib/lru-cacher" />
|
238
240
|
<RUBY_RUN_CONFIG NAME="SHOULD_USE_SDK" VALUE="false" />
|
239
241
|
<RUBY_RUN_CONFIG NAME="ALTERN_SDK_NAME" VALUE="" />
|
240
242
|
<RUBY_RUN_CONFIG NAME="myPassParentEnvs" VALUE="true" />
|
@@ -246,7 +248,7 @@
|
|
246
248
|
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
247
249
|
</COVERAGE_PATTERN>
|
248
250
|
</EXTENSION>
|
249
|
-
<RUBY_RUN_CONFIG NAME="SCRIPT_PATH" VALUE="$MODULE_DIR$/lib/lru
|
251
|
+
<RUBY_RUN_CONFIG NAME="SCRIPT_PATH" VALUE="$MODULE_DIR$/lib/lru-cacher.rb" />
|
250
252
|
<RUBY_RUN_CONFIG NAME="SCRIPT_ARGS" VALUE="" />
|
251
253
|
<method />
|
252
254
|
</configuration>
|
@@ -381,11 +383,11 @@
|
|
381
383
|
<method />
|
382
384
|
</configuration>
|
383
385
|
<list size="1">
|
384
|
-
<item index="0" class="java.lang.String" itemvalue="Ruby.cacher" />
|
386
|
+
<item index="0" class="java.lang.String" itemvalue="Ruby.lru-cacher" />
|
385
387
|
</list>
|
386
388
|
<recent_temporary>
|
387
389
|
<list size="1">
|
388
|
-
<item index="0" class="java.lang.String" itemvalue="Ruby.cacher" />
|
390
|
+
<item index="0" class="java.lang.String" itemvalue="Ruby.lru-cacher" />
|
389
391
|
</list>
|
390
392
|
</recent_temporary>
|
391
393
|
</component>
|
@@ -400,18 +402,18 @@
|
|
400
402
|
<option name="presentableId" value="Default" />
|
401
403
|
<updated>1464036635817</updated>
|
402
404
|
<workItem from="1464036637044" duration="5219000" />
|
403
|
-
<workItem from="1464056831515" duration="
|
405
|
+
<workItem from="1464056831515" duration="6856000" />
|
404
406
|
</task>
|
405
407
|
<servers />
|
406
408
|
</component>
|
407
409
|
<component name="TimeTrackingManager">
|
408
|
-
<option name="totallyTimeSpent" value="
|
410
|
+
<option name="totallyTimeSpent" value="12075000" />
|
409
411
|
</component>
|
410
412
|
<component name="ToolWindowManager">
|
411
413
|
<frame x="0" y="23" width="1680" height="963" extended-state="0" />
|
412
|
-
<editor active="
|
414
|
+
<editor active="true" />
|
413
415
|
<layout>
|
414
|
-
<window_info id="Project" active="
|
416
|
+
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.18376069" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
415
417
|
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
416
418
|
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3289941" sideWeight="0.5" order="9" side_tool="true" content_ui="tabs" />
|
417
419
|
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
@@ -445,7 +447,7 @@
|
|
445
447
|
</watches-manager>
|
446
448
|
</component>
|
447
449
|
<component name="editorHistoryManager">
|
448
|
-
<entry file="file://$PROJECT_DIR$/../lru-cacher/lib/lru
|
450
|
+
<entry file="file://$PROJECT_DIR$/../lru-cacher/lib/lru-cacher.rb">
|
449
451
|
<provider selected="true" editor-type-id="text-editor">
|
450
452
|
<state relative-caret-position="0">
|
451
453
|
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
@@ -477,42 +479,42 @@
|
|
477
479
|
</state>
|
478
480
|
</provider>
|
479
481
|
</entry>
|
480
|
-
<entry file="file://$PROJECT_DIR$/../lru-cacher/
|
482
|
+
<entry file="file://$PROJECT_DIR$/../lru-cacher/README.md">
|
481
483
|
<provider selected="true" editor-type-id="text-editor">
|
482
|
-
<state relative-caret-position="
|
483
|
-
<caret line="
|
484
|
+
<state relative-caret-position="330">
|
485
|
+
<caret line="22" column="18" selection-start-line="22" selection-start-column="18" selection-end-line="22" selection-end-column="18" />
|
484
486
|
<folding />
|
485
487
|
</state>
|
486
488
|
</provider>
|
487
489
|
</entry>
|
488
|
-
<entry file="file://$PROJECT_DIR$/../lru-cacher/
|
490
|
+
<entry file="file://$PROJECT_DIR$/../lru-cacher/lru-cacher.gemspec">
|
489
491
|
<provider selected="true" editor-type-id="text-editor">
|
490
|
-
<state relative-caret-position="
|
491
|
-
<caret line="
|
492
|
+
<state relative-caret-position="105">
|
493
|
+
<caret line="7" column="27" selection-start-line="7" selection-start-column="27" selection-end-line="7" selection-end-column="27" />
|
492
494
|
<folding />
|
493
495
|
</state>
|
494
496
|
</provider>
|
495
497
|
</entry>
|
496
|
-
<entry file="file://$PROJECT_DIR$/../lru-cacher/
|
498
|
+
<entry file="file://$PROJECT_DIR$/../lru-cacher/lib/lru-cacher.rb">
|
497
499
|
<provider selected="true" editor-type-id="text-editor">
|
498
|
-
<state relative-caret-position="
|
499
|
-
<caret line="
|
500
|
+
<state relative-caret-position="885">
|
501
|
+
<caret line="59" column="1" selection-start-line="59" selection-start-column="1" selection-end-line="59" selection-end-column="1" />
|
500
502
|
<folding />
|
501
503
|
</state>
|
502
504
|
</provider>
|
503
505
|
</entry>
|
504
|
-
<entry file="file://$PROJECT_DIR$/../lru-cacher/lru-cacher.
|
506
|
+
<entry file="file://$PROJECT_DIR$/../lru-cacher/lib/lru-cacher/node.rb">
|
505
507
|
<provider selected="true" editor-type-id="text-editor">
|
506
|
-
<state relative-caret-position="
|
507
|
-
<caret line="
|
508
|
+
<state relative-caret-position="165">
|
509
|
+
<caret line="11" column="28" selection-start-line="11" selection-start-column="3" selection-end-line="11" selection-end-column="3" />
|
508
510
|
<folding />
|
509
511
|
</state>
|
510
512
|
</provider>
|
511
513
|
</entry>
|
512
|
-
<entry file="file://$PROJECT_DIR$/../lru-cacher/lib/lru
|
514
|
+
<entry file="file://$PROJECT_DIR$/../lru-cacher/lib/lru-cacher/version.rb">
|
513
515
|
<provider selected="true" editor-type-id="text-editor">
|
514
516
|
<state relative-caret-position="15">
|
515
|
-
<caret line="1" column="
|
517
|
+
<caret line="1" column="16" selection-start-line="1" selection-start-column="16" selection-end-line="1" selection-end-column="16" />
|
516
518
|
<folding />
|
517
519
|
</state>
|
518
520
|
</provider>
|
data/lib/lru-cacher.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'lru-cacher/node'
|
2
|
+
class LRUCacher
|
3
|
+
attr_accessor :head, :tail, :max_items, :table
|
4
|
+
|
5
|
+
def initialize(max_items)
|
6
|
+
@max_items = max_items
|
7
|
+
@table = {}
|
8
|
+
@head = nil
|
9
|
+
@tail = nil
|
10
|
+
end
|
11
|
+
|
12
|
+
def set(key, value)
|
13
|
+
if @table.size > @max_items
|
14
|
+
@table.delete @head.key
|
15
|
+
@head = @head.next_node
|
16
|
+
end
|
17
|
+
if !@table.key?(key)
|
18
|
+
new_node = LRUCacher::Node.new value, key, @tail, nil
|
19
|
+
else
|
20
|
+
new_node = @table[key]
|
21
|
+
new_node.value = value
|
22
|
+
end
|
23
|
+
@head = new_node if @tail == nil
|
24
|
+
@tail.next_node = new_node if @tail != nil
|
25
|
+
@tail = new_node
|
26
|
+
@table[key] = new_node
|
27
|
+
end
|
28
|
+
|
29
|
+
def get(key)
|
30
|
+
current_node = @table[key]
|
31
|
+
if current_node
|
32
|
+
return current_node if current_node.next_node == nil
|
33
|
+
if current_node.prev_node != nil
|
34
|
+
current_node.prev_node.next_node = current_node.next_node
|
35
|
+
else
|
36
|
+
@head = current_node.next_node
|
37
|
+
@head.prev_node = nil
|
38
|
+
end
|
39
|
+
@tail.next_node = current_node
|
40
|
+
current_node.next_node = nil
|
41
|
+
current_node.prev_node = @tail
|
42
|
+
@tail = current_node
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def delete(key)
|
47
|
+
current_node = @table[key]
|
48
|
+
if current_node
|
49
|
+
if @head == current_node
|
50
|
+
@head = current_node.next_node
|
51
|
+
elsif @tail == current_node
|
52
|
+
@tail = current_node.prev_node
|
53
|
+
else
|
54
|
+
current_node.prev_node.next_node = current_node.next_node
|
55
|
+
current_node.next_node.prev_node = current_node.prev_node
|
56
|
+
end
|
57
|
+
@table.delete(key)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/lru-cacher.gemspec
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'lru
|
4
|
+
require 'lru-cacher/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "lru-cacher"
|
8
|
-
spec.version =
|
8
|
+
spec.version = LRUCacher::VERSION
|
9
9
|
spec.authors = ["Manther"]
|
10
10
|
spec.email = ["jason.manther.young@gmail.com"]
|
11
11
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lru-cacher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Manther
|
@@ -60,9 +60,9 @@ files:
|
|
60
60
|
- Rakefile
|
61
61
|
- bin/console
|
62
62
|
- bin/setup
|
63
|
-
- lib/lru
|
64
|
-
- lib/lru
|
65
|
-
- lib/lru
|
63
|
+
- lib/lru-cacher.rb
|
64
|
+
- lib/lru-cacher/node.rb
|
65
|
+
- lib/lru-cacher/version.rb
|
66
66
|
- lru-cacher.gemspec
|
67
67
|
homepage: https://github.com/Manther/lru-cache
|
68
68
|
licenses:
|
data/lib/lru/cacher/version.rb
DELETED
data/lib/lru/cacher.rb
DELETED
@@ -1,62 +0,0 @@
|
|
1
|
-
require 'lru/cache/node'
|
2
|
-
module LRU
|
3
|
-
class Cacher
|
4
|
-
attr_accessor :head, :tail, :max_items, :table
|
5
|
-
|
6
|
-
def initialize(max_items)
|
7
|
-
@max_items = max_items
|
8
|
-
@table = {}
|
9
|
-
@head = nil
|
10
|
-
@tail = nil
|
11
|
-
end
|
12
|
-
|
13
|
-
def set(key, value)
|
14
|
-
if @table.size > @max_items
|
15
|
-
@table.delete @head.key
|
16
|
-
@head = @head.next_node
|
17
|
-
end
|
18
|
-
if !@table.key?(key)
|
19
|
-
new_node = LRU::Node.new value, key, @tail, nil
|
20
|
-
else
|
21
|
-
new_node = @table[key]
|
22
|
-
new_node.value = value
|
23
|
-
end
|
24
|
-
@head = new_node if @tail == nil
|
25
|
-
@tail.next_node = new_node if @tail != nil
|
26
|
-
@tail = new_node
|
27
|
-
@table[key] = new_node
|
28
|
-
end
|
29
|
-
|
30
|
-
def get(key)
|
31
|
-
current_node = @table[key]
|
32
|
-
if current_node
|
33
|
-
return current_node if current_node.next_node == nil
|
34
|
-
if current_node.prev_node != nil
|
35
|
-
current_node.prev_node.next_node = current_node.next_node
|
36
|
-
else
|
37
|
-
@head = current_node.next_node
|
38
|
-
@head.prev_node = nil
|
39
|
-
end
|
40
|
-
@tail.next_node = current_node
|
41
|
-
current_node.next_node = nil
|
42
|
-
current_node.prev_node = @tail
|
43
|
-
@tail = current_node
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def delete(key)
|
48
|
-
current_node = @table[key]
|
49
|
-
if current_node
|
50
|
-
if @head == current_node
|
51
|
-
@head = current_node.next_node
|
52
|
-
elsif @tail == current_node
|
53
|
-
@tail = current_node.prev_node
|
54
|
-
else
|
55
|
-
current_node.prev_node.next_node = current_node.next_node
|
56
|
-
current_node.next_node.prev_node = current_node.prev_node
|
57
|
-
end
|
58
|
-
@table.delete(key)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|