class Primer::Yard::LookbookPage
def generate
def generate path = File.expand_path( File.join( *%w[.. .. .. previews pages forms inputs], "#{docs.short_name.dasherize.underscore}.md.erb" ), __dir__ ) documented_methods = docs.non_slot_methods.select do |mtd| [component.name, "Primer::Forms::Dsl::InputMethods"].include?(mtd.parent.title) end preview_methods = PREVIEW_MAP[component] preview_erbs = preview_methods.map do |preview_method| if Primer::FormsPreview.instance_methods.exclude?(preview_method) raise "Preview '#{preview_method}' does not exist in Primer::FormsPreview" end # rubocop:enable Style/IfUnlessModifier "<%= embed Primer::FormsPreview, #{preview_method.inspect} %>" end # rubocop:enable Lint/UselessAssignment # rubocop:disable Security/Eval File.open(path, "w") do |f| f.write(eval(Erubi::Engine.new(<<~ERB, trim: true).src)) --- title: <%= docs.title.underscore.titleize %> id: <%= page_id %> --- <%= docs.base_docstring %> ## Usage ```ruby <%= docs.tags(:form_usage).first.text %> ``` <% specific_args = specific_args_from(docs.params) %> <% unless specific_args.empty? %> ## Arguments <%= generate_args_table(specific_args) %> <% end %> ## Common arguments <%= generate_args_table(common_args_from(docs.params)) %> <% unless documented_methods.empty? %> ## Methods <% documented_methods.each do |method_docs| %> ### `#<%= method_docs.signature.sub(/def /, "") %>` <%= method_docs.base_docstring %> <% param_tags = method_docs.tags(:param) %> <% if param_tags.any? %> <%= generate_args_table(param_tags) %> <% end %> <% end %> <% end %> <% unless preview_methods.empty? %> ## Examples <%= preview_erbs.join("\n") %> <% end %> ERB end # rubocop:enable Security/Eval end