mize 0.4.1 → 0.5.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
  SHA256:
3
- metadata.gz: b6801c5af1f329caa1ee938a76571ce85883bb6de8f6084c3bde227923136e88
4
- data.tar.gz: 32a2c0ac847bfbcdb23f0758dfa4f7c416fbadfa771bf1fbe6e0b47dd6e06200
3
+ metadata.gz: 9eddd37dbe3b1119706e25a105cfd49256c42a401ded5ddba30d479c36ba93b5
4
+ data.tar.gz: 936a9c5c05083e2f30c1dd1f007b65de80ed2cfb5019a39db948329d6529f5a1
5
5
  SHA512:
6
- metadata.gz: 8c88a8042b29f17f2ba1399d455d8d3c9faa38ff64790feea6cccb03751926e69661241f1ddf1223f8414f77c1296503fbda7849c4d932759c2348fe337ec244
7
- data.tar.gz: 8f2c43358d0e21aead7e762745c58e22d2cf3e4f53da1f512a1b4f23bfb989db1166969b7e1aea347445d0fb22849e5c4da896c1af3e8d55417552a120ce85a1
6
+ metadata.gz: df782c8ad0f19a9fc3deb9fb7131d5be1f0eb917d25820396e0e98a06ec7c3acda41f3345c4492dac770130d69bbd8099e58763db5edf5a7ff3d38f6fc9a2ff5
7
+ data.tar.gz: 44395da5d9a27704881ae98d3b029cac200e4d29af29b9cda24cd2b304b7254be7a159032a53aa0deb46830aaee790a06252e220c9ef2beb2eaf5a34083f43d1
data/.all_images.yml CHANGED
@@ -1,23 +1,29 @@
1
1
  dockerfile: |-
2
- RUN apk add --no-cache build-base git
3
- RUN gem update --system
4
- RUN gem install gem_hadar bundler
2
+ RUN apk add --no-cache build-base git bash
3
+ RUN bash <<NUR
4
+ if [[ "$(ruby -e 'print RUBY_VERSION')" > '3' ]]
5
+ then
6
+ gem update --system
7
+ gem install gem_hadar bundler
8
+ else
9
+ gem install gem_hadar
10
+ gem install bundler -v 2.4.22
11
+ fi
12
+ NUR
5
13
 
6
14
  script: &script |-
7
15
  echo -e "\e[1m"
8
16
  ruby -v
9
17
  echo -e "\e[0m"
10
- bundle update
11
18
  bundle
12
- bundle exec rake spec
19
+ rake spec
13
20
 
14
21
  fail_fast: yes
15
22
 
16
23
  images:
24
+ ruby:3.3-alpine: *script
25
+ ruby:3.2-alpine: *script
17
26
  ruby:3.1-alpine: *script
18
27
  ruby:3.0-alpine: *script
19
28
  ruby:2.7-alpine: *script
20
29
  ruby:2.6-alpine: *script
21
- ruby:2.5-alpine: *script
22
- ruby:2.4-alpine: *script
23
- ruby:2.3-alpine: *script
data/.gitignore CHANGED
@@ -5,6 +5,8 @@
5
5
  .yard*
6
6
  Gemfile.lock
7
7
  coverage
8
+ doc
8
9
  errors.lst
9
10
  pkg
10
11
  tags
12
+ yard
data/.tool-versions CHANGED
@@ -1 +1 @@
1
- ruby 3.1.2
1
+ ruby 3.3.4
data/.utilsrc CHANGED
@@ -1,12 +1,12 @@
1
1
  # vim: set ft=ruby:
2
2
 
3
3
  search do
4
- prune_dirs /\A(\.svn|\.git|CVS|tmp|tags|coverage|pkg)\z/
4
+ prune_dirs /\A(\.svn|\.git|CVS|tmp|tags|coverage|doc|pkg)\z/
5
5
  skip_files /(\A\.|\.sw[pon]\z|\.(log|fnm|jpg|jpeg|png|pdf|svg)\z|tags|~\z)/i
6
6
  end
7
7
 
8
8
  discover do
9
- prune_dirs /\A(\.svn|\.git|CVS|tmp|tags|coverage|pkg)\z/
9
+ prune_dirs /\A(\.svn|\.git|CVS|tmp|tags|coverage|doc|pkg)\z/
10
10
  skip_files /(\A\.|\.sw[pon]\z|\.log\z|~\z)/
11
11
  binary false
12
12
  end
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Description
4
4
 
5
- TODO
5
+ Library to memoize methods or functions in Ruby.
6
6
 
