Method: ERBLint::Linters::ArgumentMappers::Base#map_classes

Defined in:
lib/primer/view_components/linters/argument_mappers/base.rb

#map_classes(classes_node) ⇒ Object

Raises:


50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/primer/view_components/linters/argument_mappers/base.rb', line 50

def map_classes(classes_node)
  erb_helper.raise_if_erb_block(classes_node)

  system_arguments = system_arguments_to_args(classes_node.value)
  args = classes_to_args(system_arguments[:classes]&.split || [])

  invalid_classes = args[:classes].select { |class_name| ::Primer::Classify::Validation.invalid?(class_name) }

  raise ConversionError, "Cannot convert #{'class'.pluralize(invalid_classes.size)} #{invalid_classes.join(',')}" if invalid_classes.present?

  # Using splat to order the arguments in Component's args -> System Args -> custom classes
  res = {
    **args.except(:classes),
    **system_arguments.except(:classes)
  }

  if args[:classes].present?
    res = {
      **res,
      classes: args[:classes].join(" ").to_json
    }
  end

  res
end