tins 1.20.2 → 1.31.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: 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