Class: Bemer::EntityBuilder
- Inherits:
-
Entity
- Object
- Entity
- Bemer::EntityBuilder
show all
- Defined in:
- lib/bemer/entity_builder.rb
Overview
rubocop:disable Metrics/ClassLength
Constant Summary
collapse
- DATA_BEM_KEY =
:'data-bem'
Instance Attribute Summary
Attributes inherited from Entity
#bem_class, #block, #content, #elem, #name
Instance Method Summary
collapse
Methods inherited from Entity
#block?, #elem?, #initialize, #mix
Constructor Details
This class inherits a constructor from Bemer::Entity
Instance Method Details
#attrs ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
|
# File 'lib/bemer/entity_builder.rb', line 10
def attrs
attributes = Hash[super]
attributes[:class] = cls if cls.present?
return attributes unless bem?
data_bem = js
data_bem[DATA_BEM_KEY] = data_bem[DATA_BEM_KEY].to_json if data_bem.key?(DATA_BEM_KEY)
attributes.merge!(data_bem)
end
|
#attrs=(new_attrs, save = true) ⇒ Object
23
24
25
26
27
|
# File 'lib/bemer/entity_builder.rb', line 23
def attrs=(new_attrs, save = true)
new_attrs = build_attrs(new_attrs)
save ? @attrs = new_attrs : new_attrs
end
|
#bem ⇒ Object
29
30
31
|
# File 'lib/bemer/entity_builder.rb', line 29
def bem
bem_via_option? ? super : true
end
|
#bem=(new_bem, save = true) ⇒ Object
33
34
35
|
# File 'lib/bemer/entity_builder.rb', line 33
def bem=(new_bem, save = true)
save ? @bem = new_bem : new_bem
end
|
#bem? ⇒ Boolean
37
38
39
|
# File 'lib/bemer/entity_builder.rb', line 37
def bem?
bem_enabled_via_option? || bem_cascade_enabled_via_option? || bem_enabled_fully?
end
|
#bem_cascade ⇒ Object
41
42
43
|
# File 'lib/bemer/entity_builder.rb', line 41
def bem_cascade
bem_cascade_via_option? ? super : true
end
|
#cls ⇒ Object
45
46
47
48
49
50
51
|
# File 'lib/bemer/entity_builder.rb', line 45
def cls
return super unless bem?
i_bem = 'i-bem' if need_data_bem? || need_mixed_data_bem?
[bem_class, mods, mix, super, i_bem].flatten.reject(&:blank?).uniq.join(' ')
end
|
#cls=(new_cls, save = true) ⇒ Object
53
54
55
56
57
|
# File 'lib/bemer/entity_builder.rb', line 53
def cls=(new_cls, save = true)
new_cls = build_css_classes(new_cls)
save ? @cls = new_cls : new_cls
end
|
#content=(new_content, save = true) ⇒ Object
59
60
61
|
# File 'lib/bemer/entity_builder.rb', line 59
def content=(new_content, save = true)
save ? @content = new_content : new_content
end
|
#js ⇒ Object
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/bemer/entity_builder.rb', line 63
def js
need_data_bem = need_data_bem?
need_mixed_data_bem = need_mixed_data_bem?
return {} unless need_data_bem || need_mixed_data_bem
if !need_data_bem && need_mixed_data_bem
mixed_data_bem
else
data_bem = @js.instance_of?(TrueClass) ? {} : super
{ DATA_BEM_KEY => { name => data_bem }.merge!(mixed_data_bem[DATA_BEM_KEY]) }
end
end
|
#js=(new_js, save = true) ⇒ Object
78
79
80
|
# File 'lib/bemer/entity_builder.rb', line 78
def js=(new_js, save = true)
save ? @js = new_js : new_js
end
|
#mix=(new_mix, save = true) ⇒ Object
82
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/bemer/entity_builder.rb', line 82
def mix=(new_mix, save = true)
new_mixes = Mixes.new(new_mix)
new_mix = new_mixes.to_a
if save
@mixins = new_mixes
@mix = new_mix
else
new_mix
end
end
|
#mods ⇒ Object
94
95
96
|
# File 'lib/bemer/entity_builder.rb', line 94
def mods
modifiers.to_a
end
|
#mods=(new_mods, save = true) ⇒ Object
98
99
100
101
102
103
|
# File 'lib/bemer/entity_builder.rb', line 98
def mods=(new_mods, save = true)
modifiers = ModifierList.new(block, element, new_mods)
@modifiers = modifiers if save
modifiers.to_h
end
|
#need_data_bem? ⇒ Boolean
115
116
117
|
# File 'lib/bemer/entity_builder.rb', line 115
def need_data_bem?
bem? && @js.present? && bem_class.present?
end
|
#need_mixed_data_bem? ⇒ Boolean
119
120
121
|
# File 'lib/bemer/entity_builder.rb', line 119
def need_mixed_data_bem?
bem? && mixins.entities.any?(&:need_data_bem?)
end
|
#tag ⇒ Object
105
106
107
|
# File 'lib/bemer/entity_builder.rb', line 105
def tag
super.nil? ? default_tag : @tag
end
|
#tag=(new_tag, save = true) ⇒ Object
109
110
111
112
113
|
# File 'lib/bemer/entity_builder.rb', line 109
def tag=(new_tag, save = true)
new_tag = build_tag(new_tag)
save ? @tag = new_tag : new_tag
end
|