tins 1.20.2 → 1.31.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: 4b06b5b2ccaabbe326e8853a9c647783d1df0140af0c9cee8039d02b0f838ab9
4
- data.tar.gz: 8589ce6bcddc044a74329107002a2c1826a5a2f7ece12c14940141036291be75
3
+ metadata.gz: 0d31ebce730bc98303aa996266a1c8eec0e62ec5f531a2c18d256d888c1d6dca
4
+ data.tar.gz: 5e4302923627a4a62855c66b27451dfc96b95987c548b93c75a6f7909f137cf0
5
5
  SHA512:
6
- metadata.gz: 29c3286f5cf01256f0c52b5035be2620ac5131e57f1da68dcdfe1804f7633856f015cb0f00041025e0416ad3439a3b9a9f18759b5f4619f45c91155cc369f21f
7
- data.tar.gz: 7151c9d260572739c63a22e813a5798803a76327de6eb1e7195c2ae8161fde3c090cfd30569528b523e7f3b5fb38c6af89bb17b72ec037c18d01623b5a727687
6
+ metadata.gz: 92e27c62350e0941953bb7b18d286e4cfb53bd800987e5738d632412501de9211a6d26ca43193f2d7cbbdbbbe003b0c5544ab1f66126046ef89e82a3bb8e6d3a
7
+ data.tar.gz: ac0353ba78f60dc82952824aaaec4a20ee221965061bb9da301f991fa7239ed201bb10314302484eb006b1bca612835e63defad1f6bb9547c5caf9fae66df7cf
data/.all_images.yml ADDED
@@ -0,0 +1,19 @@
1
+ dockerfile: |-
2
+ RUN apk add --no-cache build-base git
3
+ RUN gem install gem_hadar bundler
4
+
5
+ script: &script |-
6
+ echo -e "\e[1m"
7
+ ruby -v
8
+ echo -e "\e[0m"
9
+ bundle
10
+ rake test
11
+
12
+ images:
13
+ ruby:3.1-alpine: *script
14
+ ruby:3.0-alpine: *script
15
+ ruby:2.7-alpine: *script
16
+ ruby:2.6-alpine: *script
17
+ ruby:2.5-alpine: *script
18
+ ruby:2.4-alpine: *script
19
+ ruby:2.3-alpine: *script
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 3.0.1
data/README.md CHANGED
@@ -12,7 +12,6 @@ Non yet.
12
12
 
13
13
  ## Changes
14
14
 
15
-
16
15
  * 2018-11-14 Release 1.20.2
17
16
  - Fix ~x options
18
17
  * 2018-11-14 Release 1.20.1
@@ -92,12 +91,6 @@ Non yet.
92
91
  - Add some default alphabets to Tins::Token, e. g. Base64
93
92
  - Add changes to Readme
94
93
 
95
- ## Download
96
-
97
- The homepage of this library is located at
98
-
99
- * http://flori.github.com/tins
100
-
101
94
  ## Author
102
95
 
103
96
  Florian Frank mailto:flori@ping.de
data/Rakefile CHANGED
@@ -18,6 +18,8 @@ GemHadar do
18
18
  licenses << 'MIT'
19
19
 
20
20
  required_ruby_version '>= 2.0'
21
+ development_dependency 'utils'
21
22
  development_dependency 'test-unit', '~>3.1'
22
23
  development_dependency 'simplecov'
24
+ dependency 'sync'
23
25
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.20.2
1
+ 1.31.0
data/lib/tins/attempt.rb CHANGED
@@ -1,5 +1,16 @@
1
1
  module Tins
2
2
  module Attempt
3
+ # Attempts code in block *attempts* times, sleeping according to *sleep*
4
+ # between attempts and catching the exception(s) in *exception_class*.
5
+ #
6
+ # *sleep* is either a Proc returning a floating point number for duration
7
+ # as seconds or a Numeric >= 0 or < 0. In the former case this is the
8
+ # duration directly, in the latter case -*sleep* is the total number of
9
+ # seconds that is slept before giving up, and every attempt is retried
10
+ # after a exponentially increasing duration of seconds.
11
+ #
12
+ # Iff *reraise* is true the caught exception is reraised after running out
13
+ # of attempts.
3
14
  def attempt(opts = {}, &block)
4
15
  sleep = nil
5
16
  exception_class = StandardError
@@ -34,7 +45,16 @@ module Tins
34
45
  sleep_duration(sleep, count)
35
46
  retry
36
47
  end
37
- reraise ? raise : false
48
+ case reraise
49
+ when Proc
50
+ reraise.($!)
51
+ when Exception.class
52
+ raise reraise, "reraised: #{$!.message}"
53
+ when true
54
+ raise $!, "reraised: #{$!.message}"
55
+ else
56
+ false
57
+ end
38
58
  end
39
59
  end
40
60
  end
@@ -77,12 +97,24 @@ module Tins
77
97
  end
78
98
 
79
99
  def interpret_sleep(sleep, attempts)
80
- if Numeric === sleep && sleep < 0 && attempts > 1
81
- sleep = -sleep
82
- duration_base = compute_duration_base sleep, attempts
83
- sleep = lambda { |i| duration_base ** i }
100
+ case sleep
101
+ when nil
102
+ when Numeric
103
+ if sleep < 0
104
+ if attempts > 2
105
+ sleep = -sleep
106
+ duration_base = compute_duration_base sleep, attempts
107
+ sleep = lambda { |i| duration_base ** i }
108
+ else
109
+ raise ArgumentError, "require > 2 attempts for negative sleep value"
110
+ end
111
+ end
112
+ sleep
113
+ when Proc
114
+ sleep
115
+ else
116
+ raise TypeError, "require Proc or Numeric sleep argument"
84
117
  end
85
- sleep
86
118
  end
87
119
  end
88
120
  end
data/lib/tins/duration.rb CHANGED
@@ -3,6 +3,8 @@ module Tins
3
3
  include Comparable
4
4
 
5
5
  def initialize(seconds)
6
+ @negative = seconds < 0
7
+ seconds = seconds.abs
6
8
  @original_seconds = seconds
7
9
  @days, @hours, @minutes, @seconds, @fractional_seconds =
