tins 1.36.1 → 1.37.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 +14 -0
- data/lib/tins/concern.rb +36 -0
- data/lib/tins/version.rb +1 -1
- data/tests/concern_test.rb +39 -1
- data/tins.gemspec +4 -4
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '049e3bf81de447eec53664f5555656602906bbd44a5f98b2e0e953318aadff77'
|
4
|
+
data.tar.gz: 14debef966e248366ec1ef72b39b8ccc094a91049ed6cd44e9ee2550c607ae02
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c93d9b5b23c3305f422f0efd81e0828591682331532b51f4de1a84e305f77bb3f9374abcf8b725cd665a74ef352cabb525f49b4dfa68fc78f5568e87a5e78012
|
7
|
+
data.tar.gz: 4b8d5d1da5bffb1b26449f96aa0f292a28582e5409d734ba5cdc18c428a2e6b57f577662773b776abcbb5464d505ae6726b60bba54f2142ddf5a32faae5fd9e9
|
data/CHANGES.md
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
# Changes
|
2
2
|
|
3
|
+
## 2024-10-19 v1.37.0
|
4
|
+
|
5
|
+
* Add support for module prepended blocks in **Tins::Concern**:
|
6
|
+
* Added `prepend_features` method to Tins concern
|
7
|
+
* Updated ConcernTest to test prepend feature
|
8
|
+
* Raise StandardError for duplicate block definitions for included and
|
9
|
+
prepended blocks
|
10
|
+
* Added `class_methods` method to Tins concern:
|
11
|
+
* Added `class_methods` method to lib/tins/concern.rb
|
12
|
+
- Creates or retrieves ClassMethods module for defining class-level methods
|
13
|
+
* Updated tests in `tests/concern_test.rb`
|
14
|
+
- Added test for new `baz1` and `baz2` methods
|
15
|
+
+ Tested availability of `bar`, `baz1`, and `baz2` methods on A
|
16
|
+
|
3
17
|
## 2024-10-11 v1.36.1
|
4
18
|
|
5
19
|
* Fixed a typo in the code
|
data/lib/tins/concern.rb
CHANGED
@@ -19,12 +19,48 @@ module Tins
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
def prepend_features(base)
|
23
|
+
if base.instance_variable_defined?("@_dependencies")
|
24
|
+
base.instance_variable_get("@_dependencies") << self
|
25
|
+
false
|
26
|
+
else
|
27
|
+
return false if base < self
|
28
|
+
@_dependencies.each { |dep| base.send(:include, dep) }
|
29
|
+
super
|
30
|
+
base.extend const_get("ClassMethods") if const_defined?("ClassMethods")
|
31
|
+
base.class_eval(&@_prepended_block) if instance_variable_defined?("@_prepended_block")
|
32
|
+
Thread.current[:tin_concern_args] = nil
|
33
|
+
true
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
22
37
|
def included(base = nil, &block)
|
23
38
|
if base.nil?
|
39
|
+
instance_variable_defined?(:@_included_block) and
|
40
|
+
raise StandardError, "included block already defined"
|
24
41
|
@_included_block = block
|
25
42
|
else
|
26
43
|
super
|
27
44
|
end
|
28
45
|
end
|
46
|
+
|
47
|
+
def prepended(base = nil, &block)
|
48
|
+
if base.nil?
|
49
|
+
instance_variable_defined?(:@_prepended_block) and
|
50
|
+
raise StandardError, "prepended block already defined"
|
51
|
+
@_prepended_block = block
|
52
|
+
else
|
53
|
+
super
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def class_methods(&block)
|
58
|
+
modul = const_get(:ClassMethods) if const_defined?(:ClassMethods, false)
|
59
|
+
unless modul
|
60
|
+
modul = Module.new
|
61
|
+
const_set(:ClassMethods, modul)
|
62
|
+
end
|
63
|
+
modul.module_eval(&block)
|
64
|
+
end
|
29
65
|
end
|
30
66
|
end
|
data/lib/tins/version.rb
CHANGED
data/tests/concern_test.rb
CHANGED
@@ -8,27 +8,65 @@ class ConcernTest < Test::Unit::TestCase
|
|
8
8
|
$included = self
|
9
9
|
end
|
10
10
|
|
11
|
+
prepended do
|
12
|
+
$prepended = self
|
13
|
+
end
|
14
|
+
|
11
15
|
def foo
|
12
16
|
:foo
|
13
17
|
end
|
14
18
|
|
19
|
+
class_methods do
|
20
|
+
def baz1
|
21
|
+
:baz1
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
15
25
|
module ClassMethods
|
16
26
|
def bar
|
17
27
|
:bar
|
18
28
|
end
|
19
29
|
end
|
30
|
+
|
31
|
+
class_methods do
|
32
|
+
def baz2
|
33
|
+
:baz2
|
34
|
+
end
|
35
|
+
end
|
20
36
|
end
|
21
37
|
|
22
38
|
$included = nil
|
39
|
+
$prepended = nil
|
23
40
|
|
24
41
|
class A
|
25
42
|
include AC
|
26
43
|
end
|
27
44
|
|
28
|
-
|
45
|
+
class B
|
46
|
+
prepend AC
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_concern_include
|
29
50
|
a = A.new
|
30
51
|
assert_equal A, $included
|
31
52
|
assert_equal :foo, a.foo
|
32
53
|
assert_equal :bar, A.bar
|
54
|
+
assert_equal :baz1, A.baz1
|
55
|
+
assert_equal :baz2, A.baz2
|
56
|
+
assert_raise(StandardError) do
|
57
|
+
AC.module_eval { included {} }
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_concern_prepend
|
62
|
+
a = B.new
|
63
|
+
assert_equal B, $prepended
|
64
|
+
assert_equal :foo, a.foo
|
65
|
+
assert_equal :bar, B.bar
|
66
|
+
assert_equal :baz1, B.baz1
|
67
|
+
assert_equal :baz2, B.baz2
|
68
|
+
assert_raise(StandardError) do
|
69
|
+
AC.module_eval { prepended {} }
|
70
|
+
end
|
33
71
|
end
|
34
72
|
end
|
data/tins.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: tins 1.
|
2
|
+
# stub: tins 1.37.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.37.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]
|
10
10
|
s.authors = ["Florian Frank".freeze]
|
11
|
-
s.date = "2024-10-
|
11
|
+
s.date = "2024-10-19"
|
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
14
|
s.extra_rdoc_files = ["README.md".freeze, "lib/dslkit.rb".freeze, "lib/dslkit/polite.rb".freeze, "lib/dslkit/rude.rb".freeze, "lib/spruz.rb".freeze, "lib/tins.rb".freeze, "lib/tins/alias.rb".freeze, "lib/tins/annotate.rb".freeze, "lib/tins/ask_and_send.rb".freeze, "lib/tins/attempt.rb".freeze, "lib/tins/bijection.rb".freeze, "lib/tins/case_predicate.rb".freeze, "lib/tins/complete.rb".freeze, "lib/tins/concern.rb".freeze, "lib/tins/count_by.rb".freeze, "lib/tins/date_dummy.rb".freeze, "lib/tins/date_time_dummy.rb".freeze, "lib/tins/deep_const_get.rb".freeze, "lib/tins/deep_dup.rb".freeze, "lib/tins/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_underscore.rb".freeze, "lib/tins/string_version.rb".freeze, "lib/tins/subhash.rb".freeze, "lib/tins/temp_io.rb".freeze, "lib/tins/temp_io_enum.rb".freeze, "lib/tins/terminal.rb".freeze, "lib/tins/thread_local.rb".freeze, "lib/tins/time_dummy.rb".freeze, "lib/tins/timed_cache.rb".freeze, "lib/tins/to.rb".freeze, "lib/tins/to_proc.rb".freeze, "lib/tins/token.rb".freeze, "lib/tins/uniq_by.rb".freeze, "lib/tins/unit.rb".freeze, "lib/tins/version.rb".freeze, "lib/tins/write.rb".freeze, "lib/tins/xt.rb".freeze, "lib/tins/xt/annotate.rb".freeze, "lib/tins/xt/ask_and_send.rb".freeze, "lib/tins/xt/attempt.rb".freeze, "lib/tins/xt/blank.rb".freeze, "lib/tins/xt/case_predicate.rb".freeze, "lib/tins/xt/complete.rb".freeze, "lib/tins/xt/concern.rb".freeze, "lib/tins/xt/count_by.rb".freeze, "lib/tins/xt/date_dummy.rb".freeze, "lib/tins/xt/date_time_dummy.rb".freeze, "lib/tins/xt/deep_const_get.rb".freeze, "lib/tins/xt/deep_dup.rb".freeze, "lib/tins/xt/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/named.rb".freeze, "lib/tins/xt/null.rb".freeze, "lib/tins/xt/p.rb".freeze, "lib/tins/xt/partial_application.rb".freeze, "lib/tins/xt/proc_compose.rb".freeze, "lib/tins/xt/proc_prelude.rb".freeze, "lib/tins/xt/range_plus.rb".freeze, "lib/tins/xt/require_maybe.rb".freeze, "lib/tins/xt/responding.rb".freeze, "lib/tins/xt/secure_write.rb".freeze, "lib/tins/xt/sexy_singleton.rb".freeze, "lib/tins/xt/string.rb".freeze, "lib/tins/xt/string_byte_order_mark.rb".freeze, "lib/tins/xt/string_camelize.rb".freeze, "lib/tins/xt/string_underscore.rb".freeze, "lib/tins/xt/string_version.rb".freeze, "lib/tins/xt/subhash.rb".freeze, "lib/tins/xt/temp_io.rb".freeze, "lib/tins/xt/time_dummy.rb".freeze, "lib/tins/xt/time_freezer.rb".freeze, "lib/tins/xt/to.rb".freeze, "lib/tins/xt/uniq_by.rb".freeze, "lib/tins/xt/write.rb".freeze]
|
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
|
24
24
|
s.specification_version = 4
|
25
25
|
|
26
|
-
s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.
|
26
|
+
s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.19".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<term-ansicolor>.freeze, [">= 0".freeze])
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tins
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.37.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-10-
|
11
|
+
date: 2024-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gem_hadar
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: '1.19'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: '1.19'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: all_images
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|