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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e055df32c598c2272de0d3d38cc0f9ba46d08958
4
- data.tar.gz: 8c2bcc7bc2aa2dbf3a7bede6cbdf5120acf20f45
3
+ metadata.gz: 0f0da03883a1d722d7e19a157e5d8ff580d070eb
4
+ data.tar.gz: 739fd54ac9201187e8a37360cc9be95bc44ba2f3
5
5
  SHA512:
6
- metadata.gz: 42990e16e543b4022b47ef38b060b8b3ad3f67687bff534e8da28f5d52f6921f8ae74d50e757aced03a0e315418c6575f3c840d6ec30c345a3a7f61de0fc2352
7
- data.tar.gz: fd88410a52834bd7c25e2eef09adc1212514dc6a4590c582a2542a95e8938fe7a544f9a3bcb5260f14622c98ee9b678900479c75667efb1b64ce67c2f0259c0c
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/cacher.rb" />
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/cacher.rb">
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="270">
32
- <caret line="18" column="24" selection-start-line="18" selection-start-column="24" selection-end-line="18" selection-end-column="24" />
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/cacher/node.rb">
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="3" selection-start-line="11" selection-start-column="3" selection-end-line="11" selection-end-column="3" />
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="90">
52
- <caret line="6" column="34" selection-start-line="6" selection-start-column="34" selection-end-line="6" selection-end-column="34" />
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/cacher/version.rb">
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="15" selection-start-line="1" selection-start-column="15" selection-end-line="1" selection-end-column="15" />
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="RunManager" selected="Ruby.cacher">
234
- <configuration default="false" name="cacher" type="RubyRunConfigurationType" factoryName="Ruby" temporary="true">
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/cacher.rb" />
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="4515000" />
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="9734000" />
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="false" />
414
+ <editor active="true" />
413
415
  <layout>
414
- <window_info id="Project" active="true" 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" />
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/cacher.rb">
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/lib/lru/cacher.rb">
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="270">
483
- <caret line="18" column="24" selection-start-line="18" selection-start-column="24" selection-end-line="18" selection-end-column="24" />
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/lib/lru/cacher/node.rb">
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="165">
491
- <caret line="11" column="3" selection-start-line="11" selection-start-column="3" selection-end-line="11" selection-end-column="3" />
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/README.md">
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="330">
499
- <caret line="22" column="18" selection-start-line="22" selection-start-column="18" selection-end-line="22" selection-end-column="18" />
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.gemspec">
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="90">
507
- <caret line="6" column="34" selection-start-line="6" selection-start-column="34" selection-end-line="6" selection-end-column="34" />
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/cacher/version.rb">
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="15" selection-start-line="1" selection-start-column="15" selection-end-line="1" selection-end-column="15" />
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>
@@ -1,4 +1,4 @@
1
- module LRU
1
+ class LRUCacher
2
2
  class Node
3
3
  attr_accessor :value, :next_node, :prev_node, :key
4
4
 
@@ -0,0 +1,3 @@
1
+ class LRUCacher
2
+ VERSION = '1.1.0'
3
+ end
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/cacher/version'
4
+ require 'lru-cacher/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "lru-cacher"
8
- spec.version = LRU::Cacher::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.0.0
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/cacher.rb
64
- - lib/lru/cacher/node.rb
65
- - lib/lru/cacher/version.rb
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:
@@ -1,5 +0,0 @@
1
- module LRU
2
- module Cacher
3
- VERSION = '1.0.0'
4
- end
5
- end
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