8
10
  [ 86_400, 3600, 60, 1, 0 ].inject([ [], seconds ]) {|(r, s), d|
@@ -24,6 +26,10 @@ module Tins
24
26
  to_f <=> other.to_f
25
27
  end
26
28
 
29
+ def negative?
30
+ @negative
31
+ end
32
+
27
33
  def days?
28
34
  @days > 0
29
35
  end
@@ -44,9 +50,10 @@ module Tins
44
50
  @fractional_seconds > 0
45
51
  end
46
52
 
47
- def format(template = '%d+%h:%m:%s.%f', precision: nil)
48
- result = template.gsub(/%[Ddhms]/) { |directive|
53
+ def format(template = '%S%d+%h:%m:%s.%f', precision: nil)
54
+ result = template.gsub(/%[DdhmSs]/) { |directive|
49
55
  case directive
56
+ when '%S' then ?- if negative?
50
57
  when '%d' then @days
51
58
  when '%h' then '%02u' % @hours
52
59
  when '%m' then '%02u' % @minutes
@@ -81,6 +88,7 @@ module Tins
81
88
  template << '.%f'
82
89
  precision = 3
83
90
  end
91
+ template.prepend '%S'
84
92
  format template, precision: precision
85
93
  end
86
94
  end
data/lib/tins/find.rb CHANGED
@@ -99,7 +99,7 @@ module Tins
99
99
  next if p == "." or p == ".."
100
100
  next if !@show_hidden && p.start_with?('.')
101
101
  p = File.join(path, p)
102
- paths.unshift p.untaint
102
+ paths.unshift p
103
103
  end
104
104
  end
105
105
  end
@@ -107,7 +107,7 @@ module Tins
107
107
  end
108
108
 
109
109
  def prepare_path(path)
110
- path = path.dup.taint
110
+ path = path.dup
111
111
  path.extend PathExtension
112
112
  path.finder = self
113
113
  path
@@ -1,25 +1,46 @@
1
+ require 'tins/thread_local'
2
+
1
3
  module Tins
2
4
  module HashSymbolizeKeysRecursive
3
- def symbolize_keys_recursive
4
- inject(self.class.new) do |h,(k, v)|
5
- k = k.to_s
6
- case v
7
- when Hash
8
- h[k.to_sym] = v.symbolize_keys_recursive
9
- when Array
10
- h[k.to_sym] = a = v.dup
11
- v.each_with_index do |x, i|
12
- Hash === x and a[i] = x.symbolize_keys_recursive
13
- end
14
- else
15
- h[k.to_sym] = v
16
- end
17
- h
18
- end
5
+ extend Tins::ThreadLocal
6
+
7
+ thread_local :seen
8
+
9
+ def symbolize_keys_recursive(circular: nil)
10
+ self.seen = {}
11
+ _symbolize_keys_recursive(self, circular: circular)
12
+ ensure
13
+ self.seen = nil
19
14
  end
20
15
 
21
- def symbolize_keys_recursive!
22
- replace symbolize_keys_recursive
16
+ def symbolize_keys_recursive!(circular: nil)
17
+ replace symbolize_keys_recursive(circular: circular)
18
+ end
19
+
20
+ private
21
+
22
+ def _symbolize_keys_recursive(object, circular: nil)
23
+ case
24
+ when seen[object.__id__]
25
+ object = circular
26
+ when Hash === object
27
+ seen[object.__id__] = true
28
+ new_object = object.class.new
29
+ seen[new_object.__id__] = true
30
+ object.each do |k, v|
31
+ new_object[k.to_s.to_sym] = _symbolize_keys_recursive(v, circular: circular)
32
+ end
33
+ object = new_object
34
+ when Array === object
35
+ seen[object.__id__] = true
36
+ new_object = object.class.new(object.size)
37
+ seen[new_object.__id__] = true
38
+ object.each_with_index do |v, i|
39
+ new_object[i] = _symbolize_keys_recursive(v, circular: circular)
40
+ end
41
+ object = new_object
42
+ end
43
+ object
23
44
  end
24
45
  end
25
46
  end
data/lib/tins/limited.rb CHANGED
@@ -9,6 +9,7 @@ module Tins
9
9
  @maximum = Integer(maximum)
10
10
  raise ArgumentError, "maximum < 1" if @maximum < 1
11
11
  @count = 0
12
+ @tg = ThreadGroup.new
12
13
  end
13
14
 
14
15
  # The maximum number of worker threads.
@@ -21,6 +22,7 @@ module Tins
21
22
  if @count < @maximum
22
23
  @count += 1
23
24
  Thread.new do
25
+ @tg.add Thread.current
24
26
  yield
25
27
  @mutex.synchronize { @count -= 1 }
26
28
  @continue.signal
@@ -32,6 +34,16 @@ module Tins
32
34
  end
33
35
  end
34
36
  end
37
+
38
+ def wait
39
+ @tg.list.each(&:join)
40
+ end
41
+
42
+ def process
43
+ yield self
44
+ ensure
45
+ wait
46
+ end
35
47
  end
36
48
  end
37
49
 
@@ -0,0 +1,62 @@
1
+ module Tins
2
+ class LRUCache
3
+ include Enumerable
4
+
5
+ class << self
6
+ private
7
+
8
+ my_nil = Object.new.freeze
9
+
10
+ define_method(:not_exist) do
11
+ my_nil
12
+ end
13
+ end
14
+
15
+ def initialize(capacity)
16
+ @capacity = capacity
17
+ @data = {}
18
+ end
19
+
20
+ attr_reader :capacity
21
+
22
+ def [](key)
23
+ case value = @data.delete(key){ not_exist }
24
+ when not_exist
25
+ nil
26
+ else
27
+ @data[key] = value
28
+ end
29
+ end
30
+
31
+ def []=(key, value)
32
+ @data.delete(key)
33
+ @data[key] = value
34
+ if @data.size > @capacity
35
+ @data.delete(@data.keys.first)
36
+ end
37
+ value
38
+ end
39
+
40
+ def each(&block)
41
+ @data.reverse_each(&block)
42
+ end
43
+
44
+ def delete(key)
45
+ @data.delete(key)
46
+ end
47
+
48
+ def clear
49
+ @data.clear
50
+ end
51
+
52
+ def size
53
+ @data.size
54
+ end
55
+
56
+ private
57
+
58
+ def not_exist
59
+ self.class.send(:not_exist)
60
+ end
61
+ end
62
+ end
data/lib/tins/null.rb CHANGED
@@ -81,7 +81,9 @@ module Tins
81
81
  include Tins::Null
82
82
  end
83
83
 
84
- NULL = NullClass.new.freeze
84
+ NULL = NullClass.new
85
+
86
+ NULL.freeze
85
87
 
86
88
  class NullPlus
87
89
  include Tins::Null
@@ -12,28 +12,54 @@ module Tins
12
12
  class << SexySingleton
13
13
  alias __old_singleton_included__ included
14
14
 
15
- def included(klass)
16
- __old_singleton_included__(klass)
17
- (class << klass; self; end).class_eval do
18
- if Object.method_defined?(:respond_to_missing?)
19
- def respond_to_missing?(name, *args)
20
- instance.respond_to?(name) || super
15
+ if RUBY_VERSION < "2.7"
16
+ def included(klass)
17
+ __old_singleton_included__(klass)
18
+ (class << klass; self; end).class_eval do
19
+ if Object.method_defined?(:respond_to_missing?)
20
+ def respond_to_missing?(name, *args)
21
+ instance.respond_to?(name) || super
22
+ end
23
+ else
24
+ def respond_to?(name, *args)
25
+ instance.respond_to?(name) || super
26
+ end
21
27
  end
22
- else
23
- def respond_to?(name, *args)
24
- instance.respond_to?(name) || super
28
+
29
+ def method_missing(name, *args, &block)
30
+ if instance.respond_to?(name)
31
+ instance.__send__(name, *args, &block)
32
+ else
33
+ super
34
+ end
25
35
  end
26
36
  end
27
-
28
- def method_missing(name, *args, &block)
29
- if instance.respond_to?(name)
30
- instance.__send__(name, *args, &block)
37
+ super
38
+ end
39
+ else
40
+ def included(klass)
41
+ __old_singleton_included__(klass)
42
+ (class << klass; self; end).class_eval do
43
+ if Object.method_defined?(:respond_to_missing?)
44
+ def respond_to_missing?(name, *args, **kwargs)
45
+ instance.respond_to?(name) || super
46
+ end
31
47
  else
32
- super
48
+ def respond_to?(name, *args, **kwargs)
49
+ instance.respond_to?(name) || super
50
+ end
51
+ end
52
+
53
+ def method_missing(name, *args, **kwargs, &block)
54
+ if instance.respond_to?(name)
55
+ instance.__send__(name, *args, **kwargs, &block)
56
+ else
57
+ super
58
+ end
33
59
  end
34
60
  end
61
+ super
35
62
  end
36
- super
37
63
  end
38
64
  end
39
65
  end
@@ -35,13 +35,25 @@ module Tins
35
35
  end
36
36
  end
37
37
 
38
- def new(*a)
39
- if dummy
40
- dummy.dup
41
- elsif caller.first =~ /`now`/
42
- really_now
43
- else
44
- really_new(*a)
38
+ if RUBY_VERSION >= "3.0"
39
+ def new(*a, **kw)
40
+ if dummy
41
+ dummy.dup
42
+ elsif caller.first =~ /`now`/
43
+ really_now(**kw)
44
+ else
45
+ really_new(*a, **kw)
46
+ end
47
+ end
48
+ else
49
+ def new(*a)
50
+ if dummy
51
+ dummy.dup
52
+ elsif caller.first =~ /`now`/
53
+ really_now
54
+ else
55
+ really_new(*a)
56
+ end
45
57
  end
46
58
  end
47
59
 
@@ -0,0 +1,51 @@
1
+ class TimedCache
2
+ class Value < Struct.new(:value, :timestamp)
3
+ def self.json_create(hash)
4
+ new(*hash.values_at('value', 'timestamp'))
5
+ end
6
+
7
+ def as_json(*)
8
+ super | { JSON.create_id => self.class.name }
9
+ end
10
+ end
11
+
12
+ def initialize(name, ttl: 60, jitter: 1..5, &block)
13
+ @name = name
14
+ @ttl = ttl
15
+ @jitter = jitter
16
+ block or raise ArgumentError, 'block is required'
17
+ @block = block
18
+ @redis = Redis.new # RedisPool::Pool.connection(:timed_cache, configuration: :redis)
19
+ end
20
+
21
+ def namespaced(key)
22
+ "timed_cache:#{key}"
23
+ end
24
+
25
+ def value
26
+ now = Time.now
27
+ if stored = stored_value
28
+ if (now - @ttl).to_i >= stored.timestamp
29
+ Thread.new {
30
+ sleep @jitter
31
+ if stored_value.timestamp <= stored.timestamp
32
+ @redis.set namespaced(@name), new_value(now).to_json
33
+ end
34
+ }
35
+ end
36
+ stored.value
37
+ else
38
+ nv = new_value(now)
39
+ @redis.set namespaced(@name), nv.to_json
40
+ nv.value
41
+ end
42
+ end
43
+
44
+ def new_value(now)
45
+ Value.new(@block.(), now.to_i)
46
+ end
47
+
48
+ def stored_value
49
+ @redis.get(namespaced(@name)).full? { |s| ::JSON.parse(s, create_additions: true) rescue nil }
50
+ end
51
+ end
data/lib/tins/unit.rb CHANGED
@@ -42,7 +42,7 @@ module Tins::Unit
42
42
  result %= value
43
43
  else
44
44
  prefix = prefixes[
45
- (first_prefix.fraction ? -1 : 1) * Math.log(value) / Math.log(first_prefix.step)
45
+ (first_prefix.fraction ? -1 : 1) * Math.log(value.abs) / Math.log(first_prefix.step)
46
46
  ]
47
47
  result = format.sub('%U', "#{prefix.name}#{unit}")
48
48
  result %= (value / prefix.multiplier.to_f)
@@ -63,7 +63,7 @@ module Tins::Unit
63
63
  super source
64
64
  if prefixes
65
65
  @unit_re = unit_re(Tins::Unit.prefixes(prefixes), unit)
66
- @unit_lc_re = @unit_uc_re = nil
66
+ @unit_lc_re = @unit_uc_re = nil
67
67
  else
68
68
  @unit_lc_re = unit_re(Tins::Unit.prefixes(:lc), unit)
69
69
  @unit_uc_re = unit_re(Tins::Unit.prefixes(:uc), unit)
data/lib/tins/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Tins
2
2
  # Tins version
3
- VERSION = '1.20.2'
3
+ VERSION = '1.31.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/lib/tins.rb CHANGED
@@ -57,5 +57,6 @@ module Tins
57
57
  require 'tins/expose'
58
58
  require 'tins/temp_io'
59
59
  require 'tins/temp_io_enum'
60
+ require 'tins/lru_cache'
60
61
  end
61
62
  require 'tins/alias'
@@ -32,7 +32,7 @@ module Tins
32
32
  attempt(attempts: 3, exception_class: MyException) { |c| c == 1 and raise MyException }
33
33
  end
34
34
 
35
- def test_reraise_exception
35
+ def test_reraise_exception_true
36
36
  tries = 0
37
37
  assert_raise(MyException) do
38
38
  attempt(attempts: 3, exception_class: MyException, reraise: true) do |c|
@@ -42,6 +42,28 @@ module Tins
42
42
  assert_equal 3, tries
43
43
  end
44
44
 
45
+ def test_reraise_exception_exception_class
46
+ other_exception = Exception
47
+ tries = 0
48
+ assert_raise(other_exception) do
49
+ attempt(attempts: 3, exception_class: MyException, reraise: other_exception) do |c|
50
+ tries = c; raise MyException
51
+ end
52
+ end
53
+ assert_equal 3, tries
54
+ end
55
+
56
+ def test_reraise_exception_proc
57
+ other_exception = Exception
58
+ tries = 0
59
+ assert_raise(other_exception, 'hi ho') do
60
+ attempt(attempts: 3, exception_class: MyException, reraise: -> e { raise other_exception, 'hi ho' }) do |c|
61
+ tries = c; raise MyException
62
+ end
63
+ end
64
+ assert_equal 3, tries
65
+ end
66
+
45
67
  def test_reraise_exception_with_positive_sleep
46
68
  tries = 0
47
69
  singleton_class.class_eval do
@@ -68,6 +68,14 @@ module Tins
68
68
  t2 = Tins::Duration.new(666.12345)
69
69
  assert_operator t1, :>, t2
70
70
  end
71
+
72
+ def test_negative_durations
73
+ duration = Tins::Duration.new(-42)
74
+ assert_equal '-0+00:00:42.000000', duration.format
75
+ assert_equal '-00:00:42', duration.to_s
76
+ assert_true duration.negative?
77
+ assert_false Tins::Duration.new(42).negative?
78
+ end
71
79
  end
72
80
  end
73
81
 
@@ -11,7 +11,8 @@ module Tins
11
11
  {
12
12
  'key' => {
13
13
  'key' => true
14
- }
14
+ },
15
+ 'o' => Object.new,
15
16
  }
16
17
  ],
17
18
  }
