module Lookbook::Preview
def all
def all ViewComponent::Preview.all.sort_by(&:label) end
def display_params
def display_params Lookbook.config.preview_display_params.deep_merge(lookbook_display_params) end
def exists?(path)
def exists?(path) !!find(path) end
def find(path)
def find(path) all.find { |p| p.lookbook_path == path } end
def id
def id lookbook_path.tr("/", "-").tr("_", "-") end
def lookbook_example(example_name)
def lookbook_example(example_name) lookbook_examples.find { |m| m.name == example_name } end
def lookbook_examples
def lookbook_examples return @lookbook_examples if @lookbook_examples.present? public_methods = public_instance_methods(false) public_method_objects = code_object.meths.filter { |m| public_methods.include?(m.name) } examples = public_method_objects.map { |m| PreviewExample.new(m.name.to_s, self) } sorted = Lookbook.config.sort_examples ? examples.sort_by(&:label) : examples @lookbook_examples = [] if code_object.groups.any? sorted.group_by { |m| m.group }.each do |name, examples| if name.nil? @lookbook_examples += examples else name = lookbook_label if name.strip == "" @lookbook_examples << PreviewGroup.new(name.underscore, self, examples) end end else @lookbook_examples = sorted end @lookbook_examples end
def lookbook_full_path
Examples::FooBarComponentPreview -> "/Users/myname/myapp/test/components/previews/examples/foo_bar_component_preview.rb"
def lookbook_full_path base_path = Array(preview_paths).detect do |preview_path| Dir["#{preview_path}/#{name.underscore}.rb"].first end Pathname.new(Dir["#{base_path}/#{name.underscore}.rb"].first) end
def lookbook_hierarchy_depth
def lookbook_hierarchy_depth lookbook_path.split("/").size end
def lookbook_id
def lookbook_id lookbook_path.tr("/", "-").tr("_", "-") end
def lookbook_label
def lookbook_label super.presence || lookbook_path.split("/").last.titleize end
def lookbook_layout
def lookbook_layout defined?(@layout) ? @layout : nil end
def lookbook_name
Examples::FooBarComponentPreview -> "Examples::FooBar"
def lookbook_name name.chomp("ComponentPreview").chomp("Component::Preview").chomp("::") end
def lookbook_parent_collections
def lookbook_parent_collections File.dirname(lookbook_path).split("/") end
def lookbook_path
Examples::FooBarComponentPreview -> "examples/foo_bar"
def lookbook_path lookbook_name.underscore end
def lookbook_type
def lookbook_type :preview end
def taggable_object_path
def taggable_object_path name end