eac_ruby_utils 0.114.0 → 0.115.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5e398a3086c6ea380d47c0ca6d718a4fb0cfe715411a0b1dd3f523858af331c6
4
- data.tar.gz: a1cc636dd7caefaaa53d08387568ed22e1f4b1ba584eb174beb703c745a6f621
3
+ metadata.gz: be84b8b3b5f7b60b56a999c8aa958747cf415dc143ed654f192bbcfd7b3d0d1d
4
+ data.tar.gz: ca5988e39fe2641aac05312f9ceb18d3a96c1a9d47491832a52a796c7df1a064
5
5
  SHA512:
6
- metadata.gz: 2cccfcd642d595d2e8ccbb053f466780c9b5d1952b018c9b4d6e302943ae9985dbdb930fa10190501a41721419c11778d22d67c8e80986f5ddc2f7422d7a587b
7
- data.tar.gz: a1398db93d9d863a6d3c400bca05e3667d7d99a97dee569cab0ffff6b0e01bc28a252cb56557ca941a4b069a8025080f7a32a0f96dc6cd0392311d53a2587b20
6
+ metadata.gz: b21dcf87a2778009eb8571d78aa533e0a1806603c7a298bb181dd0ce3a18cccec688fca12b45954d61abe590a22c538738a0ae570d21a61d03a002f9d4fe74a2
7
+ data.tar.gz: '099e597c3949a781819a89a9d8c57eaa246696ee50c7d42e93a56e5e8fb5c7111c68042ed3bc483b9e6db68622b1311622a99a9c3d360c3f9733a86f7003fa24'
@@ -35,13 +35,34 @@ module EacRubyUtils
35
35
  end
36
36
 
37
37
  module ClassMethods
38
+ # @param name [Symbol]
39
+ # @param arguments [Enumerable<Symbol>]
40
+ # @return [void]
41
+ def abstract_method(name, *arguments)
42
+ define_method name.to_sym do |*_the_args|
43
+ raise_abstract_method(name.to_sym, arguments)
44
+ end
45
+ end
46
+
47
+ # @param methods_names [Enumerable<Object>] Each item can be a symbolizable or a hash.
48
+ # @return [void]
38
49
  def abstract_methods(*methods_names)
39
50
  methods_names.each do |method_name|
40
- define_method method_name do
41
- raise_abstract_method(method_name)
51
+ if method_name.is_a?(::Hash)
52
+ abstract_methods_from_hash(method_name)
53
+ else
54
+ abstract_method(method_name)
42
55
  end
43
56
  end
44
57
  end
58
+
59
+ private
60
+
61
+ # @param hash [Hash]
62
+ # @return [void]
63
+ def abstract_methods_from_hash(hash)
64
+ hash.each { |name, arguments| abstract_method(name, *arguments) }
65
+ end
45
66
  end
46
67
 
47
68
  module InstanceMethods
@@ -59,9 +80,9 @@ module EacRubyUtils
59
80
  self.class.abstract_methods.include?(method_name.to_sym)
60
81
  end
61
82
 
62
- def raise_abstract_method(method_name)
63
- raise ::NoMethodError, "Abstract method \"#{method_name}\" hit in \"#{self}\"" \
64
- " (Class: #{self.class})"
83
+ def raise_abstract_method(method_name, arguments = [])
84
+ raise ::NoMethodError, "Abstract method #{method_name}(#{arguments.join(', ')}) hit in " \
85
+ "#{self}\" (Class: #{self.class})"
65
86
  end
66
87
  end
67
88
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.114.0'
4
+ VERSION = '0.115.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_ruby_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.114.0
4
+ version: 0.115.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esquilo Azul Company