Sha256: 08591e3ddbdeb00aa6b672ccb9fa4cd08d06a01ac980edb89ad8d69cf118fa4e
Contents?: true
Size: 1.49 KB
Versions: 5
Compression:
Stored size: 1.49 KB
Contents
module Checked class Demand module Mods module Vars def array! a! Array end def bool! return true if [true, false].include?(target) fail!("...has to be a boolean.") end def string! a! String end def symbol! a! Symbol end def no_block_given! one_of! NilClass, FalseClass if target fail! "No block allowed." end end def no_block! no_block_given! end def either! *meths meths.flatten.detect { |m| begin send m true rescue Failed false end } end def one_of! *klasses return true if klasses.flatten.any? { |k| target.is_a?(k) } fail! "...can only be of class/module: #{klasses.map(&:to_s).join(', ')}" end def a! klass one_of! klass end def nil! return true if target == nil fail!("...must be nil.") end def not_nil! fail!("...can't be nil.") if target.nil? true end def respond_to! meth return true if target.respond_to?(meth) fail!("...must respond to #{meth.inspect}") end def not_empty! respond_to! :empty? is_empty = target.empty? fail!("...can't be empty.") if is_empty end def exists! respond_to! :exists? return true if target.exists? fail!("...must exist.") end def not_exists! respond_to! :exists? return true unless target.exists? fail!("...must not exist.") end end # === module Var end # === module Mods end # === class Demand end # === module Checked
Version data entries
5 entries across 5 versions & 1 rubygems