@charset 'UTF-8';

////
/// Flavor SCSS Types URL
/// @group types-url
/// @author blackmirror1980
////

/// Checks if a string is an url function string
///
/// @access public
/// @param {any} $u - the value to check
/// @requires {function} is-string
/// @requires {function} string-starts-with
/// @requires {function} string-ends-with
/// @return {boolean} - true if the url value has the url function inside
@function has-url-function($u) {
  @if is-string($u) {
    @return string-starts-with($u, 'url("') and string-ends-with($u, '")');
  }

  @warn '`url: #{$u}` is not a valid string';
  @return false;
}

/// Checks if a string is an url
///
/// @access public
/// @param {any} $u - the value to check
/// @requires {function} is-string
/// @requires {function} has-url-function
/// @requires {function} string-slice
/// @requires {function} string-length
/// @requires {function} string-starts-with
/// @return {boolean} - true if is an url
@function is-url($u) {
  @if is-string($u) {
    $url: $u;

    @if has-url-function($url) {
      $url: string-slice($u, 6, string-length($u) - 2);
    }

    @if string-starts-with($url, '../') or string-starts-with($url, '/') or string-starts-with($url, 'http') or string-starts-with($url, 'data:') {
      @return true;
    }
  }

  @warn '`url: #{$u}` is not a valid string';
  @return false;
}

/// Adds the url function to an url string if is missing
///
/// @access public
/// @param {any} $u - the value to check
/// @return {boolean} - the fixed url string value
@function inspect-url($u) {
  @if is-url($u) {
    $url: $u;

    @if not has-url-function($url) {
      $url: url('#{$url}');
    }

    @return $url;
  }

  @return false;
}
