Class: Adornable::Utils

Inherits:
Object
  • Object
show all
Defined in:
lib/adornable/utils.rb

Overview

:nodoc:

Class Method Summary collapse

Class Method Details

.blank?(value) ⇒ Boolean

Returns:

  • (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

Returns:

  • (Boolean)


10
11
12
# File 'lib/adornable/utils.rb', line 10

def present?(value)
  !blank?(value)
end