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 +4 -4
- data/CHANGES.md +42 -0
- data/lib/tins/hash_bfs.rb +15 -18
- data/lib/tins/hash_dfs.rb +81 -0
- data/lib/tins/hash_symbolize_keys_recursive.rb +37 -6
- data/lib/tins/token.rb +12 -6
- data/lib/tins/version.rb +1 -1
- data/lib/tins/xt/hash_dfs.rb +7 -0
- data/lib/tins/xt.rb +1 -0
- data/lib/tins.rb +1 -0
- data/tests/hash_dfs_test.rb +41 -0
- data/tests/hash_symbolize_keys_recursive_test.rb +57 -1
- data/tins.gemspec +7 -7
- metadata +10 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7878ad969917b7fe9cb5ecdd474c612c5a440434331b3036729000b42ba26f7a
|
|
4
|
+
data.tar.gz: c0a7b9b5d3f69b19ed6ef11de637e70a286324089bf12f28c555502af1d7b775
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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 :
|
|
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 [
|
|
17
|
-
# @yield [
|
|
18
|
-
#
|
|
19
|
-
# @
|
|
20
|
-
#
|
|
21
|
-
# @
|
|
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.
|
|
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
|
|
29
|
+
when bfs_seen[object.__id__]
|
|
32
30
|
next
|
|
33
31
|
when Hash === object
|
|
34
|
-
|
|
32
|
+
bfs_seen[object.__id__] = true
|
|
35
33
|
object.each do |k, v|
|
|
36
|
-
queue.push([ k,
|
|
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
|
-
|
|
38
|
+
bfs_seen[object.__id__] = true
|
|
41
39
|
object.each_with_index do |v, i|
|
|
42
|
-
queue.push([ i,
|
|
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.
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
# @
|
|
80
|
-
|
|
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.
|
|
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] =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
115
|
+
(length * Math.log2(alphabet.size)).floor
|
|
110
116
|
end
|
|
111
117
|
end
|
|
112
118
|
end
|
data/lib/tins/version.rb
CHANGED
data/lib/tins/xt.rb
CHANGED
data/lib/tins.rb
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|