lib/lookbook/support/utils/utils.rb



module Lookbook
  module Utils
    class << self
      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 temp_id(prefix: nil)
        [prefix, (Time.now.to_f * 1000).to_i + rand(0..100)].compact.join("-")
      end

      def name(str)
        str.to_s.parameterize.tr("-", "_")
      end

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

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