@@ -20,5 +21,44 @@ module Tins
20
21
  hash.symbolize_keys_recursive!
21
22
  assert hash[:key][0][:key][:key]
22
23
  end
24
+
25
+ def test_symbolize_bang
26
+ hash = { 'foo' => 'bar' }
27
+ hash.symbolize_keys_recursive!
28
+ assert_equal({ foo: 'bar' }, hash)
29
+ end
30
+
31
+ def test_symbolize_with_circular_array
32
+ circular_array = [].tap { |a| a << a }
33
+ assert_equal(
34
+ { foo: [ nil ] },
35
+ { 'foo' => circular_array }.symbolize_keys_recursive
36
+ )
37
+ assert_equal(
38
+ { foo: [ :circular ] },
39
+ { 'foo' => circular_array }.symbolize_keys_recursive(circular: :circular)
40
+ )
41
+ end
42
+
43
+ def test_symbolize_with_circular_hash
44
+ circular_hash = {}.tap { |h| h['foo'] = h }
45
+ circular_hash_symbol = {}.tap { |h| h[:foo] = nil }
46
+ assert_equal(
47
+ { bar: circular_hash_symbol },
48
+ { 'bar' => circular_hash }.symbolize_keys_recursive
49
+ )
50
+ assert_equal(
51
+ { bar: { foo: :circular } },
52
+ { 'bar' => circular_hash }.symbolize_keys_recursive(circular: :circular)
53
+ )
54
+ end
55
+
56
+ def test_symbolize_deeper_nesting
57
+ hash = { 'foo' => [ true, [ { 'bar' => {}.tap { |h| h['foo'] = h } }, 3.141, [].tap { |arr| arr << arr } ] ] }
58
+ assert_equal(
59
+ {foo: [true, [{bar: {foo: :circular}}, 3.141, [:circular]]]},
60
+ hash.symbolize_keys_recursive(circular: :circular)
61
+ )
62
+ end
23
63
  end
24
64
  end
@@ -9,13 +9,14 @@ module Tins
9
9
  5.times do
10
10
  limited.execute do
11
11
  count[Thread.current] = true
12
- sleep
12
+ sleep 1
13
13
  end
14
14
  end
15
15
  until count.size >= 5
16
16
  sleep 0.1
17
17
  end
18
18
  assert_equal 5, count.keys.uniq.size
19
+ assert_equal 5, limited.wait.size
19
20
  end
20
21
  end
21
22
  end
@@ -0,0 +1,51 @@
1
+ require 'test_helper'
2
+ require 'tins'
3
+
4
+ module Tins
5
+ class LRUCacheTest < Test::Unit::TestCase
6
+ def setup
7
+ @cache = LRUCache.new(3)
8
+ end
9
+
10
+ def test_can_be_filled_to_capacity
11
+ assert_equal 0, @cache.size
12
+ @cache[1] = 1
13
+ assert_equal 1, @cache.size
14
+ @cache[2] = 2
15
+ assert_equal 2, @cache.size
16
+ @cache[3] = 3
17
+ assert_equal 3, @cache.size
18
+ @cache[4] = 4
19
+ assert_equal 3, @cache.size
20
+ assert_equal 4, @cache.first[0]
21
+ end
22
+
23
+ def test_reorders_based_on_recency
24
+ (1..3).each do |i|
25
+ @cache[i] = i
26
+ end
27
+ assert_equal 3, @cache.first[0]
28
+ @cache[1]
29
+ assert_equal 1, @cache.first[0]
30
+ end
31
+
32
+ def test_can_be_cleared
33
+ (1..3).each do |i|
34
+ @cache[i] = i
35
+ end
36
+ assert_equal 3, @cache.size
37
+ @cache.clear
38
+ assert_equal 0, @cache.size
39
+ end
40
+
41
+ def test_can_be_deleted_from
42
+ (1..3).each do |i|
43
+ @cache[i] = i
44
+ end
45
+ assert_equal 3, @cache.size
46
+ @cache.delete 2
47
+ assert_equal 2, @cache.size
48
+ assert_nil @cache[2]
49
+ end
50
+ end
51
+ end
data/tests/unit_test.rb CHANGED
@@ -26,6 +26,8 @@ module Tins
26
26
  def test_format_multipliers
27
27
  assert_equal '23 Kb',
28
28
  format(23 * 1024, format: '%d %U')
29
+ assert_equal '-23 Kb',
30
+ format(-23 * 1024, format: '%d %U')
29
31
  assert_equal '23.1 Kb',
30
32
  format(23 * 1024 + 111, format: '%.1f %U')
31
33
  assert_equal 'Kbps: 23',
data/tins.gemspec CHANGED
@@ -1,41 +1,41 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: tins 1.20.2 ruby lib
2
+ # stub: tins 1.31.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "tins".freeze
6
- s.version = "1.20.2"
6
+ s.version = "1.31.0"
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 = "2018-11-14"
11
+ s.date = "2022-01-07"
12
12
  s.description = "All the stuff that isn't good/big enough for a real library.".freeze
13
13
  s.email = "flori@ping.de".freeze
