tins 1.51.1 → 1.53.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: dce6e60b660a0f614d5e3964270e99aaff36fa473a54efa387de8e17fc0e331b
4
- data.tar.gz: f6f4c1fcad05d874d6e20897c42f211cd1d7ed6892ef9d539816b7641d56129c
3
+ metadata.gz: 7878ad969917b7fe9cb5ecdd474c612c5a440434331b3036729000b42ba26f7a
4
+ data.tar.gz: c0a7b9b5d3f69b19ed6ef11de637e70a286324089bf12f28c555502af1d7b775
5
5
  SHA512:
6
- metadata.gz: 3e33a9d1241117807d6dcba8fa72087d57fa70587015e2fb6988f6221ac00054149c5770ef856a83a1b1a478a6cc27aca117b9f0f23cf582867200159d4d486b
7
- data.tar.gz: 6a3310dec353f33acf140b4e971e7be1269bb413fd2b3b13d29fc777573d69b14a932a35977832c58d87b80cab90cd4f326542030c7d422aa8bf0df53830940a
6
+ metadata.gz: 240db7924b97b15d7e8df113407fd3878f08911caf4c4b362569a6fb563ca49d6a7ffa2227ea9ff8180fb5b321e174def7799b9c147b6b29a8d5fde6e2d14f7a
7
+ data.tar.gz: c5f3a1447cf33d250f5819895d59cc74bd4168b0bccc49371cde8efdd377c54ae98a554e30ac817d7c5d597e92dea3c0c0b37e2ad3b6b058e390613db50a25a6
data/CHANGES.md CHANGED
@@ -1,5 +1,47 @@
1
1
  # Changes
2
2
 
3
+ ## 2026-04-14 v1.53.0
4
+
5
+ - Added `stringify_keys_recursive` and `stringify_keys_recursive!` methods to convert hash keys from symbols to strings
6
+ - Renamed `_symbolize_keys_recursive` to `_transform_keys_recursive` to
7
+ support both `:to_sym` and `:to_s` transformations
8
+ - Updated `symbolize_keys_recursive` to use the new
9
+ `_transform_keys_recursive` with `transform: :to_sym`
10
+ - Added comprehensive tests for the new `stringify_keys_recursive` methods
11
+ including circular reference handling
12
+ - Updated YARD documentation for all new and modified methods
13
+ - Made `Token#bits` immutable from outside by changing `attr_accessor
14
+ :bits` to `attr_reader :bits` and using direct instance variable
15
+ assignment
16
+ - Bump `s.rubygems_version` from **4.0.3** to **4.0.10** in `tins.gemspec`
17
+
18
+ ## 2026-02-23 v1.52.0
19
+
20
+ - Renamed `BASE32_EXTENDED_HEX_ALPHABET` to
21
+ `BASE32_EXTENDED_UPPERCASE_HEX_ALPHABET` for clarity.
22
+ - Added new constant `BASE32_EXTENDED_LOWERCASE_HEX_ALPHABET` for lowercase hex
23
+ alphabet.
24
+ - Updated `BASE32_EXTENDED_HEX_ALPHABET` to reference the uppercase variant as
25
+ default.
26
+ - Updated comment for `BASE32_ALPHABET` to specify RFC 4648 compliance.
27
+ - Improved maintainability by clearly separating uppercase and lowercase hex
28
+ alphabet variants.
29
+ - Added `require 'tins/hash_dfs'` to `lib/tins.rb` and `lib/tins/xt.rb`.
30
+ - Renamed thread‑local flag in `HashBFS` from `:seen` to `:bfs_seen` and
31
+ updated all references.
32
+ - Replaced calls to `convert_to_hash_or_ary` with `bfs_convert_to_hash_or_ary`
33
+ in `HashBFS`.
34
+ - Added `bfs_convert_to_hash_or_ary` method to `HashBFS`.
35
+ - Added new module `Tins::HashDFS` with DFS traversal, thread‑local `dfs_seen`,
36
+ and `dfs_convert_to_hash_or_ary`.
37
+ - Added `lib/tins/xt/hash_dfs.rb` to mix `HashDFS` into `::Hash`.
38
+ - Added `tests/hash_dfs_test.rb` with DFS tests mirroring BFS tests.
39
+ - Updated YARD documentation for `HashBFS#bfs` with an example.
40
+ - Optimized token analysis bit calculation by avoiding large exponent
41
+ calculations and enhancing numerical stability for large token lengths.
42
+ - Maintained mathematical equivalence with **Ruby 2.0+** `Math.log2` method.
43
+ - Used more direct computation of bits needed for token entropy calculation.
44
+
3
45
  ## 2026-01-14 v1.51.1
