Sha256: aa04ba9575de1145bdd75df4aa93d271a70760b746d361982db6f6e13e6c256e
Contents?: true
Size: 1.01 KB
Versions: 2
Compression:
Stored size: 1.01 KB
Contents
module EnsureIt patch Object do def ensure_class(*args, default: nil, **opts) default end def ensure_class!(*args, default: nil, **opts) opts[:message] ||= '#{subject} should be a class' EnsureIt.raise_error(:ensure_class!, **opts) end end patch Class do def ensure_class(*args, default: nil, values: nil, **opts) args.select! { |x| x.is_a?(Module) } return default unless args.all? { |x| self <= x } if values.nil? || values.is_a?(Array) && values.include?(self) self else default end end def ensure_class!(*args, default: nil, values: nil, **opts) args.select! { |x| x.is_a?(Module) } if args.all? { |x| self <= x } && (values.nil? || values.is_a?(Array) && values.include?(self)) return self end args = args.map!(&:name).join(', ') opts[:message] ||= "\#{subject} should subclass or extend all of ['#{args}']" EnsureIt.raise_error(:ensure_class!, **opts) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ensure_it-0.1.3 | lib/ensure_it/ensure_class.rb |
ensure_it-0.1.2 | lib/ensure_it/ensure_class.rb |