diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2009-03-21 03:34:49 -0700 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2009-03-21 04:35:16 -0700 |
commit | bd28c7b1b8a569d431cc93924ad1ff5fdb59f401 (patch) | |
tree | 7384e6aa0802804c6f0989dded15d84e0a5c99ec /activesupport/lib/active_support/core_ext/object | |
parent | 005b40194e9103f5c52434334b5f3b5028cbe813 (diff) | |
download | rails-bd28c7b1b8a569d431cc93924ad1ff5fdb59f401.tar.gz rails-bd28c7b1b8a569d431cc93924ad1ff5fdb59f401.tar.bz2 rails-bd28c7b1b8a569d431cc93924ad1ff5fdb59f401.zip |
blank? and duplicable? are Object extensions
Diffstat (limited to 'activesupport/lib/active_support/core_ext/object')
-rw-r--r-- | activesupport/lib/active_support/core_ext/object/blank.rb | 58 | ||||
-rw-r--r-- | activesupport/lib/active_support/core_ext/object/duplicable.rb | 43 |
2 files changed, 101 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/core_ext/object/blank.rb b/activesupport/lib/active_support/core_ext/object/blank.rb new file mode 100644 index 0000000000..9a1f663bf3 --- /dev/null +++ b/activesupport/lib/active_support/core_ext/object/blank.rb @@ -0,0 +1,58 @@ +class Object + # An object is blank if it's false, empty, or a whitespace string. + # For example, "", " ", +nil+, [], and {} are blank. + # + # This simplifies + # + # if !address.nil? && !address.empty? + # + # to + # + # if !address.blank? + def blank? + respond_to?(:empty?) ? empty? : !self + end + + # An object is present if it's not blank. + def present? + !blank? + end +end + +class NilClass #:nodoc: + def blank? + true + end +end + +class FalseClass #:nodoc: + def blank? + true + end +end + +class TrueClass #:nodoc: + def blank? + false + end +end + +class Array #:nodoc: + alias_method :blank?, :empty? +end + +class Hash #:nodoc: + alias_method :blank?, :empty? +end + +class String #:nodoc: + def blank? + self !~ /\S/ + end +end + +class Numeric #:nodoc: + def blank? + false + end +end diff --git a/activesupport/lib/active_support/core_ext/object/duplicable.rb b/activesupport/lib/active_support/core_ext/object/duplicable.rb new file mode 100644 index 0000000000..8f49ddfd9e --- /dev/null +++ b/activesupport/lib/active_support/core_ext/object/duplicable.rb @@ -0,0 +1,43 @@ +class Object + # Can you safely .dup this object? + # False for nil, false, true, symbols, and numbers; true otherwise. + def duplicable? + true + end +end + +class NilClass #:nodoc: + def duplicable? + false + end +end + +class FalseClass #:nodoc: + def duplicable? + false + end +end + +class TrueClass #:nodoc: + def duplicable? + false + end +end + +class Symbol #:nodoc: + def duplicable? + false + end +end + +class Numeric #:nodoc: + def duplicable? + false + end +end + +class Class #:nodoc: + def duplicable? + false + end +end |