4
46
 
5
47
  - Simplified `lru_cache` implementation to not need `NOT_EXIST`
data/lib/tins/hash_bfs.rb CHANGED
@@ -8,38 +8,36 @@ module Tins
8
8
  module HashBFS
9
9
  extend Tins::ThreadLocal
10
10
 
11
- thread_local :seen
11
+ thread_local :bfs_seen
12
12
 
13
13
  # The bfs method performs a breadth-first search on the object's structure,
14
14
  # visiting all elements and yielding their indices and values to the block.
15
15
  #
16
- # @param visit_internal [ true, false ] whether to visit internal hashes or arrays
17
- # @yield [ index, value ] yields each element's index and value to the block
18
- #
19
- # @raise [ ArgumentError ] if no &block argument was provided
20
- #
21
- # @example bfs { |index, value| … } # performs a breadth-first search on the object's structure
22
- #
23
- # @return [ self ] returns the receiver
16
+ # @param visit_internal [true, false] whether to visit internal hashes or arrays
17
+ # @yield [index, value] yields each element's index and value to the block
18
+ # @raise [ArgumentError] if no &block argument was provided
19
+ # @example
20
+ # hash.bfs { |index, value| puts "#{index.inspect} => #{value.inspect}" }
21
+ # @return [self] returns the receiver
24
22
  def bfs(visit_internal: false, &block)
25
23
  block or raise ArgumentError, 'require &block argument'
26
- self.seen = {}
24
+ self.bfs_seen = {}
27
25
  queue = []
28
26
  queue.push([ nil, self ])
29
27
  while (index, object = queue.shift)
30
28
  case
31
- when seen[object.__id__]
29
+ when bfs_seen[object.__id__]
32
30
  next
33
31
  when Hash === object
34
- seen[object.__id__] = true
32
+ bfs_seen[object.__id__] = true
35
33
  object.each do |k, v|
36
- queue.push([ k, convert_to_hash_or_ary(v) ])
34
+ queue.push([ k, bfs_convert_to_hash_or_ary(v) ])
37
35
  end
38
36
  visit_internal or next
39
37
  when Array === object
40
- seen[object.__id__] = true
38
+ bfs_seen[object.__id__] = true
41
39
  object.each_with_index do |v, i|
42
- queue.push([ i, convert_to_hash_or_ary(v) ])
40
+ queue.push([ i, bfs_convert_to_hash_or_ary(v) ])
43
41
  end
44
42
  visit_internal or next
45
43
  end
@@ -47,15 +45,14 @@ module Tins
47
45
  end
48
46
  self
49
47
  ensure
50
- self.seen = nil
48
+ self.bfs_seen = nil
51
49
  end
52
50
 
53
51
  # Converts the given object into a hash or array if possible
54
52
  #
55
53
  # @param object [Object] The object to convert
56
- #
57
54
  # @return [Hash, Array, Object] The converted object or itself if not convertible
58
- def convert_to_hash_or_ary(object)
55
+ def bfs_convert_to_hash_or_ary(object)
59
56
  case
60
57
  when object.respond_to?(:to_hash)
61
58
  object.to_hash
