Module: Darthjee::CoreExt::Class

Included in:
Class
Defined in:
lib/darthjee/core_ext/class.rb

Instance Method Summary collapse

Instance Method Details

#default_value(name, value) ⇒ Object

Adds a method that will return a default value

the value is evaluated on class definition, meaning that everytime it is called it will be the same instance

Examples:

Defining a default value

class MyClass
  default_value :name, 'John'
end

MyClass.new.name # returns 'John'

Comparing value across instances

# frozen_string_literal: false

class MyClass
  default_value :name, 'John'
end

instance = MyClass.new
other = MyClass.new

instance.name.equal?('John')      # returns false
instance.name.equal?(other.name)  # returns true

Parameters:

  • name (::Symbol, ::String)

    Name of the method to be added

  • value (::Object)

    default value



36
37
38
# File 'lib/darthjee/core_ext/class.rb', line 36

def default_value(name, value)
  define_method(name) { |*_| value }
end

#default_values(*names, value) ⇒ Object

Adds methods that will return a default value

the value is evaluated on class definition, meaning that everytime any of them are called they will return the same instance of value

Examples:

Defining a default values

class MyClass
  default_values :name, :nick_name, 'John'
end

MyClass.new.name      # returns 'John'
MyClass.new.nick_name # returns 'John'

Comparing value across instances

# frozen_string_literal: false

class MyClass
  default_values :name, :nick_name, 'John'
end

instance = MyClass.new
other = MyClass.new

instance.name.equal?('John')     # returns false
instance.name.equal?(other.name) # returns true

Comparing value across methods

# frozen_string_literal: false

class MyClass
  default_values :name, :nick_name, 'John'
end

instance = MyClass.new

instance.nick_name.equal?('John')        # returns false
instance.nick_name.equal?(instance.name) # returns true

Parameters:



83
84
85
86
87
# File 'lib/darthjee/core_ext/class.rb', line 83

def default_values(*names, value)
  names.each do |name|
    default_value(name, value)
  end
end