class Primer::Yard::LookbookPagesBackend

Backend that generates Lookbook pages.

def each_component(&block)

def each_component(&block)
  manifest.each(&block)
end

def generate

def generate
  each_component do |component_ref|
    next if IGNORED_COMPONENTS.include?(component_ref.klass)
    page_for(component_ref).generate
  end
  generate_system_args_docs
end

def generate_system_args_docs

def generate_system_args_docs
  docs = registry.find(Primer::BaseComponent)
  path = File.expand_path(
    File.join(
      *%w[.. .. .. previews pages system-arguments.md.erb]
    ), __dir__
  )
  data = {
    "description_md" => docs.base_docstring.to_s,
    "args_md" => view_context.render(inline: docs.constructor.base_docstring)
  }
  frontmatter = {
    "title" => "System arguments",
    "id" => "system_arguments",
    "data" => data
  }
  File.write(
    path, <<~ERB
      #{YAML.dump(frontmatter)}
      ---
      <%= @page.data[:description_md].html_safe %>
      <%= @page.data[:args_md].html_safe %>
    ERB
  )
end

def initialize(registry, manifest)

def initialize(registry, manifest)
  @registry = registry
  @manifest = manifest
end

def page_for(component_ref)

def page_for(component_ref)
  docs = registry.find(component_ref.klass)
  LookbookPage.new(component_ref, self, docs)
end

def view_context

def view_context
  @view_context ||= super.tap do |vc|
    vc.singleton_class.include(LookbookDocsHelper)
  end
end