@@ -0,0 +1,81 @@
1
+ module Tins
2
+ # HashDFS for a depth‑first traversal for Ruby hash and array structures.
3
+ #
4
+ # Provides methods to traverse hash structures in a depth-first manner,
5
+ # visiting all keys and values.
6
+ module HashDFS
7
+ extend Tins::ThreadLocal
8
+
9
+ # Thread‑local flag used to remember which objects have already been
10
+ # visited during the current DFS run. It is cleared in the `ensure`
11
+ # block to avoid leaking state between traversals.
12
+ thread_local :dfs_seen
13
+
14
+ # Performs a depth‑first search on the receiver’s structure.
15
+ #
16
+ # @param visit_internal [Boolean] whether to yield internal hashes/arrays.
17
+ # When `false` (default) the block is called only for leaf values.
18
+ # When `true`, the block is called for every node, including the
19
+ # intermediate hashes/arrays that contain other objects.
20
+ # @yield [index, object] yields the index/key (or array index) and the
21
+ # object being visited.
22
+ # @yieldparam index [Object, Integer, nil] the key or array index, or
23
+ # `nil` for the root object.
24
+ # @yieldparam object [Object] the current object (Hash, Array, or leaf).
25
+ # @raise [ArgumentError] if no block is given.
26
+ # @return [self] returns the receiver for chaining.
27
+ #
28
+ # @example Basic usage
29
+ # { a: 1, b: [2, 3] }.dfs do |idx, val|
30
+ # puts "#{idx.inspect} => #{val.inspect}"
31
+ # end
32
+ def dfs(visit_internal: false, &block)
33
+ block or raise ArgumentError, 'require &block argument'
34
+ self.dfs_seen = {}
35
+ stack = []
36
+ stack.push([nil, self])
37
+
38
+ while (index, object = stack.pop)
39
+ case
40
+ when dfs_seen[object.__id__]
41
+ next
42
+ when Hash === object
43
+ dfs_seen[object.__id__] = true
44
+ object.each do |k, v|
45
+ stack.push([k, dfs_convert_to_hash_or_ary(v)])
46
+ end
47
+ visit_internal or next
48
+ when Array === object
49
+ dfs_seen[object.__id__] = true
50
+ object.each_with_index do |v, i|
51
+ stack.push([i, dfs_convert_to_hash_or_ary(v)])
52
+ end
53
+ visit_internal or next
54
+ end
55
+ block.(index, object)
56
+ end
57
+ self
58
+ ensure
59
+ self.dfs_seen = nil
60
+ end
61
+
62
+ # Converts the given object into a hash or array if possible.
63
+ #
64
+ # @param object [Object] the object to convert.
65
+ # @return [Hash, Array, Object] the converted object or the original
66
+ # object if no conversion method is available.
67
+ #
68
+ # @example
69
+ # dfs_convert_to_hash_or_ary(Struct.new(:a).new(1)) # => { a: 1 }
70
+ def dfs_convert_to_hash_or_ary(object)
71
+ case
72
+ when object.respond_to?(:to_hash)
73
+ object.to_hash
74
+ when object.respond_to?(:to_ary)
75
+ object.to_ary
76
+ else
77
+ object
78
+ end
79
+ end
80
+ end
81
+ end
@@ -49,7 +49,23 @@ module Tins
49
49
  # # => { name: "John", self: "[Circular]" }
50
50
  def symbolize_keys_recursive(circular: nil)
51
51
  self.seen = {}
52
- _symbolize_keys_recursive(self, circular: circular)
52
+ _transform_keys_recursive(self, circular: circular, transform: :to_sym)
53
+ ensure
54
+ self.seen = nil
55
+ end
56
+
57
+ # Converts all keys in the hash (and nested hashes) to strings.
58
+ #
59
+ # @param circular [Object] The value to return for circular references.
60
+ # @return [Hash] A new hash with all keys converted to strings.
61
+ #
62
+ # @example
63
+ # hash = { name: "John", address: { city: "NYC" } }
64
+ # hash.stringify_keys_recursive
65
+ # # => { "name" => "John", "address" => { "city" => "NYC" } }
66
+ def stringify_keys_recursive(circular: nil)
67
+ self.seen = {}
68
+ _transform_keys_recursive(self, circular: circular, transform: :to_s)
53
69
  ensure
54
70
  self.seen = nil
55
71
  end
@@ -70,14 +86,28 @@ module Tins
70
86
  replace symbolize_keys_recursive(circular: circular)
71
87
  end
72
88
 
89
+ # Converts all keys in the hash (and nested hashes) to strings in place.
90
+ #
91
+ # @param circular [Object] The value to return for circular references.
92
+ # @return [Hash] The same hash with all keys converted to strings.
93
+ #
94
+ # @example
95
+ # hash = { name: "John", address: { city: "NYC" } }
96
+ # hash.stringify_keys_recursive!
97
+ # # => { "name" => "John", "address" => { "city" => "NYC" } }
98
+ def stringify_keys_recursive!(circular: nil)
99
+ replace stringify_keys_recursive(circular: circular)
100
+ end
101
+
73
102
  private
74
103
 
75
- # Performs the actual recursive symbolization work
104
+ # Performs the actual recursive transformation work
76
105
  #
77
106
  # @param object [Object] The object to process
