Class: Object
- Inherits:
- BasicObject
- Includes:
- InstanceExecMethods
- Defined in:
- lib/active_support/vendor/builder-2.1.2/blankslate.rb,
lib/active_support/core_ext/blank.rb,
lib/active_support/core_ext/duplicable.rb,
lib/active_support/core_ext/object/misc.rb,
lib/active_support/core_ext/object/extending.rb,
lib/active_support/core_ext/object/metaclass.rb,
lib/active_support/core_ext/object/conversions.rb,
lib/active_support/core_ext/object/instance_variables.rb
Overview
Same as above, except in Object.
Defined Under Namespace
Modules: InstanceExecMethods
Class Method Summary collapse
- .blank_slate_method_added ⇒ Object
- .find_hidden_method(name) ⇒ Object
-
.method_added(name) ⇒ Object
Detect method additions to Object and remove them in the BlankSlate class.
Instance Method Summary collapse
-
#blank? ⇒ Boolean
An object is blank if it’s false, empty, or a whitespace string.
-
#class_eval(*args, &block) ⇒ Object
If class_eval is called on an object, add those methods to its metaclass.
-
#copy_instance_variables_from(object, exclude = []) ⇒ Object
Copies the instance variables of
object
intoself
. -
#duplicable? ⇒ Boolean
Can you safely .dup this object? False for nil, false, true, symbols, and numbers; true otherwise.
-
#extend_with_included_modules_from(object) ⇒ Object
:nodoc:.
-
#extended_by ⇒ Object
:nodoc:.
-
#instance_exec(*args, &block) ⇒ Object
Evaluate the block with the given arguments within the context of this object, so self is set to the method receiver.
-
#instance_values ⇒ Object
Returns a hash that maps instance variable names without “@” to their corresponding values.
- #instance_variable_defined?(variable) ⇒ Boolean
-
#metaclass ⇒ Object
Get object’s meta (ghost, eigenclass, singleton) class.
-
#present? ⇒ Boolean
An object is present if it’s not blank.
-
#remove_subclasses_of(*superclasses) ⇒ Object
:nodoc:.
-
#returning(value) {|value| ... } ⇒ Object
Returns
value
after yieldingvalue
to the block. -
#to_param ⇒ Object
Alias of
to_s
. -
#to_query(key) ⇒ Object
Converts an object into a string suitable for use as a URL query string, using the given
key
as the param name.
Class Method Details
.blank_slate_method_added ⇒ Object
79 |
# File 'lib/active_support/vendor/builder-2.1.2/blankslate.rb', line 79 alias_method :blank_slate_method_added, :method_added |
.find_hidden_method(name) ⇒ Object
90 91 92 |
# File 'lib/active_support/vendor/builder-2.1.2/blankslate.rb', line 90 def find_hidden_method(name) nil end |
.method_added(name) ⇒ Object
Detect method additions to Object and remove them in the BlankSlate class.
83 84 85 86 87 88 |
# File 'lib/active_support/vendor/builder-2.1.2/blankslate.rb', line 83 def method_added(name) result = blank_slate_method_added(name) return result if self != Object BlankSlate.hide(name) result end |
Instance Method Details
#blank? ⇒ Boolean
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?
12 13 14 |
# File 'lib/active_support/core_ext/blank.rb', line 12 def blank? respond_to?(:empty?) ? empty? : !self end |
#class_eval(*args, &block) ⇒ Object
If class_eval is called on an object, add those methods to its metaclass
10 11 12 |
# File 'lib/active_support/core_ext/object/metaclass.rb', line 10 def class_eval(*args, &block) .class_eval(*args, &block) end |
#copy_instance_variables_from(object, exclude = []) ⇒ Object
Copies the instance variables of object
into self
.
Instance variable names in the exclude
array are ignored. If object
responds to protected_instance_variables
the ones returned are also ignored. For example, Rails controllers implement that method.
In both cases strings and symbols are understood, and they have to include the at sign.
class C
def initialize(x, y, z)
@x, @y, @z = x, y, z
end
def protected_instance_variables
%w(@z)
end
end
a = C.new(0, 1, 2)
b = C.new(3, 4, 5)
a.copy_instance_variables_from(b, [:@y])
# a is now: @x = 3, @y = 1, @z = 2
68 69 70 71 72 73 |
# File 'lib/active_support/core_ext/object/instance_variables.rb', line 68 def copy_instance_variables_from(object, exclude = []) #:nodoc: exclude += object.protected_instance_variables if object.respond_to? :protected_instance_variables vars = object.instance_variables.map(&:to_s) - exclude.map(&:to_s) vars.each { |name| instance_variable_set(name, object.instance_variable_get(name)) } end |
#duplicable? ⇒ Boolean
Can you safely .dup this object? False for nil, false, true, symbols, and numbers; true otherwise.
4 5 6 |
# File 'lib/active_support/core_ext/duplicable.rb', line 4 def duplicable? true end |
#extend_with_included_modules_from(object) ⇒ Object
:nodoc:
50 51 52 |
# File 'lib/active_support/core_ext/object/extending.rb', line 50 def extend_with_included_modules_from(object) #:nodoc: object.extended_by.each { |mod| extend mod } end |
#extended_by ⇒ Object
:nodoc:
45 46 47 48 |
# File 'lib/active_support/core_ext/object/extending.rb', line 45 def extended_by #:nodoc: ancestors = class << self; ancestors end ancestors.select { |mod| mod.class == Module } - [ Object, Kernel ] end |
#instance_exec(*args, &block) ⇒ Object
Evaluate the block with the given arguments within the context of this object, so self is set to the method receiver.
From Mauricio’s eigenclass.org/hiki/bounded+space+instance_exec
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/active_support/core_ext/object/extending.rb', line 63 def instance_exec(*args, &block) begin old_critical, Thread.critical = Thread.critical, true n = 0 n += 1 while respond_to?(method_name = "__instance_exec#{n}") InstanceExecMethods.module_eval { define_method(method_name, &block) } ensure Thread.critical = old_critical end begin send(method_name, *args) ensure InstanceExecMethods.module_eval { remove_method(method_name) } rescue nil end end |
#instance_values ⇒ Object
Returns a hash that maps instance variable names without “@” to their corresponding values. Keys are strings both in Ruby 1.8 and 1.9.
class C
def initialize(x, y)
@x, @y = x, y
end
end
C.new(0, 1).instance_values # => {"x" => 0, "y" => 1}
19 20 21 22 23 24 |
# File 'lib/active_support/core_ext/object/instance_variables.rb', line 19 def instance_values #:nodoc: instance_variables.inject({}) do |values, name| values[name.to_s[1..-1]] = instance_variable_get(name) values end end |
#instance_variable_defined?(variable) ⇒ Boolean
4 5 6 |
# File 'lib/active_support/core_ext/object/instance_variables.rb', line 4 def instance_variable_defined?(variable) instance_variables.include?(variable.to_s) end |
#metaclass ⇒ Object
Get object’s meta (ghost, eigenclass, singleton) class
3 4 5 6 7 |
# File 'lib/active_support/core_ext/object/metaclass.rb', line 3 def class << self self end end |
#present? ⇒ Boolean
An object is present if it’s not blank.
17 18 19 |
# File 'lib/active_support/core_ext/blank.rb', line 17 def present? !blank? end |
#remove_subclasses_of(*superclasses) ⇒ Object
:nodoc:
2 3 4 |
# File 'lib/active_support/core_ext/object/extending.rb', line 2 def remove_subclasses_of(*superclasses) #:nodoc: Class.remove_class(*subclasses_of(*superclasses)) end |
#returning(value) {|value| ... } ⇒ Object
Returns value
after yielding value
to the block. This simplifies the process of constructing an object, performing work on the object, and then returning the object from a method. It is a Ruby-ized realization of the K combinator, courtesy of Mikael Brockman.
Examples
# Without returning
def foo
values = []
values << "bar"
values << "baz"
return values
end
foo # => ['bar', 'baz']
# returning with a local variable
def foo
returning values = [] do
values << 'bar'
values << 'baz'
end
end
foo # => ['bar', 'baz']
# returning with a block argument
def foo
returning [] do |values|
values << 'bar'
values << 'baz'
end
end
foo # => ['bar', 'baz']
38 39 40 41 |
# File 'lib/active_support/core_ext/object/misc.rb', line 38 def returning(value) yield(value) value end |
#to_param ⇒ Object
Alias of to_s
.
3 4 5 |
# File 'lib/active_support/core_ext/object/conversions.rb', line 3 def to_param to_s end |
#to_query(key) ⇒ Object
Converts an object into a string suitable for use as a URL query string, using the given key
as the param name.
Note: This method is defined as a default implementation for all Objects for Hash#to_query to work.
11 12 13 |
# File 'lib/active_support/core_ext/object/conversions.rb', line 11 def to_query(key) "#{CGI.escape(key.to_s)}=#{CGI.escape(to_param.to_s)}" end |