////////////////////////////////////////////////////////////////////////////////
/// Add Unit                                                           #add-unit
////////////////////////////////////////////////////////////////////////////////

/// Adds a default unit to a number if one is not used.
/// @author Mark Notton
/// @group helpers-numbers
/// @param {number} $value
/// @param {string} $unit - If a value is unitless add the default unit.
/// @param {bool} $force - If the value already has a unit, and a different unit was specifically
///   supplied, this boolean desides wether to forcibly replace the unit.
/// @require {variable} default-unit
/// @require {variable} $relative-lengths
/// @require {variable} $abolute-lengths
/// @require {function} is-unit
/// @require {function} is-number
/// @require {function} strip
///
/// @example scss - Usage
///   add-unit(50)
///   add-unit(50px)
///   add-unit(50, '%')
///   add-unit(50px, '%')
///
/// @output scss - Output
///   50px
///   50px
///   50%
///   50%

@use 'sass:math';
@use 'sass:map';
@use 'sass:meta';
@use '../modules/to/number' as to;
@use 'remove';


@function add($value, $unit, $force) {

  @if meta.type-of($value) == 'number' {
    @if math.is-unitless($value) {
      @return to-number($value + $unit);
    }
    @else if math.unit($value) {
      @if $force and $unit != null {
        @return to-number(remove($value) + $unit);
      } @else {
        @return to-number($value);
      }
    }
  } @else {
    @return $value;
  }
}