7
7
  ## Installation
8
8
 
@@ -18,7 +18,52 @@ and bundle.
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO
21
+ Memoizes methods, that is the values depend on the receiver, like this:
22
+
23
+ ```
24
+ class A
25
+ @@c = 0
26
+
27
+ memoize method:
28
+ def foo(x)
29
+ "foo #{x} #{@@c += 1}"
30
+ end
31
+ end
32
+
33
+ a1 = A.new
34
+ a1.foo(23) # => "foo 23 1"
35
+ a1.foo(23) # => "foo 23 1"
36
+ a2 = A.new
37
+ a2.foo(23) # => "foo 23 2"
38
+ a2.foo(23) # => "foo 23 2"
39
+ a2.mize_cache_clear
40
+ a2.foo(23) # => "foo 23 3"
41
+ a1.foo(23) # => "foo 23 1"
42
+ ```
43
+
44
+ Memoizes functions, that is the values do not depend on the receiver, like
45
+ this:
46
+
47
+ ```
48
+ class B
49
+ @@c = 0
50
+
51
+ memoize function:
52
+ def foo(x)
53
+ "foo #{x} #{@@c += 1}"
54
+ end
55
+ end
56
+
57
+ b1 = B.new
58
+ b1.foo(23) # => "foo 23 1"
59
+ b1.foo(23) # => "foo 23 1"
60
+ b2 = B.new
61
+ b2.foo(23) # => "foo 23 1"
62
+ b2.foo(23) # => "foo 23 1"
63
+ B.mize_cache_clear
64
+ b2.foo(23) # => "foo 23 2"
65
+ b1.foo(23) # => "foo 23 2"
66
+ ```
22
67
 
23
68
  ## Download
24
69
 
data/Rakefile CHANGED
@@ -6,18 +6,20 @@ GemHadar do
6
6
  name 'mize'
7
7
  author 'Florian Frank'
8
8
  email 'flori@ping.de'
9
- homepage "http://flori.github.com/#{name}"
9
+ homepage "https://github.com/flori/#{name}"
10
10
  summary 'Library that provides memoziation for methods and functions'
11
11
  description "#{summary} for Ruby."
12
12
  readme 'README.md'
13
13
  licenses << 'MIT'
14
14
 
15
15
  test_dir 'spec'
16
+ yard_dir 'doc'
17
+
16
18
  ignore '.*.sw[pon]', 'pkg', 'Gemfile.lock', 'coverage', '.rvmrc',
17
- '.AppleDouble', 'tags', '.byebug_history', '.yard*', 'errors.lst'
19
+ '.AppleDouble', 'tags', '.byebug_history', '.yard*', 'yard', 'doc',
20
+ 'errors.lst'
18
21
 
19
22
 
20
- dependency 'protocol', '~> 2.0'
21
23
  development_dependency 'rake'
22
24
  development_dependency 'simplecov'
23
25
  development_dependency 'rspec'
@@ -27,29 +29,4 @@ GemHadar do
27
29
  required_ruby_version '>= 2'
28
30
  end
29
31
 
30
- namespace :yard do
31
- require 'pathname'
32
-
33
- yard_dir = Pathname.new('yard')
34
-
35
- desc 'Create yard documentation'
36
- task :create do
37
- sh 'yardoc'
38
- end
39
-
40
- desc 'View the yard documentation'
41
- task :view do
42
- index_file = yard_dir + 'index.html'
43
- File.exist?(index_file)
44
- sh "open #{index_file}"
45
- end
46
-
47
- desc 'Clean the yard documentation'
48
- task :clean do
49
- rm_rf yard_dir
50
- end
51
- end
52
-
53
- task :yard => %i[ yard:create yard:view ]
54
-
55
32
  task :default => :spec
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.1
1
+ 0.5.0
@@ -21,7 +21,6 @@ module Mize::CacheMethods
21
21
 
22
22
  # Set the cache object to +cache+.
23
23
  def __mize_cache__=(cache)
24
- Mize::CacheProtocol =~ cache
25
24
  @__mize_cache__ = cache
26
25
  end
27
26
 
