module Ollama::Utils::Width

def width(percentage: 100.0)

def width(percentage: 100.0)
  ((Float(percentage) * Tins::Terminal.columns) / 100).floor
end

def wrap(text, percentage: nil, length: nil)

def wrap(text, percentage: nil, length: nil)
  percentage.nil? ^ length.nil? or
    raise ArgumentError, "either pass percentage or length argument"
  percentage and length ||= width(percentage:)
  text.gsub(/(?<!\n)\n(?!\n)/, ' ').lines.map do |line|
    if line.length > length
      line.gsub(/(.{1,#{length}})(\s+|$)/, "\\1\n").strip
    else
      line.strip
    end
  end * ?\n
end