module Primer::Static::GenerateArguments

def call(view_context: self.view_context)

def call(view_context: self.view_context)
  Primer::Component.descendants.sort_by(&:name).map do |component|
    docs = registry.find(component)
    ref = Primer::Yard::ComponentManifest.ref_for(component)
    args = docs.params.map do |tag|
      default_value = Primer::Yard::DocsHelper.pretty_default_value(tag, component)
      {
        "name" => tag.name,
        "type" => tag.types.join(", "),
        "default" => default_value,
        "description" => view_context.render(inline: tag.text.squish)
      }
    end
    {
      "component" => docs.metadata[:title],
      "status" => component.status.to_s,
      "a11y_reviewed" => docs.metadata[:a11y_reviewed] == "true",
      "short_name" => docs.short_name,
      "source" => ref.source_url,
      "lookbook" => ref.lookbook_url,
      "parameters" => args
    }
  end
end

def registry

def registry
  @registry ||= Primer::Yard::Registry.make
end

def view_context

def view_context
  @view_context ||= ApplicationController.new.tap { |c| c.request = ActionDispatch::TestRequest.create }.view_context.tap do |vc|
    vc.singleton_class.include(Primer::Yard::DocsHelper)
    vc.singleton_class.include(Primer::ViewHelper)
  end
end