Module: Zendesk::Properties::ClassMethods

Defined in:
lib/zendesk/lib/properties.rb

Constant Summary collapse

@@_attributes =
[]
@@_protected_attributes =
[]
@@_properties =
[]
@@_datetimes =
[]

Instance Method Summary collapse

Instance Method Details

#_attributesObject



9
10
11
# File 'lib/zendesk/lib/properties.rb', line 9

def _attributes
  @@_attributes
end

#_datetimesObject



21
22
23
# File 'lib/zendesk/lib/properties.rb', line 21

def _datetimes
  @@_datetimes
end

#_propertiesObject



17
18
19
# File 'lib/zendesk/lib/properties.rb', line 17

def _properties
  @@_properties
end

#_protected_attributesObject



13
14
15
# File 'lib/zendesk/lib/properties.rb', line 13

def _protected_attributes
  @@_protected_attributes
end

#attributes(*vars) ⇒ Object



25
26
27
28
# File 'lib/zendesk/lib/properties.rb', line 25

def attributes(*vars)
  @@_attributes.concat vars
  attr_accessor *vars
end

#datetimes(*vars) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/zendesk/lib/properties.rb', line 35

def datetimes(*vars)
  protected_attributes *vars
  
  vars.each do |mn|
    method_name = mn.to_s
    class_eval <<-END
      def #{method_name}
        DateTime.parse @#{method_name}
      end
    END
  end
end

#properties(*vars) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/zendesk/lib/properties.rb', line 48

def properties(*vars)
  @@_properties.concat vars
  attr_accessor *vars

  vars.each do |property|
    attributes "#{property.to_s}_id".to_sym
    method_name = property.to_s
    class_eval <<-END
    def #{method_name}
      #{method_name.upcase}[@#{method_name}_id.to_i]
    end
    END

    class_eval <<-END
    def #{method_name}=(value)
      @#{method_name}_id = #{method_name.upcase}.key(value)
    end
    END
  end
end

#protected_attributes(*vars) ⇒ Object



30
31
32
33
# File 'lib/zendesk/lib/properties.rb', line 30

def protected_attributes(*vars)
  @@_protected_attributes.concat vars
  attr_reader *vars
end