@@ -16,7 +16,7 @@ def initialize(config)
16
16
def class_group_id ( class_name )
17
17
class_parts = class_name . split ( CLASS_PART_SEPARATOR )
18
18
19
- # Classes like `-inset-1` produce an empty string as first classPart .
19
+ # Classes like `-inset-1` produce an empty string as first class_part .
20
20
# Assume that classes for negative values are used correctly and remove it from class_parts.
21
21
class_parts . shift if class_parts . first == "" && class_parts . length != 1
22
22
@@ -30,52 +30,47 @@ def get_group_recursive(class_parts, class_part_object)
30
30
31
31
next_class_part_object = class_part_object [ :next_part ] [ current_class_part ]
32
32
33
- class_group_from_next_class_part = next_class_part_object ? get_group_recursive ( class_parts [ 1 ..-1 ] , next_class_part_object ) : nil
34
-
35
- return class_group_from_next_class_part if class_group_from_next_class_part
33
+ if next_class_part_object
34
+ class_group_from_next_class_part = get_group_recursive ( class_parts . drop ( 1 ) , next_class_part_object )
35
+ return class_group_from_next_class_part if class_group_from_next_class_part
36
+ end
36
37
37
38
return if class_part_object [ :validators ] . empty?
38
39
39
40
class_rest = class_parts . join ( CLASS_PART_SEPARATOR )
40
41
41
42
result = class_part_object [ :validators ] . find do |v |
42
43
validator = v [ :validator ]
43
-
44
- if from_theme? ( validator )
45
- validator . call ( @config )
46
- else
47
- validator . call ( class_rest )
48
- end
44
+ from_theme? ( validator ) ? validator . call ( @config ) : validator . call ( class_rest )
49
45
end
50
46
51
- result . nil? ? result : result [ : class_group_id]
47
+ result &. fetch ( : class_group_id, nil )
52
48
end
53
49
54
50
def get_conflicting_class_group_ids ( class_group_id , has_postfix_modifier )
55
51
conflicts = @config [ :conflicting_class_groups ] [ class_group_id ] || [ ]
56
52
57
53
if has_postfix_modifier && @config [ :conflicting_class_group_modifiers ] [ class_group_id ]
58
- return [ ... conflicts , ... @config [ :conflicting_class_group_modifiers ] [ class_group_id ] ]
54
+ return [ * conflicts , * @config [ :conflicting_class_group_modifiers ] [ class_group_id ] ]
59
55
end
60
56
61
57
conflicts
62
58
end
63
59
64
60
private def create_class_map ( config )
65
- theme = config [ :theme ]
66
61
prefix = config [ :prefix ]
67
62
class_map = {
68
63
next_part : { } ,
69
64
validators : [ ] ,
70
65
}
71
66
72
67
prefixed_class_group_entries = get_prefixed_class_group_entries (
73
- config [ :class_groups ] . map { |cg | [ cg [ 0 ] , cg [ 1 ] ] } ,
68
+ config [ :class_groups ] . map { |group_id , group_classes | [ group_id , group_classes ] } ,
74
69
prefix ,
75
70
)
76
71
77
- prefixed_class_group_entries . each do |( class_group_id , class_group ) |
78
- process_classes_recursively ( class_group , class_map , class_group_id , theme )
72
+ prefixed_class_group_entries . each do |class_group_id , class_group |
73
+ process_classes_recursively ( class_group , class_map , class_group_id )
79
74
end
80
75
81
76
class_map
@@ -84,53 +79,43 @@ def get_conflicting_class_group_ids(class_group_id, has_postfix_modifier)
84
79
private def get_prefixed_class_group_entries ( class_group_entries , prefix )
85
80
return class_group_entries if prefix . nil?
86
81
87
- class_group_entries . map do |( class_group_id , class_group ) |
82
+ class_group_entries . map do |class_group_id , class_group |
88
83
prefixed_class_group = class_group . map do |class_definition |
89
- next ( "#{ prefix } #{ class_definition } " ) if class_definition . is_a? ( String )
90
-
91
- next ( class_definition . transform_keys { |key | "#{ prefix } #{ key } " } ) if class_definition . is_a? ( Hash )
92
-
93
- class_definition
84
+ if class_definition . is_a? ( String )
85
+ "#{ prefix } #{ class_definition } "
86
+ elsif class_definition . is_a? ( Hash )
87
+ class_definition . transform_keys { |key | "#{ prefix } #{ key } " }
88
+ else
89
+ class_definition
90
+ end
94
91
end
95
92
96
93
[ class_group_id , prefixed_class_group ]
97
94
end
98
95
end
99
96
100
- private def process_classes_recursively ( class_group , class_part_object , class_group_id , theme )
97
+ private def process_classes_recursively ( class_group , class_part_object , class_group_id )
101
98
class_group . each do |class_definition |
102
99
if class_definition . is_a? ( String )
103
100
class_part_object_to_edit = class_definition . empty? ? class_part_object : get_class_part ( class_part_object , class_definition )
104
101
class_part_object_to_edit [ :class_group_id ] = class_group_id
105
- next
106
- end
107
-
108
- if class_definition . is_a? ( Proc )
102
+ elsif class_definition . is_a? ( Proc )
109
103
if from_theme? ( class_definition )
104
+ process_classes_recursively ( class_definition . call ( @config ) , class_part_object , class_group_id )
105
+ else
106
+ class_part_object [ :validators ] << {
107
+ validator : class_definition ,
108
+ class_group_id : class_group_id ,
109
+ }
110
+ end
111
+ else
112
+ class_definition . each do |key , nested_class_group |
110
113
process_classes_recursively (
111
- class_definition . call ( @config ) ,
112
- class_part_object ,
114
+ nested_class_group ,
115
+ get_class_part ( class_part_object , key ) ,
113
116
class_group_id ,
114
- theme ,
115
117
)
116
- next
117
118
end
118
-
119
- class_part_object [ :validators ] . push ( {
120
- validator : class_definition ,
121
- class_group_id : class_group_id ,
122
- } )
123
-
124
- next
125
- end
126
-
127
- class_definition . each do |( key , class_group ) |
128
- process_classes_recursively (
129
- class_group ,
130
- get_class_part ( class_part_object , key ) ,
131
- class_group_id ,
132
- theme ,
133
- )
134
119
end
135
120
end
136
121
end
@@ -153,16 +138,13 @@ def get_conflicting_class_group_ids(class_group_id, has_postfix_modifier)
153
138
end
154
139
155
140
private def get_group_id_for_arbitrary_property ( class_name )
156
- if ARBITRARY_PROPERTY_REGEX . match? ( class_name )
157
- match = ARBITRARY_PROPERTY_REGEX . match ( class_name ) || ""
158
- arbitrary_property_class_name = match [ 1 ] || ""
159
- property = arbitrary_property_class_name [ 0 ...arbitrary_property_class_name . index ( ":" ) ]
160
-
161
- if !property . nil? && !property . empty?
162
- # uses two dots here because one dot is used as prefix for class groups in plugins
163
- "arbitrary..#{ property } "
164
- end
165
- end
141
+ match = ARBITRARY_PROPERTY_REGEX . match ( class_name )
142
+ return unless match
143
+
144
+ property = match [ 1 ] . to_s . split ( ":" , 2 ) . first
145
+
146
+ # Use two dots here because one dot is used as prefix for class groups in plugins
147
+ "arbitrary..#{ property } " if property && !property . empty?
166
148
end
167
149
168
150
private def from_theme? ( validator )
0 commit comments