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 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