module Lookbook::Utils

def class_name(klass)

def class_name(klass)
  klass.is_a?(Class) ? klass.name : klass
end

def default_url_options

def default_url_options
  {}
end

def generate_id(*args)

def generate_id(*args)
  parts = args.map { |arg| arg.to_s.force_encoding("UTF-8").parameterize.underscore }
  parts.join("-").tr("/_", "-").delete_prefix("-").delete_suffix("-").gsub("--", "-")
end

def get_frontmatter(str)

def get_frontmatter(str)
  parse_frontmatter(str).first
end

def get_position_prefix(str)

def get_position_prefix(str)
  parse_position_prefix(str).first
end

def normalize_matchers(*matchers)

def normalize_matchers(*matchers)
  matchers.flatten.map { |m| m.gsub(/\s/, "").downcase }
end

def parse_frontmatter(content)

def parse_frontmatter(content)
  frontmatter = content.match(FRONTMATTER_REGEX)
  if frontmatter.nil?
    [{}, content]
  else
    [YAML.safe_load(frontmatter[0]), content.gsub(FRONTMATTER_REGEX, "")]
  end
end

def parse_position_prefix(str)

def parse_position_prefix(str)
  pos = str.match(POSITION_PREFIX_REGEX)
  if pos.nil?
    [10000, str]
  else
    cleaned_str = str.gsub(POSITION_PREFIX_REGEX, "")
    [pos[1].to_i, cleaned_str]
  end
end

def preview_class_basename(klass)

def preview_class_basename(klass)
  class_name(klass).to_s.chomp("ComponentPreview").chomp("Component::Preview").chomp("::Preview").chomp("Component").chomp("Preview").chomp("::")
end

def preview_class_name(klass)

def preview_class_name(klass)
  preview_class_basename(klass).underscore
end

def remove_position_prefix(str)

def remove_position_prefix(str)
  parse_position_prefix(str).last
end

def strip_frontmatter(str)

def strip_frontmatter(str)
  parse_frontmatter(str).last
end

def to_lookup_path(path)

def to_lookup_path(path)
  path.split("/").map { |segment| remove_position_prefix(segment) }.join("/")
end

def to_preview_path(*args)

def to_preview_path(*args)
  args.flatten.map { |arg| preview_class_name(arg) }.join("/")
end