shenanigans 1.0.15 → 1.0.16
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
- metadata +75 -23
- data/Gemfile +0 -9
- data/test/array/caret_test.rb +0 -9
- data/test/array/random_subarray_test.rb +0 -10
- data/test/array/reductions_test.rb +0 -27
- data/test/array/zip_with_test.rb +0 -14
- data/test/hash/extract_test.rb +0 -11
- data/test/hash/has_shape_pred_test.rb +0 -40
- data/test/hash/to_ostruct_test.rb +0 -23
- data/test/integer/divisible_by_test.rb +0 -16
- data/test/integer/string_length_test.rb +0 -16
- data/test/kernel/fn_test.rb +0 -14
- data/test/kernel/prompt_test.rb +0 -27
- data/test/kernel/require_optional_test.rb +0 -15
- data/test/kernel/with_test.rb +0 -12
- data/test/module/private_accessor_test.rb +0 -21
- data/test/object/display_test.rb +0 -35
- data/test/string/cmpi_test.rb +0 -10
- data/test/string/in_groups_of_test.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e7e996c24ffbe66519073bafd5f160aba38a5de770493d2b6ef013c68398aae
|
4
|
+
data.tar.gz: f4785e43a5297504fe49818b80d7f5e57d6f32040c01f89548e1c303f3527556
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f7e8cb5e2a908f55f863e0859d5ff1ac58bef88ecab500d3f370c2162a25c0ce879e0e2db120cecec7c7ad9a5293ecebd430259afc11f6f50c22c8955609e8b7
|
7
|
+
data.tar.gz: dbbd0e0967510ce79c8ab5b47dcf791b31e6b9912b6e25deaba260c9b9c1e9cff2932e41ae4deb9eb04a3cc9e0c929b133221921141013050a871add2eee5264
|
metadata
CHANGED
@@ -1,22 +1,91 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shenanigans
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Kohl
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
12
|
-
dependencies:
|
11
|
+
date: 2022-02-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '5.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '5.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '13.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '13.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: standard
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.7'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.7'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: yard
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.9.20
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.9.20
|
13
83
|
description: A collection of extensions for various Ruby core classes.
|
14
|
-
email: citizen428
|
84
|
+
email: me@citizen428.net
|
15
85
|
executables: []
|
16
86
|
extensions: []
|
17
87
|
extra_rdoc_files: []
|
18
88
|
files:
|
19
|
-
- Gemfile
|
20
89
|
- LICENSE
|
21
90
|
- README.rdoc
|
22
91
|
- lib/shenanigans.rb
|
@@ -44,23 +113,6 @@ files:
|
|
44
113
|
- lib/shenanigans/string.rb
|
45
114
|
- lib/shenanigans/string/cmpi.rb
|
46
115
|
- lib/shenanigans/string/in_groups_of.rb
|
47
|
-
- test/array/caret_test.rb
|
48
|
-
- test/array/random_subarray_test.rb
|
49
|
-
- test/array/reductions_test.rb
|
50
|
-
- test/array/zip_with_test.rb
|
51
|
-
- test/hash/extract_test.rb
|
52
|
-
- test/hash/has_shape_pred_test.rb
|
53
|
-
- test/hash/to_ostruct_test.rb
|
54
|
-
- test/integer/divisible_by_test.rb
|
55
|
-
- test/integer/string_length_test.rb
|
56
|
-
- test/kernel/fn_test.rb
|
57
|
-
- test/kernel/prompt_test.rb
|
58
|
-
- test/kernel/require_optional_test.rb
|
59
|
-
- test/kernel/with_test.rb
|
60
|
-
- test/module/private_accessor_test.rb
|
61
|
-
- test/object/display_test.rb
|
62
|
-
- test/string/cmpi_test.rb
|
63
|
-
- test/string/in_groups_of_test.rb
|
64
116
|
homepage: http://rubydoc.info/gems/shenanigans/frames
|
65
117
|
licenses:
|
66
118
|
- MIT
|
@@ -80,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
80
132
|
- !ruby/object:Gem::Version
|
81
133
|
version: '0'
|
82
134
|
requirements: []
|
83
|
-
rubygems_version: 3.
|
135
|
+
rubygems_version: 3.3.7
|
84
136
|
signing_key:
|
85
137
|
specification_version: 4
|
86
138
|
summary: Think Facets, just less useful
|
data/Gemfile
DELETED
data/test/array/caret_test.rb
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
require "minitest/autorun"
|
2
|
-
require "shenanigans/array/random_subarray"
|
3
|
-
|
4
|
-
class RandomSubarray < Minitest::Test
|
5
|
-
def test_random_subarray
|
6
|
-
result = [*1..5].random_subarray(3)
|
7
|
-
assert result.size == 3
|
8
|
-
assert result.map { |a| a.all? { |x| x < 5 } }
|
9
|
-
end
|
10
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require "minitest/autorun"
|
2
|
-
require "shenanigans/array/reductions"
|
3
|
-
|
4
|
-
class ArrayReductions < Minitest::Test
|
5
|
-
TEST_ARRAY = [*1..4]
|
6
|
-
|
7
|
-
def test_reductions_without_params_or_block
|
8
|
-
assert_raises(ArgumentError) { TEST_ARRAY.reductions }
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_reductions_operator_only
|
12
|
-
assert TEST_ARRAY.reductions(:+) == [1, 3, 6, 10]
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_reductions_initial_only
|
16
|
-
assert TEST_ARRAY.reductions(50) { |acc, b| acc + b } == [50, 51, 53, 56, 60]
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_reductions_inital_and_operator
|
20
|
-
assert TEST_ARRAY.reductions(50, :+) == [50, 51, 53, 56, 60]
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_reductions_without_params
|
24
|
-
assert TEST_ARRAY.reductions { |acc, b| acc + b } == [1, 3, 6, 10]
|
25
|
-
assert %w[a b c].reductions { |s1, s2| s1 + s2 } == %w[a ab abc]
|
26
|
-
end
|
27
|
-
end
|
data/test/array/zip_with_test.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
require "minitest/autorun"
|
2
|
-
require "shenanigans/array/zip_with"
|
3
|
-
|
4
|
-
class ZipWith < Minitest::Test
|
5
|
-
def test_zip_with_with_symbol
|
6
|
-
result = [*1..3].zip_with([*1..3], :+)
|
7
|
-
assert result == [2, 4, 6]
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_zip_with_with_block
|
11
|
-
result = [*"a".."c"].zip_with([*"a".."c"]) { |a, b| a * 2 + b.upcase }
|
12
|
-
assert result == %w[aaA bbB ccC]
|
13
|
-
end
|
14
|
-
end
|
data/test/hash/extract_test.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require "minitest/autorun"
|
2
|
-
require "shenanigans/hash/extract"
|
3
|
-
|
4
|
-
class Extract < Minitest::Test
|
5
|
-
def test_extract
|
6
|
-
hash = { a: 1, b: 2, c: 3 }
|
7
|
-
assert_equal hash.extract(:b, :a), { a: 1, b: 2 }
|
8
|
-
assert_equal hash.extract(:a, :d), { a: 1 }
|
9
|
-
assert_equal({}.extract(:a, :c), {})
|
10
|
-
end
|
11
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require "minitest/autorun"
|
2
|
-
require "shenanigans/hash/has_shape_pred"
|
3
|
-
|
4
|
-
class HasShape < Minitest::Test
|
5
|
-
def setup
|
6
|
-
@hash = {
|
7
|
-
k1: 1.0,
|
8
|
-
k2: 1,
|
9
|
-
k3: {
|
10
|
-
k4: "1",
|
11
|
-
k5: {
|
12
|
-
k6: Array
|
13
|
-
}
|
14
|
-
}
|
15
|
-
}
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_has_shape
|
19
|
-
shape_pass = {
|
20
|
-
k1: Float,
|
21
|
-
k2: Integer,
|
22
|
-
k3: {
|
23
|
-
k4: String,
|
24
|
-
k5: {
|
25
|
-
k6: Class
|
26
|
-
}
|
27
|
-
}
|
28
|
-
}
|
29
|
-
|
30
|
-
assert @hash.has_shape?(shape_pass)
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_has_shape_fail
|
34
|
-
shape_fail = {
|
35
|
-
k1: Float
|
36
|
-
}
|
37
|
-
|
38
|
-
assert !@hash.has_shape?(shape_fail)
|
39
|
-
end
|
40
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require "minitest/autorun"
|
2
|
-
require "shenanigans/hash/to_ostruct"
|
3
|
-
|
4
|
-
class ToOstruct < Minitest::Test
|
5
|
-
def test_simple_hash
|
6
|
-
struct = {a: 1, b: 2}.to_ostruct
|
7
|
-
assert struct.a == 1
|
8
|
-
assert struct.b == 2
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_nested_hash
|
12
|
-
struct = {a: 1, b: {c: 3}}.to_ostruct
|
13
|
-
assert struct.a == 1
|
14
|
-
assert struct.b.c == 3
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_nested_array
|
18
|
-
struct = {a: 1, b: [{c: 2}, 5]}.to_ostruct
|
19
|
-
assert struct.a == 1
|
20
|
-
assert struct.b.first.c == 2
|
21
|
-
assert struct.b.last == 5
|
22
|
-
end
|
23
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require "minitest/autorun"
|
2
|
-
require "shenanigans/integer/divisible_by"
|
3
|
-
|
4
|
-
class StringLength < Minitest::Test
|
5
|
-
def test_divide_by_zero
|
6
|
-
refute 3.divisible_by(0)
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_not_divisible
|
10
|
-
refute 3.divisible_by(2)
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_divisible
|
14
|
-
assert 9.divisible_by(3)
|
15
|
-
end
|
16
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require "minitest/autorun"
|
2
|
-
require "shenanigans/integer/string_length"
|
3
|
-
|
4
|
-
class StringLength < Minitest::Test
|
5
|
-
def test_zero
|
6
|
-
assert 0.string_length == 1
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_positive
|
10
|
-
assert 123.string_length == 3
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_negative
|
14
|
-
assert(-1.string_length) == 2
|
15
|
-
end
|
16
|
-
end
|
data/test/kernel/fn_test.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
require "minitest/autorun"
|
2
|
-
require "shenanigans/kernel/fn"
|
3
|
-
|
4
|
-
class Fn < Minitest::Test
|
5
|
-
def test_with_symbols
|
6
|
-
result = ["foo bar", "baz qux"].map(&fn(:split, :last))
|
7
|
-
assert result == ["bar", "qux"]
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_with_symbols_and_lambdas
|
11
|
-
result = (1..3).map(&fn(:next, ->(x) { x * x }, ->(x) { x.to_f / 2 }))
|
12
|
-
assert result == [2.0, 4.5, 8.0]
|
13
|
-
end
|
14
|
-
end
|
data/test/kernel/prompt_test.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require "minitest/autorun"
|
2
|
-
require "shenanigans/kernel/prompt"
|
3
|
-
require "stringio"
|
4
|
-
|
5
|
-
class Prompt < Minitest::Test
|
6
|
-
def setup
|
7
|
-
@orig_stdin = $stderr
|
8
|
-
@orig_stdout = $stdout
|
9
|
-
$stdin = StringIO.new("42\n")
|
10
|
-
$stdout = StringIO.new
|
11
|
-
end
|
12
|
-
|
13
|
-
def teardown
|
14
|
-
$stdin = @orig_stdin
|
15
|
-
$stdout = @orig_stdout
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_prompt
|
19
|
-
result = prompt("Foo> ")
|
20
|
-
assert result == "42"
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_prompt_with_conversion
|
24
|
-
result = prompt("Foo> ", :to_f)
|
25
|
-
assert result == 42.0
|
26
|
-
end
|
27
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require "minitest/autorun"
|
2
|
-
require "shenanigans/kernel/require_optional"
|
3
|
-
require "stringio"
|
4
|
-
|
5
|
-
class RequireOptional < Minitest::Test
|
6
|
-
def test_require_optional
|
7
|
-
assert_nil require_optional("non_existent")
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_require_optional_with_block
|
11
|
-
res = require_optional("non_existent") { 42 }
|
12
|
-
|
13
|
-
assert_equal res, 42
|
14
|
-
end
|
15
|
-
end
|
data/test/kernel/with_test.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require "minitest/autorun"
|
2
|
-
require "shenanigans/module/private_accessor"
|
3
|
-
|
4
|
-
class PrivateAccessor < Minitest::Test
|
5
|
-
class Foo
|
6
|
-
private_accessor :bar, :baz
|
7
|
-
|
8
|
-
def initialize(v1, v2)
|
9
|
-
self.bar = v1
|
10
|
-
self.baz = v2
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_private_accessor
|
15
|
-
f = Foo.new(1, 2)
|
16
|
-
assert f.instance_variables == [:@bar, :@baz]
|
17
|
-
assert (f.private_methods & [:bar, :baz, :bar=, :baz=]).size == 4
|
18
|
-
assert f.instance_variable_get("@bar") == 1
|
19
|
-
assert f.instance_variable_get("@baz") == 2
|
20
|
-
end
|
21
|
-
end
|
data/test/object/display_test.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
require "minitest/autorun"
|
2
|
-
require "shenanigans/object/display"
|
3
|
-
require "stringio"
|
4
|
-
|
5
|
-
class Display < Minitest::Test
|
6
|
-
def setup
|
7
|
-
@orig_stdout = $stdout
|
8
|
-
$stdout = StringIO.new("", "r+")
|
9
|
-
end
|
10
|
-
|
11
|
-
def teardown
|
12
|
-
$stdout = @orig_stdout
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_display
|
16
|
-
str = "foo"
|
17
|
-
assert str.display == str
|
18
|
-
$stdout.rewind
|
19
|
-
assert $stdout.gets.chomp == str
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_display_alias
|
23
|
-
str = "foo"
|
24
|
-
assert str.d == str
|
25
|
-
$stdout.rewind
|
26
|
-
assert $stdout.gets.chomp == str
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_display_no_new_line
|
30
|
-
str = "foo"
|
31
|
-
assert str.display(false) == str
|
32
|
-
$stdout.rewind
|
33
|
-
assert $stdout.gets == str
|
34
|
-
end
|
35
|
-
end
|
data/test/string/cmpi_test.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require "minitest/autorun"
|
2
|
-
require "shenanigans/string/in_groups_of"
|
3
|
-
|
4
|
-
class InGroupsOf < Minitest::Test
|
5
|
-
def test_in_groups_of
|
6
|
-
str = "aabbcc"
|
7
|
-
assert str.in_groups_of(2) == ["aa", "bb", "cc"]
|
8
|
-
assert "".in_groups_of(2) == []
|
9
|
-
assert_raises(ArgumentError) { "".in_groups_of(0) }
|
10
|
-
end
|
11
|
-
end
|