78
107
  # @param circular [Object] The value to return for circular references
79
- # @return [Object] The processed object with symbolized keys
80
- def _symbolize_keys_recursive(object, circular: nil)
108
+ # @param transform [Symbol] The transformation to apply to keys (`:to_sym` or `:to_s`).
109
+ # @return [Object] The processed object with transformed keys
110
+ def _transform_keys_recursive(object, circular: nil, transform:)
81
111
  case
82
112
  when seen[object.__id__]
83
113
  object = circular
@@ -87,7 +117,8 @@ module Tins
87
117
  new_object = object.class.new
88
118
  seen[new_object.__id__] = true
89
119
  object.each do |k, v|
90
- new_object[k.to_s.to_sym] = _symbolize_keys_recursive(v, circular: circular)
120
+ new_object[k.to_s.__send__(transform)] =
121
+ _transform_keys_recursive(v, circular: circular, transform:)
91
122
  end
92
123
  object = new_object
93
124
  when object.respond_to?(:to_ary)
@@ -96,7 +127,7 @@ module Tins
96
127
  new_object = object.class.new(object.size)
97
128
  seen[new_object.__id__] = true
98
129
  object.each_with_index do |v, i|
99
- new_object[i] = _symbolize_keys_recursive(v, circular: circular)
130
+ new_object[i] = _transform_keys_recursive(v, circular: circular, transform:)
100
131
  end
101
132
  object = new_object
102
133
  end
data/lib/tins/token.rb CHANGED
@@ -35,11 +35,17 @@ module Tins
35
35
  BASE64_URL_FILENAME_SAFE_ALPHABET =
36
36
  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".freeze
37
37
 
38
- # Base32 alphabet
38
+ # Base32 alphabet (RFC 4648)
39
39
  BASE32_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567".freeze
40
40
 
41
- # Extended hex base32 alphabet
42
- BASE32_EXTENDED_HEX_ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUV".freeze
41
+ # Extended uppercase hex base32 alphabet
42
+ BASE32_EXTENDED_UPPERCASE_HEX_ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUV".freeze
43
+
44
+ # Extended lowercase hex base32 alphabet
45
+ BASE32_EXTENDED_LOWERCASE_HEX_ALPHABET = "0123456789abcdefghijklmnopqrstuv".freeze
46
+
47
+ # Extended hex base32 default alphabet (uppercase)
48
+ BASE32_EXTENDED_HEX_ALPHABET = BASE32_EXTENDED_UPPERCASE_HEX_ALPHABET
43
49
 
44
50
  # Base16 uppercase alphabet
45
51
  BASE16_UPPERCASE_ALPHABET = "0123456789ABCDEF".freeze
@@ -81,7 +87,7 @@ module Tins
81
87
  bits > 0 or raise ArgumentError, 'bits has to be positive'
82
88
  length = (Math.log(1 << bits) / Math.log(alphabet.size)).ceil
83
89
  end
84
- self.bits = self.class.analyze(alphabet:, length:)
90
+ @bits = self.class.analyze(alphabet:, length:)
85
91
  token = +''
86
92
  length.times { token << alphabet[random.random_number(alphabet.size)] }
87
93
  super token
@@ -90,7 +96,7 @@ module Tins
90
96
  # The bit length of the token.
91
97
  #
92
98
  # @return [Integer] the number of bits of entropy in the token
93
- attr_accessor :bits
99
+ attr_reader :bits
94
100
 
95
101
  # The analyze method calculates the bit length of a token based on its
96
102
  # alphabet and length.
@@ -106,7 +112,7 @@ module Tins
106
112
  def self.analyze(alphabet: Tins::Token::DEFAULT_ALPHABET, token: nil, length: nil)
107
113
  token.nil? ^ length.nil? or raise ArgumentError, 'either token or length is required'
108
114
  length ||= token.length
109
- (Math.log(alphabet.size ** length) / Math.log(2)).floor
115
+ (length * Math.log2(alphabet.size)).floor
110
116
  end
111
117
  end
112
118
  end
data/lib/tins/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Tins
2
2
  # Tins version
3
- VERSION = '1.51.1'
3
+ VERSION = '1.53.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:
@@ -0,0 +1,7 @@
1
+ require 'tins/hash_dfs'
2
+
3
+ module Tins
4
+ class ::Hash
5
+ include HashDFS
6
+ end
7
+ end
data/lib/tins/xt.rb CHANGED
@@ -41,5 +41,6 @@ module Tins
41
41
  require 'tins/xt/temp_io'
