Class: TailwindMerge::ClassGroupUtils
- Inherits:
-
Object
- Object
- TailwindMerge::ClassGroupUtils
- Defined in:
- lib/tailwind_merge/class_group_utils.rb
Constant Summary collapse
- CLASS_PART_SEPARATOR =
"-"- ARBITRARY_PROPERTY_REGEX =
/^\[(.+)\]$/
Instance Attribute Summary collapse
-
#class_map ⇒ Object
readonly
Returns the value of attribute class_map.
Instance Method Summary collapse
- #class_group_id(class_name) ⇒ Object
- #get_conflicting_class_group_ids(class_group_id, has_postfix_modifier) ⇒ Object
- #get_group_recursive(class_parts, class_part_object) ⇒ Object
-
#initialize(config) ⇒ ClassGroupUtils
constructor
A new instance of ClassGroupUtils.
Constructor Details
#initialize(config) ⇒ ClassGroupUtils
Returns a new instance of ClassGroupUtils.
11 12 13 14 |
# File 'lib/tailwind_merge/class_group_utils.rb', line 11 def initialize(config) @config = config @class_map = create_class_map(config) end |
Instance Attribute Details
#class_map ⇒ Object (readonly)
Returns the value of attribute class_map.
5 6 7 |
# File 'lib/tailwind_merge/class_group_utils.rb', line 5 def class_map @class_map end |
Instance Method Details
#class_group_id(class_name) ⇒ Object
16 17 18 19 20 21 22 23 24 |
# File 'lib/tailwind_merge/class_group_utils.rb', line 16 def class_group_id(class_name) class_parts = class_name.split(CLASS_PART_SEPARATOR) # Classes like `-inset-1` produce an empty string as first class_part. # Assume that classes for negative values are used correctly and remove it from class_parts. class_parts.shift if class_parts.first == "" && class_parts.length != 1 get_group_recursive(class_parts, @class_map) || get_group_id_for_arbitrary_property(class_name) end |
#get_conflicting_class_group_ids(class_group_id, has_postfix_modifier) ⇒ Object
50 51 52 53 54 55 56 57 58 |
# File 'lib/tailwind_merge/class_group_utils.rb', line 50 def get_conflicting_class_group_ids(class_group_id, has_postfix_modifier) conflicts = @config[:conflicting_class_groups][class_group_id] || [] if has_postfix_modifier && @config[:conflicting_class_group_modifiers][class_group_id] return [*conflicts, *@config[:conflicting_class_group_modifiers][class_group_id]] end conflicts end |
#get_group_recursive(class_parts, class_part_object) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/tailwind_merge/class_group_utils.rb', line 26 def get_group_recursive(class_parts, class_part_object) return class_part_object[:class_group_id] if class_parts.empty? current_class_part = class_parts.first next_class_part_object = class_part_object[:next_part][current_class_part] if next_class_part_object class_group_from_next_class_part = get_group_recursive(class_parts.drop(1), next_class_part_object) return class_group_from_next_class_part if class_group_from_next_class_part end return if class_part_object[:validators].empty? class_rest = class_parts.join(CLASS_PART_SEPARATOR) result = class_part_object[:validators].find do |v| validator = v[:validator] from_theme?(validator) ? validator.call(@config) : validator.call(class_rest) end result&.fetch(:class_group_id, nil) end |