/// Removes unit from length.
///
/// @group 02-size
///
/// @param  {Number} $number - Number from which to remove unit.
/// @return {Number}         - Unitless number.
///
/// @link   https://css-tricks.com/snippets/sass/strip-unit-function/
@function strip-unit($number) {
  @if type-of($number) == 'number' and not unitless($number) {
    @return $number/($number * 0 + 1);
  }

  @return $number;
}

/// Get a unitless number from two numbers. Helpful for calculating line height.
///
/// @group 02-size
///
/// @param  {Number} $number                 - Numerator for calculation.
/// @param  {Number} $base [$base-font-size] - Denominator for calculation.
/// @return {Number}                         - Number without units.
@function unitless-calc($number, $base: $base-font-size) {
  @if not unitless($number) {
    $number: strip-unit($number);
  }

  @if not unitless($base) {
    $base: strip-unit($base);
  }

  @return $number / $base;
}

/// Convert a pixel value to ems. Pass `$base` for increased accuracy.
///
/// @group 02-size
///
/// @param  {Number} $pxval                  - The pixel value to convert.
/// @param  {Number} $base [$base-font-size] - The pixel equivalent of ancestor font size.
/// @return {Number}                         - The `em` font size.
///
/// @link   https://github.com/thoughtbot/bourbon/blob/v4-stable/app/assets/stylesheets/functions/_px-to-em.scss
@function em($pxval, $base: $base-font-size) {
  @if not unitless($pxval) {
    $pxval: strip-unit($pxval);
  }

  @if not unitless($base) {
    $base: strip-unit($base);
  }

  @return ($pxval / $base) * 1em;
}

/// Convert a pixel value to rems.
///
/// @group 02-size
///
/// @param  {Number} $pxval - The pixel value to convert.
/// @return {Number}        - The `rem` font size.
///
/// @link   https://github.com/thoughtbot/bourbon/blob/v4-stable/app/assets/stylesheets/functions/_px-to-rem.scss
@function rem($pxval) {
  @if not unitless($pxval) {
    $pxval: strip-unit($pxval);
  }

  @return ($pxval / $base-font-size) * 1rem;
}
