foobara-lru-cache 0.0.2 → 1.0.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
  SHA256:
3
- metadata.gz: ad9e286058d8549c8afada45a9f4f648f0b5e74966e55ae306912f7b70ef0f9e
4
- data.tar.gz: f90e2f9c733371f785d7a11b788f1289f33ad011256b28cefb986ecf73216645
3
+ metadata.gz: 3fd52863c57fef5ebf89300971b3a1909d1b058164f3fc4f0a89b9412a964156
4
+ data.tar.gz: d274bf70bd2933271c9b410eda41b94a1157e1a1cf425966882037bb567824a9
5
5
  SHA512:
6
- metadata.gz: c0bc7897734a9685fc710092f1b208694c567dbdfabdfac87357484011f67cbee0ed36edb9563614914965266faeb6af322ac0095c2c653cfb8f76902bae513e
7
- data.tar.gz: 6ef2c8384a6a9a978fcb314e54ff64ced52e6e7c06073d4beb9faf41e2959fdfb565ae7bcf302c127d6d9d27809e9f71fd13e45fa8e6a5fd8e42a269fd3aa87e
6
+ metadata.gz: 79427815520d395a417da9334508e0fc009f6972585685c8301b01ecfa07bce54a1334cf8214c2c2288540d534da94ae45d417b61141ac55d4b953a976deddc5
7
+ data.tar.gz: 161728aa38fbc22aa2fab42df16756969e6e55fb328b941d2b42b1f5c4dcded770702953e85e4faca44135c216b6d7261b1bb0ad02756cff91b4b15373913de3
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## [1.0.0] - 2025-08-10
2
+
3
+ - Add #get/#set_if_missing to facilitate non-block use-cases
4
+
1
5
  ## [0.0.2] - 2025-02-28
2
6
 
3
7
  - Fix bug that corrupts the cache
@@ -30,6 +30,7 @@ module Foobara
30
30
  end
31
31
 
32
32
  value = yield
33
+
33
34
  mutex.synchronize do
34
35
  if @key_to_node.key?(key)
35
36
  node = @key_to_node[key]
@@ -48,6 +49,26 @@ module Foobara
48
49
  @key_to_node.key?(key)
49
50
  end
50
51
 
52
+ def get(key)
53
+ mutex.synchronize do
54
+ if @key_to_node.key?(key)
55
+ node = @key_to_node[key]
56
+ move_node_to_front(node)
57
+ return true, node.value
58
+ end
59
+ end
60
+ end
61
+
62
+ def set_if_missing(key, value)
63
+ mutex.synchronize do
64
+ unless @key_to_node.key?(key)
65
+ node = Node.new(key, value)
66
+ @key_to_node[key] = node
67
+ prepend_node(node)
68
+ end
69
+ end
70
+ end
71
+
51
72
  def reset!
52
73
  mutex.synchronize do
53
74
  @size = 0
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foobara-lru-cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Georgi
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-02-28 00:00:00.000000000 Z
10
+ date: 2025-08-10 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  email:
13
13
  - azimux@gmail.com
@@ -43,7 +43,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
43
43
  - !ruby/object:Gem::Version
44
44
  version: '0'
45
45
  requirements: []
46
- rubygems_version: 3.6.3
46
+ rubygems_version: 3.6.2
47
47
  specification_version: 4
48
48
  summary: Basic least-recently-used cache implementation
49
49
  test_files: []