Class: Object
- Inherits:
- BasicObject
- Defined in:
- lib/lite/ruby/object.rb,
lib/lite/ruby/safe/object.rb
Constant Summary collapse
- FALSE_VALUES =
%w[ 0 f false n no off ].freeze
- TRUE_VALUES =
%w[ 1 t true y yes on ].freeze
Instance Method Summary collapse
- #array? ⇒ Boolean
- #blank? ⇒ Boolean
- #bool? ⇒ Boolean
- #boolean? ⇒ Boolean
- #date? ⇒ Boolean
- #deep_dup ⇒ Object
- #duplicable? ⇒ Boolean
-
#false? ⇒ Boolean
rubocop:disable Style/YodaCondition.
-
#falsey? ⇒ Boolean
rubocop:enable Style/YodaCondition.
- #float? ⇒ Boolean
- #hash? ⇒ Boolean
- #integer? ⇒ Boolean
-
#is_any?(*objs) ⇒ Boolean
rubocop:disable Naming/PredicateName.
-
#numeral? ⇒ Boolean
rubocop:enable Naming/PredicateName.
- #numeric? ⇒ Boolean
- #open_struct? ⇒ Boolean
- #palindrome? ⇒ Boolean
- #presence ⇒ Object
- #present? ⇒ Boolean
- #range? ⇒ Boolean
- #safe_call(*keys) ⇒ Object
- #safe_send(*keys) ⇒ Object
- #safe_try(*obj, &block) ⇒ Object
- #salvage(placeholder = '---') ⇒ Object
- #salvage_try(*obj, placeholder: '---', &block) ⇒ Object
- #send_chain(*keys) ⇒ Object
- #send_chain_if(*keys) ⇒ Object
- #send_if(key, *args) ⇒ Object
- #set? ⇒ Boolean
- #string? ⇒ Boolean
- #struct? ⇒ Boolean
- #symbol? ⇒ Boolean
- #time? ⇒ Boolean
- #to_bool ⇒ Object (also: #to_b)
-
#true? ⇒ Boolean
rubocop:disable Style/YodaCondition.
-
#truthy? ⇒ Boolean
rubocop:enable Style/YodaCondition.
- #try(*obj, &block) ⇒ Object
- #try!(*obj, &block) ⇒ Object
- #try_call(*keys) ⇒ Object
- #try_send(*keys) ⇒ Object
Instance Method Details
#array? ⇒ Boolean
19 20 21 |
# File 'lib/lite/ruby/object.rb', line 19 def array? is_a?(Array) end |
#blank? ⇒ Boolean
5 6 7 8 9 10 11 |
# File 'lib/lite/ruby/safe/object.rb', line 5 def blank? object = self object = object.strip if respond_to?(:strip) return object.empty? if respond_to?(:empty?) !object end |
#bool? ⇒ Boolean
24 25 26 |
# File 'lib/lite/ruby/object.rb', line 24 def bool? true? || false? end |
#boolean? ⇒ Boolean
28 29 30 31 |
# File 'lib/lite/ruby/object.rb', line 28 def boolean? val = to_s.downcase TRUE_VALUES.include?(val) || FALSE_VALUES.include?(val) end |
#date? ⇒ Boolean
33 34 35 |
# File 'lib/lite/ruby/object.rb', line 33 def date? is_a?(Date) end |
#deep_dup ⇒ Object
13 14 15 |
# File 'lib/lite/ruby/safe/object.rb', line 13 def deep_dup duplicable? ? dup : self end |
#duplicable? ⇒ Boolean
17 18 19 |
# File 'lib/lite/ruby/safe/object.rb', line 17 def duplicable? true end |
#false? ⇒ Boolean
rubocop:disable Style/YodaCondition
38 39 40 |
# File 'lib/lite/ruby/object.rb', line 38 def false? false == self end |
#falsey? ⇒ Boolean
rubocop:enable Style/YodaCondition
43 44 45 |
# File 'lib/lite/ruby/object.rb', line 43 def falsey? nil? || FALSE_VALUES.include?(to_s.downcase) end |
#float? ⇒ Boolean
47 48 49 |
# File 'lib/lite/ruby/object.rb', line 47 def float? is_a?(Float) end |
#hash? ⇒ Boolean
51 52 53 |
# File 'lib/lite/ruby/object.rb', line 51 def hash? is_a?(Hash) end |
#integer? ⇒ Boolean
55 56 57 |
# File 'lib/lite/ruby/object.rb', line 55 def integer? is_a?(Integer) end |
#is_any?(*objs) ⇒ Boolean
rubocop:disable Naming/PredicateName
60 61 62 |
# File 'lib/lite/ruby/object.rb', line 60 def is_any?(*objs) objs.any? { |obj| is_a?(obj) } end |
#numeral? ⇒ Boolean
rubocop:enable Naming/PredicateName
65 66 67 |
# File 'lib/lite/ruby/object.rb', line 65 def numeral? !to_s.match(/\A[+-]?\d+?(\.\d+)?\Z/).nil? end |
#numeric? ⇒ Boolean
69 70 71 |
# File 'lib/lite/ruby/object.rb', line 69 def numeric? is_a?(Numeric) end |
#open_struct? ⇒ Boolean
73 74 75 |
# File 'lib/lite/ruby/object.rb', line 73 def open_struct? is_a?(OpenStruct) end |
#palindrome? ⇒ Boolean
77 78 79 |
# File 'lib/lite/ruby/object.rb', line 77 def palindrome? to_s == to_s.reverse end |
#presence ⇒ Object
25 26 27 |
# File 'lib/lite/ruby/safe/object.rb', line 25 def presence self if present? end |
#present? ⇒ Boolean
21 22 23 |
# File 'lib/lite/ruby/safe/object.rb', line 21 def present? !blank? end |
#range? ⇒ Boolean
81 82 83 |
# File 'lib/lite/ruby/object.rb', line 81 def range? is_a?(Range) end |
#safe_call(*keys) ⇒ Object
85 86 87 |
# File 'lib/lite/ruby/object.rb', line 85 def safe_call(*keys) try_call(*keys) || self end |
#safe_send(*keys) ⇒ Object
89 90 91 |
# File 'lib/lite/ruby/object.rb', line 89 def safe_send(*keys) try_send(*keys) || self end |
#safe_try(*obj, &block) ⇒ Object
93 94 95 |
# File 'lib/lite/ruby/object.rb', line 93 def safe_try(*obj, &block) try(*obj, &block) || self end |
#salvage(placeholder = '---') ⇒ Object
97 98 99 |
# File 'lib/lite/ruby/object.rb', line 97 def salvage(placeholder = '---') blank? ? placeholder : self end |
#salvage_try(*obj, placeholder: '---', &block) ⇒ Object
101 102 103 |
# File 'lib/lite/ruby/object.rb', line 101 def salvage_try(*obj, placeholder: '---', &block) try(*obj, &block).salvage(placeholder) end |
#send_chain(*keys) ⇒ Object
105 106 107 |
# File 'lib/lite/ruby/object.rb', line 105 def send_chain(*keys) Array(keys).inject(self) { |obj, key| obj.send(*key) } end |
#send_chain_if(*keys) ⇒ Object
109 110 111 |
# File 'lib/lite/ruby/object.rb', line 109 def send_chain_if(*keys) Array(keys).inject(self) { |obj, key| obj.send_if(*key) } end |
#send_if(key, *args) ⇒ Object
113 114 115 116 117 |
# File 'lib/lite/ruby/object.rb', line 113 def send_if(key, *args) return self unless respond_to?(key) send(key, *args) end |
#set? ⇒ Boolean
119 120 121 |
# File 'lib/lite/ruby/object.rb', line 119 def set? is_a?(Set) end |
#string? ⇒ Boolean
123 124 125 |
# File 'lib/lite/ruby/object.rb', line 123 def string? is_a?(String) end |
#struct? ⇒ Boolean
127 128 129 |
# File 'lib/lite/ruby/object.rb', line 127 def struct? is_a?(Struct) end |
#symbol? ⇒ Boolean
131 132 133 |
# File 'lib/lite/ruby/object.rb', line 131 def symbol? is_a?(Symbol) end |
#time? ⇒ Boolean
135 136 137 |
# File 'lib/lite/ruby/object.rb', line 135 def time? is_a?(Time) end |
#to_bool ⇒ Object Also known as: to_b
139 140 141 142 143 144 |
# File 'lib/lite/ruby/object.rb', line 139 def to_bool return true if truthy? return false if falsey? nil end |
#true? ⇒ Boolean
rubocop:disable Style/YodaCondition
147 148 149 |
# File 'lib/lite/ruby/object.rb', line 147 def true? true == self end |
#truthy? ⇒ Boolean
rubocop:enable Style/YodaCondition
152 153 154 |
# File 'lib/lite/ruby/object.rb', line 152 def truthy? TRUE_VALUES.include?(to_s.downcase) end |
#try(*obj, &block) ⇒ Object
29 30 31 |
# File 'lib/lite/ruby/safe/object.rb', line 29 def try(*obj, &block) try!(*obj, &block) if obj.empty? || respond_to?(obj.first) end |
#try!(*obj, &block) ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/lite/ruby/safe/object.rb', line 33 def try!(*obj, &block) if obj.empty? && defined?(yield) block.arity.zero? ? instance_eval(&block) : yield(self) else public_send(*obj, &block) end end |
#try_call(*keys) ⇒ Object
156 157 158 159 160 |
# File 'lib/lite/ruby/object.rb', line 156 def try_call(*keys) return unless respond_to?(:call) keys.blank? ? call : call(*keys) end |
#try_send(*keys) ⇒ Object
162 163 164 165 166 |
# File 'lib/lite/ruby/object.rb', line 162 def try_send(*keys) send(*keys) rescue StandardError nil end |