14
- s.extra_rdoc_files = ["README.md".freeze, "lib/dslkit.rb".freeze, "lib/dslkit/polite.rb".freeze, "lib/dslkit/rude.rb".freeze, "lib/spruz.rb".freeze, "lib/tins.rb".freeze, "lib/tins/alias.rb".freeze, "lib/tins/annotate.rb".freeze, "lib/tins/ask_and_send.rb".freeze, "lib/tins/attempt.rb".freeze, "lib/tins/bijection.rb".freeze, "lib/tins/case_predicate.rb".freeze, "lib/tins/complete.rb".freeze, "lib/tins/concern.rb".freeze, "lib/tins/count_by.rb".freeze, "lib/tins/date_dummy.rb".freeze, "lib/tins/date_time_dummy.rb".freeze, "lib/tins/deep_const_get.rb".freeze, "lib/tins/deep_dup.rb".freeze, "lib/tins/dslkit.rb".freeze, "lib/tins/duration.rb".freeze, "lib/tins/expose.rb".freeze, "lib/tins/extract_last_argument_options.rb".freeze, "lib/tins/file_binary.rb".freeze, "lib/tins/find.rb".freeze, "lib/tins/generator.rb".freeze, "lib/tins/go.rb".freeze, "lib/tins/hash_symbolize_keys_recursive.rb".freeze, "lib/tins/hash_union.rb".freeze, "lib/tins/if_predicate.rb".freeze, "lib/tins/implement.rb".freeze, "lib/tins/limited.rb".freeze, "lib/tins/lines_file.rb".freeze, "lib/tins/memoize.rb".freeze, "lib/tins/method_description.rb".freeze, "lib/tins/minimize.rb".freeze, "lib/tins/module_group.rb".freeze, "lib/tins/named_set.rb".freeze, "lib/tins/null.rb".freeze, "lib/tins/once.rb".freeze, "lib/tins/p.rb".freeze, "lib/tins/partial_application.rb".freeze, "lib/tins/proc_compose.rb".freeze, "lib/tins/proc_prelude.rb".freeze, "lib/tins/range_plus.rb".freeze, "lib/tins/require_maybe.rb".freeze, "lib/tins/responding.rb".freeze, "lib/tins/secure_write.rb".freeze, "lib/tins/sexy_singleton.rb".freeze, "lib/tins/string_byte_order_mark.rb".freeze, "lib/tins/string_camelize.rb".freeze, "lib/tins/string_underscore.rb".freeze, "lib/tins/string_version.rb".freeze, "lib/tins/subhash.rb".freeze, "lib/tins/temp_io.rb".freeze, "lib/tins/temp_io_enum.rb".freeze, "lib/tins/terminal.rb".freeze, "lib/tins/thread_local.rb".freeze, "lib/tins/time_dummy.rb".freeze, "lib/tins/to.rb".freeze, "lib/tins/to_proc.rb".freeze, "lib/tins/token.rb".freeze, "lib/tins/uniq_by.rb".freeze, "lib/tins/unit.rb".freeze, "lib/tins/version.rb".freeze, "lib/tins/write.rb".freeze, "lib/tins/xt.rb".freeze, "lib/tins/xt/annotate.rb".freeze, "lib/tins/xt/ask_and_send.rb".freeze, "lib/tins/xt/attempt.rb".freeze, "lib/tins/xt/blank.rb".freeze, "lib/tins/xt/case_predicate.rb".freeze, "lib/tins/xt/complete.rb".freeze, "lib/tins/xt/concern.rb".freeze, "lib/tins/xt/count_by.rb".freeze, "lib/tins/xt/date_dummy.rb".freeze, "lib/tins/xt/date_time_dummy.rb".freeze, "lib/tins/xt/deep_const_get.rb".freeze, "lib/tins/xt/deep_dup.rb".freeze, "lib/tins/xt/dslkit.rb".freeze, "lib/tins/xt/expose.rb".freeze, "lib/tins/xt/extract_last_argument_options.rb".freeze, "lib/tins/xt/file_binary.rb".freeze, "lib/tins/xt/full.rb".freeze, "lib/tins/xt/hash_symbolize_keys_recursive.rb".freeze, "lib/tins/xt/hash_union.rb".freeze, "lib/tins/xt/if_predicate.rb".freeze, "lib/tins/xt/implement.rb".freeze, "lib/tins/xt/irb.rb".freeze, "lib/tins/xt/method_description.rb".freeze, "lib/tins/xt/named.rb".freeze, "lib/tins/xt/null.rb".freeze, "lib/tins/xt/p.rb".freeze, "lib/tins/xt/partial_application.rb".freeze, "lib/tins/xt/proc_compose.rb".freeze, "lib/tins/xt/proc_prelude.rb".freeze, "lib/tins/xt/range_plus.rb".freeze, "lib/tins/xt/require_maybe.rb".freeze, "lib/tins/xt/responding.rb".freeze, "lib/tins/xt/secure_write.rb".freeze, "lib/tins/xt/sexy_singleton.rb".freeze, "lib/tins/xt/string.rb".freeze, "lib/tins/xt/string_byte_order_mark.rb".freeze, "lib/tins/xt/string_camelize.rb".freeze, "lib/tins/xt/string_underscore.rb".freeze, "lib/tins/xt/string_version.rb".freeze, "lib/tins/xt/subhash.rb".freeze, "lib/tins/xt/temp_io.rb".freeze, "lib/tins/xt/time_dummy.rb".freeze, "lib/tins/xt/time_freezer.rb".freeze, "lib/tins/xt/to.rb".freeze, "lib/tins/xt/uniq_by.rb".freeze, "lib/tins/xt/write.rb".freeze]
15
- s.files = [".gitignore".freeze, ".travis.yml".freeze, "COPYING".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "TODO".freeze, "VERSION".freeze, "examples/add_one.png".freeze, "examples/add_one.stm".freeze, "examples/bb3.png".freeze, "examples/bb3.stm".freeze, "examples/concatenate_compare.mtm".freeze, "examples/concatenate_compare.png".freeze, "examples/length_difference.mtm".freeze, "examples/length_difference.png".freeze, "examples/let.rb".freeze, "examples/mail.rb".freeze, "examples/minsky.rb".freeze, "examples/multiply.reg".freeze, "examples/null_pattern.rb".freeze, "examples/ones_difference-mtm.png".freeze, "examples/ones_difference-stm.png".freeze, "examples/ones_difference.mtm".freeze, "examples/ones_difference.stm".freeze, "examples/prefix-equals-suffix-reversed-with-infix.png".freeze, "examples/prefix-equals-suffix-reversed-with-infix.stm".freeze, "examples/recipe.rb".freeze, "examples/recipe2.rb".freeze, "examples/recipe_common.rb".freeze, "examples/subtract.reg".freeze, "examples/turing-graph.rb".freeze, "examples/turing.rb".freeze, "lib/dslkit.rb".freeze, "lib/dslkit/polite.rb".freeze, "lib/dslkit/rude.rb".freeze, "lib/spruz".freeze, "lib/spruz.rb".freeze, "lib/tins.rb".freeze, "lib/tins/alias.rb".freeze, "lib/tins/annotate.rb".freeze, "lib/tins/ask_and_send.rb".freeze, "lib/tins/attempt.rb".freeze, "lib/tins/bijection.rb".freeze, "lib/tins/case_predicate.rb".freeze, "lib/tins/complete.rb".freeze, "lib/tins/concern.rb".freeze, "lib/tins/count_by.rb".freeze, "lib/tins/date_dummy.rb".freeze, "lib/tins/date_time_dummy.rb".freeze, "lib/tins/deep_const_get.rb".freeze, "lib/tins/deep_dup.rb".freeze, "lib/tins/dslkit.rb".freeze, "lib/tins/duration.rb".freeze, "lib/tins/expose.rb".freeze, "lib/tins/extract_last_argument_options.rb".freeze, "lib/tins/file_binary.rb".freeze, "lib/tins/find.rb".freeze, "lib/tins/generator.rb".freeze, "lib/tins/go.rb".freeze, "lib/tins/hash_symbolize_keys_recursive.rb".freeze, "lib/tins/hash_union.rb".freeze, "lib/tins/if_predicate.rb".freeze, "lib/tins/implement.rb".freeze, "lib/tins/limited.rb".freeze, "lib/tins/lines_file.rb".freeze, "lib/tins/memoize.rb".freeze, "lib/tins/method_description.rb".freeze, "lib/tins/minimize.rb".freeze, "lib/tins/module_group.rb".freeze, "lib/tins/named_set.rb".freeze, "lib/tins/null.rb".freeze, "lib/tins/once.rb".freeze, "lib/tins/p.rb".freeze, "lib/tins/partial_application.rb".freeze, "lib/tins/proc_compose.rb".freeze, "lib/tins/proc_prelude.rb".freeze, "lib/tins/range_plus.rb".freeze, "lib/tins/require_maybe.rb".freeze, "lib/tins/responding.rb".freeze, "lib/tins/secure_write.rb".freeze, "lib/tins/sexy_singleton.rb".freeze, "lib/tins/string_byte_order_mark.rb".freeze, "lib/tins/string_camelize.rb".freeze, "lib/tins/string_underscore.rb".freeze, "lib/tins/string_version.rb".freeze, "lib/tins/subhash.rb".freeze, "lib/tins/temp_io.rb".freeze, "lib/tins/temp_io_enum.rb".freeze, "lib/tins/terminal.rb".freeze, "lib/tins/thread_local.rb".freeze, "lib/tins/time_dummy.rb".freeze, "lib/tins/to.rb".freeze, "lib/tins/to_proc.rb".freeze, "lib/tins/token.rb".freeze, "lib/tins/uniq_by.rb".freeze, "lib/tins/unit.rb".freeze, "lib/tins/version.rb".freeze, "lib/tins/write.rb".freeze, "lib/tins/xt.rb".freeze, "lib/tins/xt/annotate.rb".freeze, "lib/tins/xt/ask_and_send.rb".freeze, "lib/tins/xt/attempt.rb".freeze, "lib/tins/xt/blank.rb".freeze, "lib/tins/xt/case_predicate.rb".freeze, "lib/tins/xt/complete.rb".freeze, "lib/tins/xt/concern.rb".freeze, "lib/tins/xt/count_by.rb".freeze, "lib/tins/xt/date_dummy.rb".freeze, "lib/tins/xt/date_time_dummy.rb".freeze, "lib/tins/xt/deep_const_get.rb".freeze, "lib/tins/xt/deep_dup.rb".freeze, "lib/tins/xt/dslkit.rb".freeze, "lib/tins/xt/expose.rb".freeze, "lib/tins/xt/extract_last_argument_options.rb".freeze, "lib/tins/xt/file_binary.rb".freeze, "lib/tins/xt/full.rb".freeze, "lib/tins/xt/hash_symbolize_keys_recursive.rb".freeze, "lib/tins/xt/hash_union.rb".freeze, "lib/tins/xt/if_predicate.rb".freeze, "lib/tins/xt/implement.rb".freeze, "lib/tins/xt/irb.rb".freeze, "lib/tins/xt/method_description.rb".freeze, "lib/tins/xt/named.rb".freeze, "lib/tins/xt/null.rb".freeze, "lib/tins/xt/p.rb".freeze, "lib/tins/xt/partial_application.rb".freeze, "lib/tins/xt/proc_compose.rb".freeze, "lib/tins/xt/proc_prelude.rb".freeze, "lib/tins/xt/range_plus.rb".freeze, "lib/tins/xt/require_maybe.rb".freeze, "lib/tins/xt/responding.rb".freeze, "lib/tins/xt/secure_write.rb".freeze, "lib/tins/xt/sexy_singleton.rb".freeze, "lib/tins/xt/string.rb".freeze, "lib/tins/xt/string_byte_order_mark.rb".freeze, "lib/tins/xt/string_camelize.rb".freeze, "lib/tins/xt/string_underscore.rb".freeze, "lib/tins/xt/string_version.rb".freeze, "lib/tins/xt/subhash.rb".freeze, "lib/tins/xt/temp_io.rb".freeze, "lib/tins/xt/time_dummy.rb".freeze, "lib/tins/xt/time_freezer.rb".freeze, "lib/tins/xt/to.rb".freeze, "lib/tins/xt/uniq_by.rb".freeze, "lib/tins/xt/write.rb".freeze, "tests/annotate_test.rb".freeze, "tests/ask_and_send_test.rb".freeze, "tests/attempt_test.rb".freeze, "tests/bijection_test.rb".freeze, "tests/blank_full_test.rb".freeze, "tests/case_predicate_test.rb".freeze, "tests/concern_test.rb".freeze, "tests/count_by_test.rb".freeze, "tests/date_dummy_test.rb".freeze, "tests/date_time_dummy_test.rb".freeze, "tests/deep_const_get_test.rb".freeze, "tests/deep_dup_test.rb".freeze, "tests/delegate_test.rb".freeze, "tests/dslkit_test.rb".freeze, "tests/duration_test.rb".freeze, "tests/dynamic_scope_test.rb".freeze, "tests/expose_test.rb".freeze, "tests/extract_last_argument_options_test.rb".freeze, "tests/file_binary_test.rb".freeze, "tests/find_test.rb".freeze, "tests/from_module_test.rb".freeze, "tests/generator_test.rb".freeze, "tests/go_test.rb".freeze, "tests/hash_symbolize_keys_recursive_test.rb".freeze, "tests/hash_union_test.rb".freeze, "tests/if_predicate_test.rb".freeze, "tests/implement_test.rb".freeze, "tests/limited_test.rb".freeze, "tests/lines_file_test.rb".freeze, "tests/memoize_test.rb".freeze, "tests/method_description_test.rb".freeze, "tests/minimize_test.rb".freeze, "tests/module_group_test.rb".freeze, "tests/named_set_test.rb".freeze, "tests/named_test.rb".freeze, "tests/null_test.rb".freeze, "tests/p_test.rb".freeze, "tests/partial_application_test.rb".freeze, "tests/proc_compose_test.rb".freeze, "tests/proc_prelude_test.rb".freeze, "tests/range_plus_test.rb".freeze, "tests/require_maybe_test.rb".freeze, "tests/responding_test.rb".freeze, "tests/rotate_test.rb".freeze, "tests/scope_test.rb".freeze, "tests/secure_write_test.rb".freeze, "tests/sexy_singleton_test.rb".freeze, "tests/string_byte_order_mark_test.rb".freeze, "tests/string_camelize_test.rb".freeze, "tests/string_underscore_test.rb".freeze, "tests/string_version_test.rb".freeze, "tests/subhash_test.rb".freeze, "tests/temp_io_test.rb".freeze, "tests/test_helper.rb".freeze, "tests/time_dummy_test.rb".freeze, "tests/time_freezer_test.rb".freeze, "tests/to_test.rb".freeze, "tests/token_test.rb".freeze, "tests/uniq_by_test.rb".freeze, "tests/unit_test.rb".freeze, "tins.gemspec".freeze]
14
+ s.extra_rdoc_files = ["README.md".freeze, "lib/dslkit.rb".freeze, "lib/dslkit/polite.rb".freeze, "lib/dslkit/rude.rb".freeze, "lib/spruz.rb".freeze, "lib/tins.rb".freeze, "lib/tins/alias.rb".freeze, "lib/tins/annotate.rb".freeze, "lib/tins/ask_and_send.rb".freeze, "lib/tins/attempt.rb".freeze, "lib/tins/bijection.rb".freeze, "lib/tins/case_predicate.rb".freeze, "lib/tins/complete.rb".freeze, "lib/tins/concern.rb".freeze, "lib/tins/count_by.rb".freeze, "lib/tins/date_dummy.rb".freeze, "lib/tins/date_time_dummy.rb".freeze, "lib/tins/deep_const_get.rb".freeze, "lib/tins/deep_dup.rb".freeze, "lib/tins/dslkit.rb".freeze, "lib/tins/duration.rb".freeze, "lib/tins/expose.rb".freeze, "lib/tins/extract_last_argument_options.rb".freeze, "lib/tins/file_binary.rb".freeze, "lib/tins/find.rb".freeze, "lib/tins/generator.rb".freeze, "lib/tins/go.rb".freeze, "lib/tins/hash_symbolize_keys_recursive.rb".freeze, "lib/tins/hash_union.rb".freeze, "lib/tins/if_predicate.rb".freeze, "lib/tins/implement.rb".freeze, "lib/tins/limited.rb".freeze, "lib/tins/lines_file.rb".freeze, "lib/tins/lru_cache.rb".freeze, "lib/tins/memoize.rb".freeze, "lib/tins/method_description.rb".freeze, "lib/tins/minimize.rb".freeze, "lib/tins/module_group.rb".freeze, "lib/tins/named_set.rb".freeze, "lib/tins/null.rb".freeze, "lib/tins/once.rb".freeze, "lib/tins/p.rb".freeze, "lib/tins/partial_application.rb".freeze, "lib/tins/proc_compose.rb".freeze, "lib/tins/proc_prelude.rb".freeze, "lib/tins/range_plus.rb".freeze, "lib/tins/require_maybe.rb".freeze, "lib/tins/responding.rb".freeze, "lib/tins/secure_write.rb".freeze, "lib/tins/sexy_singleton.rb".freeze, "lib/tins/string_byte_order_mark.rb".freeze, "lib/tins/string_camelize.rb".freeze, "lib/tins/string_underscore.rb".freeze, "lib/tins/string_version.rb".freeze, "lib/tins/subhash.rb".freeze, "lib/tins/temp_io.rb".freeze, "lib/tins/temp_io_enum.rb".freeze, "lib/tins/terminal.rb".freeze, "lib/tins/thread_local.rb".freeze, "lib/tins/time_dummy.rb".freeze, "lib/tins/timed_cache.rb".freeze, "lib/tins/to.rb".freeze, "lib/tins/to_proc.rb".freeze, "lib/tins/token.rb".freeze, "lib/tins/uniq_by.rb".freeze, "lib/tins/unit.rb".freeze, "lib/tins/version.rb".freeze, "lib/tins/write.rb".freeze, "lib/tins/xt.rb".freeze, "lib/tins/xt/annotate.rb".freeze, "lib/tins/xt/ask_and_send.rb".freeze, "lib/tins/xt/attempt.rb".freeze, "lib/tins/xt/blank.rb".freeze, "lib/tins/xt/case_predicate.rb".freeze, "lib/tins/xt/complete.rb".freeze, "lib/tins/xt/concern.rb".freeze, "lib/tins/xt/count_by.rb".freeze, "lib/tins/xt/date_dummy.rb".freeze, "lib/tins/xt/date_time_dummy.rb".freeze, "lib/tins/xt/deep_const_get.rb".freeze, "lib/tins/xt/deep_dup.rb".freeze, "lib/tins/xt/dslkit.rb".freeze, "lib/tins/xt/expose.rb".freeze, "lib/tins/xt/extract_last_argument_options.rb".freeze, "lib/tins/xt/file_binary.rb".freeze, "lib/tins/xt/full.rb".freeze, "lib/tins/xt/hash_symbolize_keys_recursive.rb".freeze, "lib/tins/xt/hash_union.rb".freeze, "lib/tins/xt/if_predicate.rb".freeze, "lib/tins/xt/implement.rb".freeze, "lib/tins/xt/irb.rb".freeze, "lib/tins/xt/method_description.rb".freeze, "lib/tins/xt/named.rb".freeze, "lib/tins/xt/null.rb".freeze, "lib/tins/xt/p.rb".freeze, "lib/tins/xt/partial_application.rb".freeze, "lib/tins/xt/proc_compose.rb".freeze, "lib/tins/xt/proc_prelude.rb".freeze, "lib/tins/xt/range_plus.rb".freeze, "lib/tins/xt/require_maybe.rb".freeze, "lib/tins/xt/responding.rb".freeze, "lib/tins/xt/secure_write.rb".freeze, "lib/tins/xt/sexy_singleton.rb".freeze, "lib/tins/xt/string.rb".freeze, "lib/tins/xt/string_byte_order_mark.rb".freeze, "lib/tins/xt/string_camelize.rb".freeze, "lib/tins/xt/string_underscore.rb".freeze, "lib/tins/xt/string_version.rb".freeze, "lib/tins/xt/subhash.rb".freeze, "lib/tins/xt/temp_io.rb".freeze, "lib/tins/xt/time_dummy.rb".freeze, "lib/tins/xt/time_freezer.rb".freeze, "lib/tins/xt/to.rb".freeze, "lib/tins/xt/uniq_by.rb".freeze, "lib/tins/xt/write.rb".freeze]
15
+ s.files = [".all_images.yml".freeze, ".gitignore".freeze, ".tool-versions".freeze, "COPYING".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "TODO".freeze, "VERSION".freeze, "examples/add_one.png".freeze, "examples/add_one.stm".freeze, "examples/bb3.png".freeze, "examples/bb3.stm".freeze, "examples/concatenate_compare.mtm".freeze, "examples/concatenate_compare.png".freeze, "examples/length_difference.mtm".freeze, "examples/length_difference.png".freeze, "examples/let.rb".freeze, "examples/mail.rb".freeze, "examples/minsky.rb".freeze, "examples/multiply.reg".freeze, "examples/null_pattern.rb".freeze, "examples/ones_difference-mtm.png".freeze, "examples/ones_difference-stm.png".freeze, "examples/ones_difference.mtm".freeze, "examples/ones_difference.stm".freeze, "examples/prefix-equals-suffix-reversed-with-infix.png".freeze, "examples/prefix-equals-suffix-reversed-with-infix.stm".freeze, "examples/recipe.rb".freeze, "examples/recipe2.rb".freeze, "examples/recipe_common.rb".freeze, "examples/subtract.reg".freeze, "examples/turing-graph.rb".freeze, "examples/turing.rb".freeze, "lib/dslkit.rb".freeze, "lib/dslkit/polite.rb".freeze, "lib/dslkit/rude.rb".freeze, "lib/spruz".freeze, "lib/spruz.rb".freeze, "lib/tins.rb".freeze, "lib/tins/alias.rb".freeze, "lib/tins/annotate.rb".freeze, "lib/tins/ask_and_send.rb".freeze, "lib/tins/attempt.rb".freeze, "lib/tins/bijection.rb".freeze, "lib/tins/case_predicate.rb".freeze, "lib/tins/complete.rb".freeze, "lib/tins/concern.rb".freeze, "lib/tins/count_by.rb".freeze, "lib/tins/date_dummy.rb".freeze, "lib/tins/date_time_dummy.rb".freeze, "lib/tins/deep_const_get.rb".freeze, "lib/tins/deep_dup.rb".freeze, "lib/tins/dslkit.rb".freeze, "lib/tins/duration.rb".freeze, "lib/tins/expose.rb".freeze, "lib/tins/extract_last_argument_options.rb".freeze, "lib/tins/file_binary.rb".freeze, "lib/tins/find.rb".freeze, "lib/tins/generator.rb".freeze, "lib/tins/go.rb".freeze, "lib/tins/hash_symbolize_keys_recursive.rb".freeze, "lib/tins/hash_union.rb".freeze, "lib/tins/if_predicate.rb".freeze, "lib/tins/implement.rb".freeze, "lib/tins/limited.rb".freeze, "lib/tins/lines_file.rb".freeze, "lib/tins/lru_cache.rb".freeze, "lib/tins/memoize.rb".freeze, "lib/tins/method_description.rb".freeze, "lib/tins/minimize.rb".freeze, "lib/tins/module_group.rb".freeze, "lib/tins/named_set.rb".freeze, "lib/tins/null.rb".freeze, "lib/tins/once.rb".freeze, "lib/tins/p.rb".freeze, "lib/tins/partial_application.rb".freeze, "lib/tins/proc_compose.rb".freeze, "lib/tins/proc_prelude.rb".freeze, "lib/tins/range_plus.rb".freeze, "lib/tins/require_maybe.rb".freeze, "lib/tins/responding.rb".freeze, "lib/tins/secure_write.rb".freeze, "lib/tins/sexy_singleton.rb".freeze, "lib/tins/string_byte_order_mark.rb".freeze, "lib/tins/string_camelize.rb".freeze, "lib/tins/string_underscore.rb".freeze, "lib/tins/string_version.rb".freeze, "lib/tins/subhash.rb".freeze, "lib/tins/temp_io.rb".freeze, "lib/tins/temp_io_enum.rb".freeze, "lib/tins/terminal.rb".freeze, "lib/tins/thread_local.rb".freeze, "lib/tins/time_dummy.rb".freeze, "lib/tins/timed_cache.rb".freeze, "lib/tins/to.rb".freeze, "lib/tins/to_proc.rb".freeze, "lib/tins/token.rb".freeze, "lib/tins/uniq_by.rb".freeze, "lib/tins/unit.rb".freeze, "lib/tins/version.rb".freeze, "lib/tins/write.rb".freeze, "lib/tins/xt.rb".freeze, "lib/tins/xt/annotate.rb".freeze, "lib/tins/xt/ask_and_send.rb".freeze, "lib/tins/xt/attempt.rb".freeze, "lib/tins/xt/blank.rb".freeze, "lib/tins/xt/case_predicate.rb".freeze, "lib/tins/xt/complete.rb".freeze, "lib/tins/xt/concern.rb".freeze, "lib/tins/xt/count_by.rb".freeze, "lib/tins/xt/date_dummy.rb".freeze, "lib/tins/xt/date_time_dummy.rb".freeze, "lib/tins/xt/deep_const_get.rb".freeze, "lib/tins/xt/deep_dup.rb".freeze, "lib/tins/xt/dslkit.rb".freeze, "lib/tins/xt/expose.rb".freeze, "lib/tins/xt/extract_last_argument_options.rb".freeze, "lib/tins/xt/file_binary.rb".freeze, "lib/tins/xt/full.rb".freeze, "lib/tins/xt/hash_symbolize_keys_recursive.rb".freeze, "lib/tins/xt/hash_union.rb".freeze, "lib/tins/xt/if_predicate.rb".freeze, "lib/tins/xt/implement.rb".freeze, "lib/tins/xt/irb.rb".freeze, "lib/tins/xt/method_description.rb".freeze, "lib/tins/xt/named.rb".freeze, "lib/tins/xt/null.rb".freeze, "lib/tins/xt/p.rb".freeze, "lib/tins/xt/partial_application.rb".freeze, "lib/tins/xt/proc_compose.rb".freeze, "lib/tins/xt/proc_prelude.rb".freeze, "lib/tins/xt/range_plus.rb".freeze, "lib/tins/xt/require_maybe.rb".freeze, "lib/tins/xt/responding.rb".freeze, "lib/tins/xt/secure_write.rb".freeze, "lib/tins/xt/sexy_singleton.rb".freeze, "lib/tins/xt/string.rb".freeze, "lib/tins/xt/string_byte_order_mark.rb".freeze, "lib/tins/xt/string_camelize.rb".freeze, "lib/tins/xt/string_underscore.rb".freeze, "lib/tins/xt/string_version.rb".freeze, "lib/tins/xt/subhash.rb".freeze, "lib/tins/xt/temp_io.rb".freeze, "lib/tins/xt/time_dummy.rb".freeze, "lib/tins/xt/time_freezer.rb".freeze, "lib/tins/xt/to.rb".freeze, "lib/tins/xt/uniq_by.rb".freeze, "lib/tins/xt/write.rb".freeze, "tests/annotate_test.rb".freeze, "tests/ask_and_send_test.rb".freeze, "tests/attempt_test.rb".freeze, "tests/bijection_test.rb".freeze, "tests/blank_full_test.rb".freeze, "tests/case_predicate_test.rb".freeze, "tests/concern_test.rb".freeze, "tests/count_by_test.rb".freeze, "tests/date_dummy_test.rb".freeze, "tests/date_time_dummy_test.rb".freeze, "tests/deep_const_get_test.rb".freeze, "tests/deep_dup_test.rb".freeze, "tests/delegate_test.rb".freeze, "tests/dslkit_test.rb".freeze, "tests/duration_test.rb".freeze, "tests/dynamic_scope_test.rb".freeze, "tests/expose_test.rb".freeze, "tests/extract_last_argument_options_test.rb".freeze, "tests/file_binary_test.rb".freeze, "tests/find_test.rb".freeze, "tests/from_module_test.rb".freeze, "tests/generator_test.rb".freeze, "tests/go_test.rb".freeze, "tests/hash_symbolize_keys_recursive_test.rb".freeze, "tests/hash_union_test.rb".freeze, "tests/if_predicate_test.rb".freeze, "tests/implement_test.rb".freeze, "tests/limited_test.rb".freeze, "tests/lines_file_test.rb".freeze, "tests/lru_cache_test.rb".freeze, "tests/memoize_test.rb".freeze, "tests/method_description_test.rb".freeze, "tests/minimize_test.rb".freeze, "tests/module_group_test.rb".freeze, "tests/named_set_test.rb".freeze, "tests/named_test.rb".freeze, "tests/null_test.rb".freeze, "tests/p_test.rb".freeze, "tests/partial_application_test.rb".freeze, "tests/proc_compose_test.rb".freeze, "tests/proc_prelude_test.rb".freeze, "tests/range_plus_test.rb".freeze, "tests/require_maybe_test.rb".freeze, "tests/responding_test.rb".freeze, "tests/rotate_test.rb".freeze, "tests/scope_test.rb".freeze, "tests/secure_write_test.rb".freeze, "tests/sexy_singleton_test.rb".freeze, "tests/string_byte_order_mark_test.rb".freeze, "tests/string_camelize_test.rb".freeze, "tests/string_underscore_test.rb".freeze, "tests/string_version_test.rb".freeze, "tests/subhash_test.rb".freeze, "tests/temp_io_test.rb".freeze, "tests/test_helper.rb".freeze, "tests/time_dummy_test.rb".freeze, "tests/time_freezer_test.rb".freeze, "tests/to_test.rb".freeze, "tests/token_test.rb".freeze, "tests/uniq_by_test.rb".freeze, "tests/unit_test.rb".freeze, "tins.gemspec".freeze]
16
16
  s.homepage = "https://github.com/flori/tins".freeze
