Class: Ivar::ExplicitDeclaration

Inherits:
Declaration show all
Defined in:
lib/ivar/explicit_declaration.rb

Overview

Represents an explicit declaration from the ivar macro

Instance Attribute Summary

Attributes inherited from Declaration

#manifest, #name

Instance Method Summary collapse

Constructor Details

#initialize(name, manifest, options = {}) ⇒ ExplicitDeclaration

Initialize a new explicit declaration

Parameters:

  • name (Symbol, String)

    The name of the instance variable

  • options (Hash) (defaults to: {})

    Options for the declaration



12
13
14
15
16
17
18
19
20
# File 'lib/ivar/explicit_declaration.rb', line 12

def initialize(name, manifest, options = {})
  super(name, manifest)
  @init_method = options[:init]
  @initial_value = options[:value]
  @reader = options[:reader] || false
  @writer = options[:writer] || false
  @accessor = options[:accessor] || false
  @init_block = options[:block]
end

Instance Method Details

#before_init(instance, args, kwargs) ⇒ Object

Called before object initialization

Parameters:

  • instance (Object)

    The object being initialized

  • args (Array)

    Positional arguments

  • kwargs (Hash)

    Keyword arguments



36
37
38
39
40
41
42
43
# File 'lib/ivar/explicit_declaration.rb', line 36

def before_init(instance, args, kwargs)
  if @init_block
    instance.instance_variable_set(@name, @init_block.call(@name))
  end
  if @initial_value != Ivar::Macros::UNSET
    instance.instance_variable_set(@name, @initial_value)
  end
end

#kwarg_init?Boolean

Check if this declaration uses keyword argument initialization

Returns:

  • (Boolean)

    Whether this declaration uses keyword argument initialization



30
# File 'lib/ivar/explicit_declaration.rb', line 30

def kwarg_init? = false

#on_declare(klass) ⇒ Object

Called when the declaration is added to a class

Parameters:

  • klass (Class, Module)

    The class or module the declaration is added to



24
25
26
# File 'lib/ivar/explicit_declaration.rb', line 24

def on_declare(klass)
  add_accessor_methods(klass)
end