Class: Travis::Client::Entity
- Inherits:
-
Object
- Object
- Travis::Client::Entity
show all
- Defined in:
- lib/travis/client/entity.rb
Constant Summary
collapse
- MAP =
{}
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(session, id) ⇒ Entity
Returns a new instance of Entity.
72
73
74
75
76
|
# File 'lib/travis/client/entity.rb', line 72
def initialize(session, id)
@attributes = {}
@session = session
@id = Integer(id)
end
|
Instance Attribute Details
#attributes ⇒ Object
Returns the value of attribute attributes.
7
8
9
|
# File 'lib/travis/client/entity.rb', line 7
def attributes
@attributes
end
|
#curry ⇒ Object
Returns the value of attribute curry.
8
9
10
|
# File 'lib/travis/client/entity.rb', line 8
def curry
@curry
end
|
#id ⇒ Object
Returns the value of attribute id.
7
8
9
|
# File 'lib/travis/client/entity.rb', line 7
def id
@id
end
|
#session ⇒ Object
Returns the value of attribute session.
7
8
9
|
# File 'lib/travis/client/entity.rb', line 7
def session
@session
end
|
Class Method Details
.aka(name) ⇒ Object
24
25
26
|
# File 'lib/travis/client/entity.rb', line 24
def self.aka(name)
MAP[name.to_s] = self
end
|
.attributes(*list) ⇒ Object
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/travis/client/entity.rb', line 38
def self.attributes(*list)
@attributes ||= []
list.each do |name|
name = name.to_s
fail "can't call an attribute id" if name == "id"
@attributes << name
define_method(name) { load_attribute(name) }
define_method("#{name}=") { |value| set_attribute(name, value) }
define_method("#{name}?") { !!send(name) }
end
@attributes
end
|
.has(*list) ⇒ Object
60
61
62
63
64
65
|
# File 'lib/travis/client/entity.rb', line 60
def self.has(*list)
list.each do |name|
relations << name
define_method(name) { relation(name.to_s) }
end
end
|
.inspect_info(name) ⇒ Object
67
68
69
70
|
# File 'lib/travis/client/entity.rb', line 67
def self.inspect_info(name)
alias_method(:inspect_info, name)
private(:inspect_info)
end
|
.many(key = nil) ⇒ Object
33
34
35
36
|
# File 'lib/travis/client/entity.rb', line 33
def self.many(key = nil)
MAP[key.to_s] = self if key
@many ||= key.to_s
end
|
.one(key = nil) ⇒ Object
28
29
30
31
|
# File 'lib/travis/client/entity.rb', line 28
def self.one(key = nil)
MAP[key.to_s] = self if key
@one ||= key.to_s
end
|
.relations ⇒ Object
12
13
14
|
# File 'lib/travis/client/entity.rb', line 12
def self.relations
@relations ||= []
end
|
.subclass_for(key) ⇒ Object
20
21
22
|
# File 'lib/travis/client/entity.rb', line 20
def self.subclass_for(key)
MAP.fetch(key)
end
|
.subclasses ⇒ Object
16
17
18
|
# File 'lib/travis/client/entity.rb', line 16
def self.subclasses
MAP.values.uniq
end
|
.time(*list) ⇒ Object
54
55
56
57
58
|
# File 'lib/travis/client/entity.rb', line 54
def self.time(*list)
list.each do |name|
define_method("#{name}=") { |value| set_attribute(name, time(value)) }
end
end
|
Instance Method Details
#[](key) ⇒ Object
88
89
90
|
# File 'lib/travis/client/entity.rb', line 88
def [](key)
send(key) if include? key
end
|
#[]=(key, value) ⇒ Object
92
93
94
|
# File 'lib/travis/client/entity.rb', line 92
def []=(key, value)
send("#{key}=", value) if include? key
end
|
#attribute_names ⇒ Object
84
85
86
|
# File 'lib/travis/client/entity.rb', line 84
def attribute_names
self.class.attributes
end
|
#complete? ⇒ Boolean
114
115
116
|
# File 'lib/travis/client/entity.rb', line 114
def complete?
attribute_names.all? { |key| attributes.include? key }
end
|
#include?(key) ⇒ Boolean
96
97
98
|
# File 'lib/travis/client/entity.rb', line 96
def include?(key)
attributes.include? key or attribute_names.include? key.to_s
end
|
#inspect ⇒ Object
118
119
120
121
122
|
# File 'lib/travis/client/entity.rb', line 118
def inspect
klass = self.class
klass = curry if curry and curry.name and curry.to_s.size < klass.to_s.size
"#<#{klass}: #{inspect_info}>"
end
|
#load ⇒ Object
105
106
107
|
# File 'lib/travis/client/entity.rb', line 105
def load
session.reload(self) unless complete?
end
|
#missing?(key) ⇒ Boolean
109
110
111
112
|
# File 'lib/travis/client/entity.rb', line 109
def missing?(key)
return false unless include? key
!attributes.include?(key.to_s)
end
|
#relations ⇒ Object
124
125
126
|
# File 'lib/travis/client/entity.rb', line 124
def relations
self.class.relations.map { |r| public_send(r) }.flatten(1)
end
|
#reload ⇒ Object
100
101
102
103
|
# File 'lib/travis/client/entity.rb', line 100
def reload
relations.each { |e| session.reset(e) }
session.reset(self)
end
|
#update_attributes(data) ⇒ Object
78
79
80
81
82
|
# File 'lib/travis/client/entity.rb', line 78
def update_attributes(data)
data.each_pair do |key, value|
self[key] = value
end
end
|