42
42
  require 'tins/xt/deprecate'
43
43
  require 'tins/xt/hash_bfs'
44
+ require 'tins/xt/hash_dfs'
44
45
  require 'tins/xt/minimize'
45
46
  end
data/lib/tins.rb CHANGED
@@ -74,5 +74,6 @@ module Tins
74
74
  require 'tins/lru_cache'
75
75
  require 'tins/deprecate'
76
76
  require 'tins/hash_bfs'
77
+ require 'tins/hash_dfs'
77
78
  end
78
79
  require 'tins/alias'
@@ -0,0 +1,41 @@
1
+ require 'test_helper'
2
+ require 'tins/xt/hash_dfs'
3
+
4
+ module Tins
5
+ class HashDFSTest < Test::Unit::TestCase
6
+ def setup
7
+ @hash = { a: 'foo', b: [ { c: 'baz' }, { d: 'quux' }, [ 'blub' ] ] }
8
+ end
9
+
10
+ def test_without_nodes
11
+ results = []
12
+ @hash.dfs { |*a| results.push(a) }
13
+ assert_equal [[0, 'blub'], [:d, 'quux'], [:c, 'baz'], [:a, 'foo']], results
14
+ end
15
+
16
+ def test_with_nodes
17
+ results = []
18
+ @hash.dfs(visit_internal: true) { |*a| results.push(a) }
19
+ expected = [
20
+ [nil, { a: 'foo', b: [{ c: 'baz' }, { d: 'quux' }, ['blub']] }],
21
+ [:b, [{ c: 'baz' }, { d: 'quux' }, ['blub']]],
22
+ [2, ['blub']],
23
+ [0, 'blub'],
24
+ [1, { d: 'quux' }],
25
+ [:d, 'quux'],
26
+ [0, { c: 'baz' }],
27
+ [:c, 'baz'],
28
+ [:a, 'foo']
29
+ ]
30
+ assert_equal expected, results
31
+ assert_equal 9, results.size
32
+ end
33
+
34
+ def test_with_nodes_with_circle
35
+ results = []
36
+ @hash[:b].last << @hash
37
+ @hash.dfs(visit_internal: true) { |*a| results.push(a) }
38
+ assert_equal 9, results.size
39
+ end
40
+ end
41
+ end
@@ -59,5 +59,61 @@ module Tins
59
59
  hash.symbolize_keys_recursive(circular: :circular)
60
60
  )
61
61
  end
62
+
63
+ def test_stringify
64
+ hash = {
65
+ :key => [
66
+ {
67
+ :key => {
68
+ :key => true
69
+ },
70
+ :o => Object.new,
71
+ }
72
+ ],
73
+ }
74
+ hash2 = hash.stringify_keys_recursive
75
+ assert hash2["key"][0]["key"]["key"]
76
+ hash.stringify_keys_recursive!
77
+ assert hash["key"][0]["key"]["key"]
78
+ end
79
+
80
+ def test_stringify_bang
81
+ hash = { :foo => 'bar' }
82
+ hash.stringify_keys_recursive!
83
+ assert_equal({ "foo" => 'bar' }, hash)
84
+ end
85
+
86
+ def test_stringify_with_circular_array
87
+ circular_array = [].tap { |a| a << a }
88
+ assert_equal(
89
+ { "foo" => [ nil ] },
90
+ { :foo => circular_array }.stringify_keys_recursive
91
+ )
92
+ assert_equal(
93
+ { "foo" => [ :circular ] },
94
+ { :foo => circular_array }.stringify_keys_recursive(circular: :circular)
95
+ )
96
+ end
97
+
98
+ def test_stringify_with_circular_hash
99
+ circular_hash = {}.tap { |h| h[:foo] = h }
100
+ circular_hash_string = {}.tap { |h| h['foo'] = nil }
101
+ assert_equal(
102
+ { "bar" => circular_hash_string },
103
+ { :bar => circular_hash }.stringify_keys_recursive
104
+ )
105
+ assert_equal(
106
+ { "bar" => { "foo" => :circular } },
107
+ { :bar => circular_hash }.stringify_keys_recursive(circular: :circular)
108
+ )
109
+ end
110
+
111
+ def test_stringify_deeper_nesting
112
+ hash = { :foo => [ true, [ { :bar => {}.tap { |h| h[:foo] = h } }, 3.141, [].tap { |arr| arr << arr } ] ] }
113
+ assert_equal(
114
+ {"foo"=> [true, [{"bar"=> {"foo"=> :circular}}, 3.141, [:circular]]]},
115
+ hash.stringify_keys_recursive(circular: :circular)
116
+ )
117
+ end
62
118
  end