17
17
  s.licenses = ["MIT".freeze]
18
18
  s.rdoc_options = ["--title".freeze, "Tins - Useful stuff.".freeze, "--main".freeze, "README.md".freeze]
19
19
  s.required_ruby_version = Gem::Requirement.new(">= 2.0".freeze)
20
- s.rubygems_version = "2.7.7".freeze
20
+ s.rubygems_version = "3.2.15".freeze
21
21
  s.summary = "Useful stuff.".freeze
22
- s.test_files = ["tests/annotate_test.rb".freeze, "tests/ask_and_send_test.rb".freeze, "tests/attempt_test.rb".freeze, "tests/bijection_test.rb".freeze, "tests/blank_full_test.rb".freeze, "tests/case_predicate_test.rb".freeze, "tests/concern_test.rb".freeze, "tests/count_by_test.rb".freeze, "tests/date_dummy_test.rb".freeze, "tests/date_time_dummy_test.rb".freeze, "tests/deep_const_get_test.rb".freeze, "tests/deep_dup_test.rb".freeze, "tests/delegate_test.rb".freeze, "tests/dslkit_test.rb".freeze, "tests/duration_test.rb".freeze, "tests/dynamic_scope_test.rb".freeze, "tests/expose_test.rb".freeze, "tests/extract_last_argument_options_test.rb".freeze, "tests/file_binary_test.rb".freeze, "tests/find_test.rb".freeze, "tests/from_module_test.rb".freeze, "tests/generator_test.rb".freeze, "tests/go_test.rb".freeze, "tests/hash_symbolize_keys_recursive_test.rb".freeze, "tests/hash_union_test.rb".freeze, "tests/if_predicate_test.rb".freeze, "tests/implement_test.rb".freeze, "tests/limited_test.rb".freeze, "tests/lines_file_test.rb".freeze, "tests/memoize_test.rb".freeze, "tests/method_description_test.rb".freeze, "tests/minimize_test.rb".freeze, "tests/module_group_test.rb".freeze, "tests/named_set_test.rb".freeze, "tests/named_test.rb".freeze, "tests/null_test.rb".freeze, "tests/p_test.rb".freeze, "tests/partial_application_test.rb".freeze, "tests/proc_compose_test.rb".freeze, "tests/proc_prelude_test.rb".freeze, "tests/range_plus_test.rb".freeze, "tests/require_maybe_test.rb".freeze, "tests/responding_test.rb".freeze, "tests/rotate_test.rb".freeze, "tests/scope_test.rb".freeze, "tests/secure_write_test.rb".freeze, "tests/sexy_singleton_test.rb".freeze, "tests/string_byte_order_mark_test.rb".freeze, "tests/string_camelize_test.rb".freeze, "tests/string_underscore_test.rb".freeze, "tests/string_version_test.rb".freeze, "tests/subhash_test.rb".freeze, "tests/temp_io_test.rb".freeze, "tests/test_helper.rb".freeze, "tests/time_dummy_test.rb".freeze, "tests/time_freezer_test.rb".freeze, "tests/to_test.rb".freeze, "tests/token_test.rb".freeze, "tests/uniq_by_test.rb".freeze, "tests/unit_test.rb".freeze, "tests/if_predicate_test.rb".freeze, "tests/string_camelize_test.rb".freeze, "tests/case_predicate_test.rb".freeze, "tests/sexy_singleton_test.rb".freeze, "tests/hash_union_test.rb".freeze, "tests/date_dummy_test.rb".freeze, "tests/string_byte_order_mark_test.rb".freeze, "tests/deep_dup_test.rb".freeze, "tests/generator_test.rb".freeze, "tests/ask_and_send_test.rb".freeze, "tests/hash_symbolize_keys_recursive_test.rb".freeze, "tests/memoize_test.rb".freeze, "tests/find_test.rb".freeze, "tests/extract_last_argument_options_test.rb".freeze, "tests/null_test.rb".freeze, "tests/temp_io_test.rb".freeze, "tests/proc_prelude_test.rb".freeze, "tests/token_test.rb".freeze, "tests/bijection_test.rb".freeze, "tests/p_test.rb".freeze, "tests/dynamic_scope_test.rb".freeze, "tests/lines_file_test.rb".freeze, "tests/count_by_test.rb".freeze, "tests/responding_test.rb".freeze, "tests/time_freezer_test.rb".freeze, "tests/attempt_test.rb".freeze, "tests/concern_test.rb".freeze, "tests/implement_test.rb".freeze, "tests/dslkit_test.rb".freeze, "tests/range_plus_test.rb".freeze, "tests/deep_const_get_test.rb".freeze, "tests/named_set_test.rb".freeze, "tests/proc_compose_test.rb".freeze, "tests/minimize_test.rb".freeze, "tests/subhash_test.rb".freeze, "tests/delegate_test.rb".freeze, "tests/time_dummy_test.rb".freeze, "tests/limited_test.rb".freeze, "tests/duration_test.rb".freeze, "tests/method_description_test.rb".freeze, "tests/to_test.rb".freeze, "tests/file_binary_test.rb".freeze, "tests/partial_application_test.rb".freeze, "tests/date_time_dummy_test.rb".freeze, "tests/expose_test.rb".freeze, "tests/rotate_test.rb".freeze, "tests/module_group_test.rb".freeze, "tests/unit_test.rb".freeze, "tests/string_underscore_test.rb".freeze, "tests/named_test.rb".freeze, "tests/from_module_test.rb".freeze, "tests/string_version_test.rb".freeze, "tests/require_maybe_test.rb".freeze, "tests/uniq_by_test.rb".freeze, "tests/secure_write_test.rb".freeze, "tests/blank_full_test.rb".freeze, "tests/scope_test.rb".freeze, "tests/annotate_test.rb".freeze, "tests/go_test.rb".freeze]
22
+ s.test_files = ["tests/annotate_test.rb".freeze, "tests/ask_and_send_test.rb".freeze, "tests/attempt_test.rb".freeze, "tests/bijection_test.rb".freeze, "tests/blank_full_test.rb".freeze, "tests/case_predicate_test.rb".freeze, "tests/concern_test.rb".freeze, "tests/count_by_test.rb".freeze, "tests/date_dummy_test.rb".freeze, "tests/date_time_dummy_test.rb".freeze, "tests/deep_const_get_test.rb".freeze, "tests/deep_dup_test.rb".freeze, "tests/delegate_test.rb".freeze, "tests/dslkit_test.rb".freeze, "tests/duration_test.rb".freeze, "tests/dynamic_scope_test.rb".freeze, "tests/expose_test.rb".freeze, "tests/extract_last_argument_options_test.rb".freeze, "tests/file_binary_test.rb".freeze, "tests/find_test.rb".freeze, "tests/from_module_test.rb".freeze, "tests/generator_test.rb".freeze, "tests/go_test.rb".freeze, "tests/hash_symbolize_keys_recursive_test.rb".freeze, "tests/hash_union_test.rb".freeze, "tests/if_predicate_test.rb".freeze, "tests/implement_test.rb".freeze, "tests/limited_test.rb".freeze, "tests/lines_file_test.rb".freeze, "tests/lru_cache_test.rb".freeze, "tests/memoize_test.rb".freeze, "tests/method_description_test.rb".freeze, "tests/minimize_test.rb".freeze, "tests/module_group_test.rb".freeze, "tests/named_set_test.rb".freeze, "tests/named_test.rb".freeze, "tests/null_test.rb".freeze, "tests/p_test.rb".freeze, "tests/partial_application_test.rb".freeze, "tests/proc_compose_test.rb".freeze, "tests/proc_prelude_test.rb".freeze, "tests/range_plus_test.rb".freeze, "tests/require_maybe_test.rb".freeze, "tests/responding_test.rb".freeze, "tests/rotate_test.rb".freeze, "tests/scope_test.rb".freeze, "tests/secure_write_test.rb".freeze, "tests/sexy_singleton_test.rb".freeze, "tests/string_byte_order_mark_test.rb".freeze, "tests/string_camelize_test.rb".freeze, "tests/string_underscore_test.rb".freeze, "tests/string_version_test.rb".freeze, "tests/subhash_test.rb".freeze, "tests/temp_io_test.rb".freeze, "tests/test_helper.rb".freeze, "tests/time_dummy_test.rb".freeze, "tests/time_freezer_test.rb".freeze, "tests/to_test.rb".freeze, "tests/token_test.rb".freeze, "tests/uniq_by_test.rb".freeze, "tests/unit_test.rb".freeze, "tests/annotate_test.rb".freeze, "tests/ask_and_send_test.rb".freeze, "tests/attempt_test.rb".freeze, "tests/bijection_test.rb".freeze, "tests/blank_full_test.rb".freeze, "tests/case_predicate_test.rb".freeze, "tests/concern_test.rb".freeze, "tests/count_by_test.rb".freeze, "tests/date_dummy_test.rb".freeze, "tests/date_time_dummy_test.rb".freeze, "tests/deep_const_get_test.rb".freeze, "tests/deep_dup_test.rb".freeze, "tests/delegate_test.rb".freeze, "tests/dslkit_test.rb".freeze, "tests/duration_test.rb".freeze, "tests/dynamic_scope_test.rb".freeze, "tests/expose_test.rb".freeze, "tests/extract_last_argument_options_test.rb".freeze, "tests/file_binary_test.rb".freeze, "tests/find_test.rb".freeze, "tests/from_module_test.rb".freeze, "tests/generator_test.rb".freeze, "tests/go_test.rb".freeze, "tests/hash_symbolize_keys_recursive_test.rb".freeze, "tests/hash_union_test.rb".freeze, "tests/if_predicate_test.rb".freeze, "tests/implement_test.rb".freeze, "tests/limited_test.rb".freeze, "tests/lines_file_test.rb".freeze, "tests/lru_cache_test.rb".freeze, "tests/memoize_test.rb".freeze, "tests/method_description_test.rb".freeze, "tests/minimize_test.rb".freeze, "tests/module_group_test.rb".freeze, "tests/named_set_test.rb".freeze, "tests/named_test.rb".freeze, "tests/null_test.rb".freeze, "tests/p_test.rb".freeze, "tests/partial_application_test.rb".freeze, "tests/proc_compose_test.rb".freeze, "tests/proc_prelude_test.rb".freeze, "tests/range_plus_test.rb".freeze, "tests/require_maybe_test.rb".freeze, "tests/responding_test.rb".freeze, "tests/rotate_test.rb".freeze, "tests/scope_test.rb".freeze, "tests/secure_write_test.rb".freeze, "tests/sexy_singleton_test.rb".freeze, "tests/string_byte_order_mark_test.rb".freeze, "tests/string_camelize_test.rb".freeze, "tests/string_underscore_test.rb".freeze, "tests/string_version_test.rb".freeze, "tests/subhash_test.rb".freeze, "tests/temp_io_test.rb".freeze, "tests/time_dummy_test.rb".freeze, "tests/time_freezer_test.rb".freeze, "tests/to_test.rb".freeze, "tests/token_test.rb".freeze, "tests/uniq_by_test.rb".freeze, "tests/unit_test.rb".freeze]
23
23
 
