local utils = {}

utils.bounded = function(value, min, max)
  min = min or 0
  max = max or math.huge

  if min then
    value = math.max(value, min)
  end
  if max then
    value = math.min(value, max)
  end

  return value
end

utils.apply_defaults = function(original, defaults)
  if original == nil then
    original = {}
  end

  original = vim.deepcopy(original)

  for k, v in pairs(defaults) do
    if original[k] == nil then
      original[k] = v
    end
  end

  return original
end

return utils