lru-cacher 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|