63
- end
119
+ end
data/tins.gemspec CHANGED
@@ -1,9 +1,9 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: tins 1.51.1 ruby lib
2
+ # stub: tins 1.53.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "tins".freeze
6
- s.version = "1.51.1".freeze
6
+ s.version = "1.53.0".freeze
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
@@ -11,19 +11,19 @@ Gem::Specification.new do |s|
11
11
  s.date = "1980-01-02"
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/date_dummy.rb".freeze, "lib/tins/date_time_dummy.rb".freeze, "lib/tins/deep_dup.rb".freeze, "lib/tins/deprecate.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_bfs.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_named_placeholders.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/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/date_dummy.rb".freeze, "lib/tins/xt/date_time_dummy.rb".freeze, "lib/tins/xt/deep_dup.rb".freeze, "lib/tins/xt/deprecate.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_bfs.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/minimize.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_named_placeholders.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/write.rb".freeze]
15
- s.files = ["CHANGES.md".freeze, "Gemfile".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".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/date_dummy.rb".freeze, "lib/tins/date_time_dummy.rb".freeze, "lib/tins/deep_dup.rb".freeze, "lib/tins/deprecate.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_bfs.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_named_placeholders.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/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/date_dummy.rb".freeze, "lib/tins/xt/date_time_dummy.rb".freeze, "lib/tins/xt/deep_dup.rb".freeze, "lib/tins/xt/deprecate.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_bfs.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/minimize.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_named_placeholders.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/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/date_dummy_test.rb".freeze, "tests/date_time_dummy_test.rb".freeze, "tests/deep_dup_test.rb".freeze, "tests/delegate_test.rb".freeze, "tests/deprecate_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_bfs_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_named_placeholders.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/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/date_dummy.rb".freeze, "lib/tins/date_time_dummy.rb".freeze, "lib/tins/deep_dup.rb".freeze, "lib/tins/deprecate.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_bfs.rb".freeze, "lib/tins/hash_dfs.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_named_placeholders.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/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/date_dummy.rb".freeze, "lib/tins/xt/date_time_dummy.rb".freeze, "lib/tins/xt/deep_dup.rb".freeze, "lib/tins/xt/deprecate.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_bfs.rb".freeze, "lib/tins/xt/hash_dfs.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/minimize.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_named_placeholders.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/write.rb".freeze]
15
+ s.files = ["CHANGES.md".freeze, "Gemfile".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".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/date_dummy.rb".freeze, "lib/tins/date_time_dummy.rb".freeze, "lib/tins/deep_dup.rb".freeze, "lib/tins/deprecate.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_bfs.rb".freeze, "lib/tins/hash_dfs.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_named_placeholders.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/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/date_dummy.rb".freeze, "lib/tins/xt/date_time_dummy.rb".freeze, "lib/tins/xt/deep_dup.rb".freeze, "lib/tins/xt/deprecate.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_bfs.rb".freeze, "lib/tins/xt/hash_dfs.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/minimize.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_named_placeholders.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/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/date_dummy_test.rb".freeze, "tests/date_time_dummy_test.rb".freeze, "tests/deep_dup_test.rb".freeze, "tests/delegate_test.rb".freeze, "tests/deprecate_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_bfs_test.rb".freeze, "tests/hash_dfs_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_named_placeholders.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/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(">= 3.1".freeze)
20
- s.rubygems_version = "4.0.3".freeze
20
+ s.rubygems_version = "4.0.10".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/date_dummy_test.rb".freeze, "tests/date_time_dummy_test.rb".freeze, "tests/deep_dup_test.rb".freeze, "tests/delegate_test.rb".freeze, "tests/deprecate_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_bfs_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_named_placeholders.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/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/date_dummy_test.rb".freeze, "tests/date_time_dummy_test.rb".freeze, "tests/deep_dup_test.rb".freeze, "tests/delegate_test.rb".freeze, "tests/deprecate_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_bfs_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/unit_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/date_dummy_test.rb".freeze, "tests/date_time_dummy_test.rb".freeze, "tests/deep_dup_test.rb".freeze, "tests/delegate_test.rb".freeze, "tests/deprecate_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_bfs_test.rb".freeze, "tests/hash_dfs_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_named_placeholders.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/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/date_dummy_test.rb".freeze, "tests/date_time_dummy_test.rb".freeze, "tests/deep_dup_test.rb".freeze, "tests/delegate_test.rb".freeze, "tests/deprecate_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_bfs_test.rb".freeze, "tests/hash_dfs_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/unit_test.rb".freeze]
23
23
 
24
24
  s.specification_version = 4
25
25
 
26
- s.add_development_dependency(%q<gem_hadar>.freeze, [">= 2.16.3".freeze])
26
+ s.add_development_dependency(%q<gem_hadar>.freeze, [">= 2.17.0".freeze])
27
27
  s.add_development_dependency(%q<all_images>.freeze, [">= 0".freeze])
28
28
  s.add_development_dependency(%q<debug>.freeze, [">= 0".freeze])
29
29
  s.add_development_dependency(%q<simplecov>.freeze, [">= 0".freeze])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tins
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.51.1
4
+ version: 1.53.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: 2.16.3
18
+ version: 2.17.0
19
19
  type: :development
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: 2.16.3
25
+ version: 2.17.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: all_images
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -181,6 +181,7 @@ extra_rdoc_files:
181
181
  - lib/tins/generator.rb
182
182
  - lib/tins/go.rb
183
183
  - lib/tins/hash_bfs.rb
184
+ - lib/tins/hash_dfs.rb
184
185
  - lib/tins/hash_symbolize_keys_recursive.rb
185
186
  - lib/tins/hash_union.rb
186
187
  - lib/tins/if_predicate.rb
@@ -239,6 +240,7 @@ extra_rdoc_files:
239
240
  - lib/tins/xt/file_binary.rb
240
241
  - lib/tins/xt/full.rb
241
242
  - lib/tins/xt/hash_bfs.rb
243
+ - lib/tins/xt/hash_dfs.rb
242
244
  - lib/tins/xt/hash_symbolize_keys_recursive.rb
243
245
  - lib/tins/xt/hash_union.rb
244
246
  - lib/tins/xt/if_predicate.rb
@@ -326,6 +328,7 @@ files:
326
328
  - lib/tins/generator.rb
327
329
  - lib/tins/go.rb
328
330
  - lib/tins/hash_bfs.rb
331
+ - lib/tins/hash_dfs.rb
329
332
  - lib/tins/hash_symbolize_keys_recursive.rb
330
333
  - lib/tins/hash_union.rb
331
334
  - lib/tins/if_predicate.rb
@@ -384,6 +387,7 @@ files:
384
387
  - lib/tins/xt/file_binary.rb
385
388
  - lib/tins/xt/full.rb
386
389
  - lib/tins/xt/hash_bfs.rb
390
+ - lib/tins/xt/hash_dfs.rb
387
391
  - lib/tins/xt/hash_symbolize_keys_recursive.rb
388
392
  - lib/tins/xt/hash_union.rb
389
393
  - lib/tins/xt/if_predicate.rb
@@ -437,6 +441,7 @@ files:
437
441
  - tests/generator_test.rb
438
442
  - tests/go_test.rb
439
443
  - tests/hash_bfs_test.rb
444
+ - tests/hash_dfs_test.rb
440
445
  - tests/hash_symbolize_keys_recursive_test.rb
441
446
  - tests/hash_union_test.rb
442
447
  - tests/if_predicate_test.rb
@@ -498,7 +503,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
498
503
  - !ruby/object:Gem::Version
499
504
  version: '0'
500
505
  requirements: []
501
- rubygems_version: 4.0.3
506
+ rubygems_version: 4.0.10
502
507
  specification_version: 4
503
508
  summary: Useful stuff.
504
509
  test_files:
@@ -525,6 +530,7 @@ test_files:
525
530
  - tests/generator_test.rb
526
531
  - tests/go_test.rb
527
532
  - tests/hash_bfs_test.rb
533
+ - tests/hash_dfs_test.rb
528
534
  - tests/hash_symbolize_keys_recursive_test.rb
529
535
  - tests/hash_union_test.rb
530
536
  - tests/if_predicate_test.rb