24
24
  if s.respond_to? :specification_version then
25
25
  s.specification_version = 4
26
+ end
26
27
 
27
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
28
- s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.9.1"])
29
- s.add_development_dependency(%q<test-unit>.freeze, ["~> 3.1"])
30
- s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
31
- else
32
- s.add_dependency(%q<gem_hadar>.freeze, ["~> 1.9.1"])
33
- s.add_dependency(%q<test-unit>.freeze, ["~> 3.1"])
34
- s.add_dependency(%q<simplecov>.freeze, [">= 0"])
35
- end
28
+ if s.respond_to? :add_runtime_dependency then
29
+ s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.11.0"])
30
+ s.add_development_dependency(%q<utils>.freeze, [">= 0"])
31
+ s.add_development_dependency(%q<test-unit>.freeze, ["~> 3.1"])
32
+ s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
33
+ s.add_runtime_dependency(%q<sync>.freeze, [">= 0"])
36
34
  else
37
- s.add_dependency(%q<gem_hadar>.freeze, ["~> 1.9.1"])
35
+ s.add_dependency(%q<gem_hadar>.freeze, ["~> 1.11.0"])
36
+ s.add_dependency(%q<utils>.freeze, [">= 0"])
38
37
  s.add_dependency(%q<test-unit>.freeze, ["~> 3.1"])
