Class: Adornable::Utils
- Inherits:
-
Object
- Object
- Adornable::Utils
- Defined in:
- lib/adornable/utils.rb
Overview
:nodoc:
Class Method Summary collapse
- .blank?(value) ⇒ Boolean
-
.empty_aware_send(receiver, method_name, splat_args, splat_kwargs, &block) ⇒ Object
This craziness is here because Ruby 2.6 and below don’t like when you pass even empty arguments to ‘#call` or `#send` or any other method with a splat, for callables that take no arguments.
- .formal_method_name(method_receiver, method_name) ⇒ Object
- .presence(value) ⇒ Object
- .present?(value) ⇒ Boolean
Class Method Details
.blank?(value) ⇒ Boolean
6 7 8 |
# File 'lib/adornable/utils.rb', line 6 def blank?(value) value.nil? || (value.respond_to?(:empty?) && value.empty?) end |
.empty_aware_send(receiver, method_name, splat_args, splat_kwargs, &block) ⇒ Object
This craziness is here because Ruby 2.6 and below don’t like when you pass even empty arguments to ‘#call` or `#send` or any other method with a splat, for callables that take no arguments. For example, this takes the place of:
receiver.send(method_name, *splat_args, **splat_kwargs)
…or:
receiver.some_method(*splat_args, **splat_kwargs)
…which is not cool <= 2.6.x apparently, if ‘#some_method` takes zero arguments even if both `splat_args` and `splat_kwargs` are empty (thus passing it zero arguments in actuality). Oh well.
42 43 44 45 46 47 48 |
# File 'lib/adornable/utils.rb', line 42 def empty_aware_send(receiver, method_name, splat_args, splat_kwargs, &block) return receiver.send(method_name, &block) if splat_args.empty? && splat_kwargs.empty? return receiver.send(method_name, *splat_args, &block) if splat_kwargs.empty? return receiver.send(method_name, **splat_kwargs, &block) if splat_args.empty? receiver.send(method_name, *splat_args, **splat_kwargs, &block) end |
.formal_method_name(method_receiver, method_name) ⇒ Object
18 19 20 21 22 23 24 25 |
# File 'lib/adornable/utils.rb', line 18 def formal_method_name(method_receiver, method_name) receiver_name, name_delimiter = if method_receiver.is_a?(Class) [method_receiver.to_s, '::'] else [method_receiver.class.to_s, '#'] end "`#{receiver_name}#{name_delimiter}#{method_name}`" end |
.presence(value) ⇒ Object
14 15 16 |
# File 'lib/adornable/utils.rb', line 14 def presence(value) value if present?(value) end |
.present?(value) ⇒ Boolean
10 11 12 |
# File 'lib/adornable/utils.rb', line 10 def present?(value) !blank?(value) end |