@@ -1,32 +1,2 @@
1
- require 'protocol'
2
-
3
- # The protocol the cache object has to conform to. This is a minimal subset of
4
- # the ActiveSupport::Cache::Store protocol.
5
- Mize::CacheProtocol = Protocol do
6
- # Clear the entire cache.
7
- def clear(options = nil)
8
- end
9
-
10
- # Returns true if the cache contains an entry for the given key.
11
- def exist?(name, options = nil)
12
- end
13
-
14
- # Fetches data from the cache, using the given key. If there is data in the
15
- # cache with the given key, then that data is returned. Otherwise, nil is
16
- # returned.
17
- def read(name, options = nil)
18
- end
19
-
20
- # Writes the value to the cache, with the key.
21
- def write(name, value, options = nil)
22
- end
23
-
24
- # Iterate over all cache entries and yield to their names.
25
- def each_name(&block)
26
- end
27
-
28
- # Return another cache instance that was correctly configured.
29
- def prototype
30
- dup
31
- end
1
+ module Mize::CacheProtocol
32
2
  end
@@ -1,44 +1,68 @@
1
1
  require 'monitor'
2
2
 
3
3
  class Mize::DefaultCache
4
+ include Mize::CacheProtocol
4
5
  include MonitorMixin
5
6
 
6
7
  def initialize
7
8
  @data = {}
8
9
  end
9
10
 
11
+ # Clear the cache by removing all entries from the cache
10
12
  def clear(options = nil)
11
13
  @data.clear
12
14
  self
13
15
  end
14
16
 
17
+ # Determine whether a cache entry exists in this cache.
18
+ #
19
+ # @param name [String] The name of the cache entry to check.
20
+ # @return [Boolean] Whether or not the cache entry exists.
15
21
  def exist?(name, options = nil)
16
22
  @data.key?(name)
17
23
  end
18
24
 
25
+ # Read a value from the cache by name. If the entry does not exist in the
26
+ # cache, it will return nil.
27
+ #
28
+ # @param name [String] The name of the cache entry to read.
29
+ # @return [Object] The value stored in the cache for the given name.
19
30
  def read(name, options = nil)
20
31
  @data.fetch(name, nil)
21
32
  end
22
33
 
34
+ # Write a value to the cache by name. If an entry with the same name already
35
+ # exists in the cache, it will be overwritten.
36
+ #
37
+ # @param name [String] The name of the cache entry to write.
38
+ # @param value [Object] The value to store in the cache for the given name.
39
+ # @return [Object] The value stored in the chache.
23
40
  def write(name, value, options = nil)
24
41
  @data.store(name, value)
25
42
  end
26
43
 
44
+ # Delete a cache entry by name. If the entry does not exist in the cache, it
45
+ # will do nothing.
46
+ #
47
+ # @param name [String] The name of the cache entry to delete.
48
+ # @return [Object] The value stored in the chache before deletion.
27
49
  def delete(name, options = nil)
28
50
  @data.delete(name)
29
51
  end
30
52
 
53
+ # Each name of the cache is yielded to the block.
54
+ # @return [self]
31
55
  def each_name(&block)
32
56
  @data.each_key(&block)
33
57
  self
34
58
  end
35
59
 
60
+ # Initialize a duplicate of this cache.
61
+ # @param other [Mize::DefaultCache] The other cache to initialize a duplicate of.
36
62
  def initialize_dup(other)
37
63
  super
38
64
  other.instance_variable_set :@data, @data.dup
39
65
  end
40
66
 
41
67
  alias prototype dup
42
-
43
- conform_to Mize::CacheProtocol
44
68
  end
data/lib/mize/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Mize
2
2
  # Mize version
3
- VERSION = '0.4.1'
3
+ VERSION = '0.5.0'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
data/mize.gemspec CHANGED
@@ -1,45 +1,32 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: mize 0.4.1 ruby lib
2
+ # stub: mize 0.5.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "mize".freeze
6
- s.version = "0.4.1"
6
+ s.version = "0.5.0".freeze
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
10
10
  s.authors = ["Florian Frank".freeze]
11
- s.date = "2022-11-21"
11
+ s.date = "2024-07-15"
12
12
  s.description = "Library that provides memoziation for methods and functions for Ruby.".freeze
13
13
  s.email = "flori@ping.de".freeze
14
14
  s.extra_rdoc_files = ["README.md".freeze, "lib/mize.rb".freeze, "lib/mize/cache_methods.rb".freeze, "lib/mize/cache_protocol.rb".freeze, "lib/mize/configure.rb".freeze, "lib/mize/default_cache.rb".freeze, "lib/mize/global_clear.rb".freeze, "lib/mize/memoize.rb".freeze, "lib/mize/railtie.rb".freeze, "lib/mize/reload.rb".freeze, "lib/mize/version.rb".freeze]