39
38
  s.add_dependency(%q<simplecov>.freeze, [">= 0"])
39
+ s.add_dependency(%q<sync>.freeze, [">= 0"])
40
40
  end
41
41
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tins
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.20.2
4
+ version: 1.31.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-14 00:00:00.000000000 Z
11
+ date: 2022-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar
@@ -16,14 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.9.1
19
+ version: 1.11.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.9.1
26
+ version: 1.11.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: utils
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: test-unit
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +66,20 @@ dependencies:
52
66
  - - ">="
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sync
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  description: All the stuff that isn't good/big enough for a real library.
56
84
  email: flori@ping.de
57
85
  executables: []
@@ -90,6 +118,7 @@ extra_rdoc_files:
90
118
  - lib/tins/implement.rb
91
119
  - lib/tins/limited.rb
92
120
  - lib/tins/lines_file.rb
121
+ - lib/tins/lru_cache.rb
93
122
  - lib/tins/memoize.rb
94
123
  - lib/tins/method_description.rb
95
124
  - lib/tins/minimize.rb
@@ -116,6 +145,7 @@ extra_rdoc_files:
116
145
  - lib/tins/terminal.rb
117
146
  - lib/tins/thread_local.rb
118
147
  - lib/tins/time_dummy.rb
148
+ - lib/tins/timed_cache.rb
119
149
  - lib/tins/to.rb
