Class: Module

Inherits:
Object
  • Object
show all
Defined in:
lib/attr_plus/hash.rb,
lib/attr_plus/module.rb,
lib/attr_plus/instance.rb

Instance Method Summary collapse

Instance Method Details

#class_hash_attr_accessor(*args) ⇒ Object

Like #hash_attr_accessor but creates class methods



43
44
45
46
# File 'lib/attr_plus/hash.rb', line 43

def class_hash_attr_accessor(*args)
  class_hash_attr_reader(*args)
  class_hash_attr_writer(*args)
end

#class_hash_attr_reader(var, *args) ⇒ Object



48
49
50
51
52
53
54
55
56
# File 'lib/attr_plus/hash.rb', line 48

def class_hash_attr_reader(var, *args)
  args.each do |arg|
    self.instance_eval <<-EOS
      def #{arg}
        #{var}[#{arg.inspect}]
      end
    EOS
  end
end

#class_hash_attr_writer(var, *args) ⇒ Object



58
59
60
61
62
63
64
65
66
# File 'lib/attr_plus/hash.rb', line 58

def class_hash_attr_writer(var, *args)
  args.each do |arg|
    self.instance_eval <<-EOS
      def #{arg}=(val)
        #{var}[#{arg.inspect}] = val
      end
    EOS
  end
end

#hash_attr_accessor(*args) ⇒ Object



37
38
39
40
# File 'lib/attr_plus/hash.rb', line 37

def hash_attr_accessor(*args)
  hash_attr_reader(*args)
  hash_attr_writer(*args)
end

#hash_attr_reader(var, *args) ⇒ Object



10
11
12
13
14
15
16
17
18
# File 'lib/attr_plus/hash.rb', line 10

def hash_attr_reader(var, *args)
  args.each do |arg|
    self.class_eval <<-EOS
      def #{arg}
        #{var}[#{arg.inspect}]
      end
    EOS
  end
end

#hash_attr_writer(var, *args) ⇒ Object



27
28
29
30
31
32
33
34
35
# File 'lib/attr_plus/hash.rb', line 27

def hash_attr_writer(var, *args)
  args.each do |arg|
    self.class_eval <<-EOS
      def #{arg}=(val)
        #{var}[#{arg.inspect}] = val
      end
    EOS
  end
end

#module_attr_accessor(*args) ⇒ Object



28
29
30
31
# File 'lib/attr_plus/module.rb', line 28

def module_attr_accessor(*args)
  module_attr_reader(*args)
  module_attr_writer(*args)
end

#module_attr_reader(*args) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
# File 'lib/attr_plus/module.rb', line 5

def module_attr_reader(*args)
  names, default = AttrPlus.separate_arguments(args)
  names.each do |name|
    module_eval <<-EOS
      def self.#{name}
        @#{name}
      end
    EOS
    self.instance_variable_set("@#{name}", (default.dup rescue default))
  end
end

#module_attr_writer(*args) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/attr_plus/module.rb', line 17

def module_attr_writer(*args)
  names, default = AttrPlus.separate_arguments(args)
  names.each do |name|
    module_eval <<-EOS
      def self.#{name}=(obj)
        @#{name} = obj
      end
    EOS
  end
end

#private_attr_accessor(*args) ⇒ Object



3
4
5
6
# File 'lib/attr_plus/instance.rb', line 3

def private_attr_accessor(*args)
  private_attr_writer(*args)
  private_attr_reader(*args)
end

#private_attr_reader(*args) ⇒ Object



13
14
15
16
# File 'lib/attr_plus/instance.rb', line 13

def private_attr_reader(*args)
  attr_reader(*args)
  private(*args)
end

#private_attr_writer(*args) ⇒ Object



8
9
10
11
# File 'lib/attr_plus/instance.rb', line 8

def private_attr_writer(*args)
  attr_writer(*args)
  private(*args.map {|i| "#{i.to_s}=".to_sym })
end