module Lookbook::Utils

def id(*args)

def id(*args)
  parts = args.map { |arg| arg.to_s }
  id_str = parts.join("-").force_encoding("UTF-8").parameterize.dasherize
  PathUtils.strip_slashes(id_str).tr("/", "-").gsub("--", "-")
end

def name(str)

def name(str)
  str.to_s.dup.force_encoding("UTF-8").parameterize.tr("-", "_")
end

def symbolize_name(str)

def symbolize_name(str)
  name(str).to_sym
end

def temp_id(prefix: nil)

def temp_id(prefix: nil)
  [prefix, (Time.now.to_f * 1000).to_i + rand(0..100)].compact.join("-")
end

def value_or_fallback(value, fallback = nil, &block)

def value_or_fallback(value, fallback = nil, &block)
  if value.nil?
    fallback_block = block || proc { fallback }
    fallback_block.call
  else
    value
  end
end