120
150
  - lib/tins/to_proc.rb
121
151
  - lib/tins/token.rb
@@ -171,8 +201,9 @@ extra_rdoc_files:
171
201
  - lib/tins/xt/uniq_by.rb
172
202
  - lib/tins/xt/write.rb
173
203
  files:
204
+ - ".all_images.yml"
174
205
  - ".gitignore"
175
- - ".travis.yml"
206
+ - ".tool-versions"
176
207
  - COPYING
177
208
  - Gemfile
178
209
  - README.md
@@ -236,6 +267,7 @@ files:
236
267
  - lib/tins/implement.rb
237
268
  - lib/tins/limited.rb
238
269
  - lib/tins/lines_file.rb
270
+ - lib/tins/lru_cache.rb
239
271
  - lib/tins/memoize.rb
240
272
  - lib/tins/method_description.rb
241
273
  - lib/tins/minimize.rb
@@ -262,6 +294,7 @@ files:
262
294
  - lib/tins/terminal.rb
263
295
  - lib/tins/thread_local.rb
264
296
  - lib/tins/time_dummy.rb
297
+ - lib/tins/timed_cache.rb
265
298
  - lib/tins/to.rb
266
299
  - lib/tins/to_proc.rb
267
300
  - lib/tins/token.rb
@@ -345,6 +378,7 @@ files:
345
378
  - tests/implement_test.rb
346
379
  - tests/limited_test.rb
347
380
  - tests/lines_file_test.rb
381
+ - tests/lru_cache_test.rb
348
382
  - tests/memoize_test.rb
349
383
  - tests/method_description_test.rb
350
384
  - tests/minimize_test.rb
@@ -381,7 +415,7 @@ homepage: https://github.com/flori/tins
381
415
  licenses:
382
416
  - MIT
383
417
  metadata: {}
384
- post_install_message:
418
+ post_install_message:
385
419
  rdoc_options:
386
420
  - "--title"
387
421
  - Tins - Useful stuff.
@@ -400,9 +434,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
400
434
  - !ruby/object:Gem::Version
401
435
  version: '0'
402
436
  requirements: []
403
- rubyforge_project:
404
- rubygems_version: 2.7.7
405
- signing_key:
437
+ rubygems_version: 3.2.15
438
+ signing_key:
406
439
  specification_version: 4
407
440
  summary: Useful stuff.
408
441
  test_files:
@@ -435,6 +468,7 @@ test_files:
435
468
  - tests/implement_test.rb
436
469
  - tests/limited_test.rb
437
470
  - tests/lines_file_test.rb
471
+ - tests/lru_cache_test.rb
438
472
  - tests/memoize_test.rb
439
473
  - tests/method_description_test.rb
440
474
  - tests/minimize_test.rb
data/.travis.yml DELETED
@@ -1,12 +0,0 @@
1
- rvm:
2
- - 2.0
3
- - 2.1
4
- - 2.2
5
- - 2.3
6
- - 2.4
7
- - 2.5
8
- - ruby-head
9
- matrix:
10
- allow_failures:
11
- - rvm: ruby-head
12
- sudo: false