class ERBLint::Linters::ArgumentMappers::Base

Override attribute_to_args in a child class to customize its mapping behavior.
Provides the base interface to implement an ‘ArgumentMapper`.

def attribute_to_args(attribute); end

def attribute_to_args(attribute); end

def classes_to_args(classes)

Returns:
  • (classes: Array, ...) -
def classes_to_args(classes)
  { classes: classes }
end

def erb_helper

def erb_helper
  @erb_helper ||= Helpers::ErbBlock.new
end

def initialize(tag)

def initialize(tag)
  @tag = tag
end

def map_classes(classes_node)

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

def system_arguments_to_args(classes)

def system_arguments_to_args(classes)
  system_arguments = ::Primer::Classify::Utilities.classes_to_hash(classes)
  # need to transform symbols to strings with leading `:`
  system_arguments.transform_values do |v|
    v.is_a?(Symbol) ? ":#{v}" : v
  end
end

def to_args

def to_args
  args = {}
  args[:tag] = ":#{@tag.name}" unless self.class::DEFAULT_TAG.nil? || @tag.name == self.class::DEFAULT_TAG
  @tag.attributes.each do |attribute|
    attr_name = attribute.name
    if self.class::ATTRIBUTES.include?(attr_name)
      args.merge!(attribute_to_args(attribute))
    elsif attr_name == "class"
      args.merge!(map_classes(attribute))
    else
      # Assume the attribute is a system argument.
      args.merge!(SystemArguments.new(attribute).to_args)
    end
  end
  args
end

def to_s

def to_s
  to_args.map { |k, v| "#{k}: #{v}" }.join(", ")
end