Class: Codily::Elements::Base
- Inherits:
-
Object
- Object
- Codily::Elements::Base
show all
- Defined in:
- lib/codily/elements/base.rb
Defined Under Namespace
Classes: AlreadyDefined
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(root, obj, &block) ⇒ Base
Returns a new instance of Base.
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/codily/elements/base.rb', line 42
def initialize(root, obj, &block)
@root = root
case obj
when Hash
@hash = obj
when Fastly::Base
@fastly_obj = obj
@hash = Utils.symbolize_keys(obj.as_hash)
@hash.delete :id
@hash.each_key do |k|
@hash.delete k if @hash[k].nil?
end
else
raise TypeError
end
instance_eval(&block) if block
setup
end
|
Instance Attribute Details
#fastly_obj ⇒ Object
Returns the value of attribute fastly_obj.
66
67
68
|
# File 'lib/codily/elements/base.rb', line 66
def fastly_obj
@fastly_obj
end
|
#root ⇒ Object
Returns the value of attribute root.
65
66
67
|
# File 'lib/codily/elements/base.rb', line 65
def root
@root
end
|
Class Method Details
.def_attr(*attrs) ⇒ Object
26
27
28
29
30
31
32
|
# File 'lib/codily/elements/base.rb', line 26
def self.def_attr(*attrs)
attrs.each do |attr|
define_method(attr) do |obj = nil|
getset attr, obj
end
end
end
|
.defaults(kv = nil) ⇒ Object
34
35
36
37
38
39
40
|
# File 'lib/codily/elements/base.rb', line 34
def self.defaults(kv = nil)
if kv
@defaults = defaults.merge(kv)
else
@defaults ||= {}
end
end
|
.name_for_attr ⇒ Object
22
23
24
|
# File 'lib/codily/elements/base.rb', line 22
def self.name_for_attr
@attr_name ||= self.name.split('::').last.gsub(/[A-Z]/, '_\0').gsub(/^_/, '').downcase
end
|
.parent_class ⇒ Object
9
10
11
|
# File 'lib/codily/elements/base.rb', line 9
def self.parent_class
nil
end
|
.path ⇒ Object
13
14
15
16
17
18
19
20
|
# File 'lib/codily/elements/base.rb', line 13
def self.path
@path ||= [].tap do |path|
ptr = self
while ptr = ptr.parent_class
path.unshift ptr
end
end
end
|
Instance Method Details
#as_dsl_hash ⇒ Object
114
115
116
117
118
|
# File 'lib/codily/elements/base.rb', line 114
def as_dsl_hash
as_hash.tap do |x|
x.delete :name
end
end
|
#as_hash ⇒ Object
110
111
112
|
# File 'lib/codily/elements/base.rb', line 110
def as_hash
self.class.defaults.merge @hash
end
|
#dsl_args ⇒ Object
102
103
104
|
# File 'lib/codily/elements/base.rb', line 102
def dsl_args
[name]
end
|
#id ⇒ Object
94
95
96
|
# File 'lib/codily/elements/base.rb', line 94
def id
fastly_obj && fastly_obj.respond_to?(:id) ? fastly_obj.id : nil
end
|
#inspect ⇒ Object
68
69
70
|
# File 'lib/codily/elements/base.rb', line 68
def inspect
"#<#{self.class}:#{self.key.inspect}/#{Hash[self.as_hash.to_a.sort_by{ |_| _.first.to_s }]}>"
end
|
#key ⇒ Object
106
107
108
|
# File 'lib/codily/elements/base.rb', line 106
def key
name
end
|
#name(str = nil) ⇒ Object
98
99
100
|
# File 'lib/codily/elements/base.rb', line 98
def name(str = nil)
getset :name, str
end
|
#parent ⇒ Object
80
81
82
83
|
# File 'lib/codily/elements/base.rb', line 80
def parent
return nil if parent_class.nil?
root.list_element(parent_class)[parent_key] or raise '[bug?] no parent element'
end
|
#parent_class ⇒ Object
72
73
74
|
# File 'lib/codily/elements/base.rb', line 72
def parent_class
self.class.parent_class
end
|
#parent_key ⇒ Object
76
77
78
|
# File 'lib/codily/elements/base.rb', line 76
def parent_key
nil
end
|
#parents ⇒ Object
85
86
87
88
89
90
91
92
|
# File 'lib/codily/elements/base.rb', line 85
def parents
parents = []
ptr = self
while ptr = ptr.parent
parents.unshift ptr
end
return parents
end
|