15
15
  s.files = [".all_images.yml".freeze, ".gitignore".freeze, ".rspec".freeze, ".tool-versions".freeze, ".travis.yml".freeze, ".utilsrc".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "config/broken_config.yml".freeze, "config/config.yml".freeze, "lib/mize.rb".freeze, "lib/mize/cache_methods.rb".freeze, "lib/mize/cache_protocol.rb".freeze, "lib/mize/configure.rb".freeze, "lib/mize/default_cache.rb".freeze, "lib/mize/global_clear.rb".freeze, "lib/mize/memoize.rb".freeze, "lib/mize/railtie.rb".freeze, "lib/mize/reload.rb".freeze, "lib/mize/version.rb".freeze, "mize.gemspec".freeze, "spec/mize/global_clear_spec.rb".freeze, "spec/mize/memoize_method_spec.rb".freeze, "spec/mize/memoize_reload_spec.rb".freeze, "spec/mize/version_spec.rb".freeze, "spec/spec_helper.rb".freeze]
16
- s.homepage = "http://flori.github.com/mize".freeze
16
+ s.homepage = "https://github.com/flori/mize".freeze
17
17
  s.licenses = ["MIT".freeze]
18
18
  s.rdoc_options = ["--title".freeze, "Mize - Library that provides memoziation for methods and functions".freeze, "--main".freeze, "README.md".freeze]
19
19
  s.required_ruby_version = Gem::Requirement.new(">= 2".freeze)
20
- s.rubygems_version = "3.3.17".freeze
20
+ s.rubygems_version = "3.5.11".freeze
21
21
  s.summary = "Library that provides memoziation for methods and functions".freeze
22
22
  s.test_files = ["spec/mize/global_clear_spec.rb".freeze, "spec/mize/memoize_method_spec.rb".freeze, "spec/mize/memoize_reload_spec.rb".freeze, "spec/mize/version_spec.rb".freeze, "spec/spec_helper.rb".freeze]
23
23
 
24
- if s.respond_to? :specification_version then
25
- s.specification_version = 4
26
- end
24
+ s.specification_version = 4
27
25
 
28
- if s.respond_to? :add_runtime_dependency then
29
- s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.12.0"])
30
- s.add_development_dependency(%q<rake>.freeze, [">= 0"])
31
- s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
32
- s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
33
- s.add_development_dependency(%q<yard>.freeze, [">= 0"])
34
- s.add_development_dependency(%q<all_images>.freeze, [">= 0"])
35
- s.add_runtime_dependency(%q<protocol>.freeze, ["~> 2.0"])
36
- else
37
- s.add_dependency(%q<gem_hadar>.freeze, ["~> 1.12.0"])
38
- s.add_dependency(%q<rake>.freeze, [">= 0"])
39
- s.add_dependency(%q<simplecov>.freeze, [">= 0"])
40
- s.add_dependency(%q<rspec>.freeze, [">= 0"])
41
- s.add_dependency(%q<yard>.freeze, [">= 0"])
42
- s.add_dependency(%q<all_images>.freeze, [">= 0"])
43
- s.add_dependency(%q<protocol>.freeze, ["~> 2.0"])
44
- end
26
+ s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.16.0".freeze])
27
+ s.add_development_dependency(%q<rake>.freeze, [">= 0".freeze])
28
+ s.add_development_dependency(%q<simplecov>.freeze, [">= 0".freeze])
29
+ s.add_development_dependency(%q<rspec>.freeze, [">= 0".freeze])
30
+ s.add_development_dependency(%q<yard>.freeze, [">= 0".freeze])
31
+ s.add_development_dependency(%q<all_images>.freeze, [">= 0".freeze])
45
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-21 00:00:00.000000000 Z
11
+ date: 2024-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.12.0
19
+ version: 1.16.0
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.12.0
26
+ version: 1.16.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -94,20 +94,6 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: protocol
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '2.0'
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '2.0'
111
97
  description: Library that provides memoziation for methods and functions for Ruby.
112
98
  email: flori@ping.de
113
99
  executables: []
@@ -153,7 +139,7 @@ files:
153
139
  - spec/mize/memoize_reload_spec.rb
154
140
  - spec/mize/version_spec.rb
155
141
  - spec/spec_helper.rb
156
- homepage: http://flori.github.com/mize
142
+ homepage: https://github.com/flori/mize
157
143
  licenses:
158
144
  - MIT
159
145
  metadata: {}
@@ -176,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
162
  - !ruby/object:Gem::Version
177
163
  version: '0'
178
164
  requirements: []
179
- rubygems_version: 3.3.17
165
+ rubygems_version: 3.5.11
180
166
  signing_key:
181
167
  specification_version: 4
182
168
  summary: Library that provides memoziation for methods and functions