@use 'sass:list';
@use 'is-true' as *;
@use 'to-list' as *;

/// Removes all values from $list that are `null`, `false`, or are empty maps,
/// lists, or strings.
///
/// @param {List} $list - The list to purge.
///
/// @return {List} The purged list.
///
/// @access public
/// @group Utilities
/// @require {function} is-true
/// @require {function} to-list
@function list-purge($list) {
  $result: ();

  @each $item in $list {
    @if is-true($item) {
      $result: list.append($result, $item, list.separator($list));
    }
  }

  @return to-list($result);
}

/// Removes all values from $list that are `null`, `false`, or are empty maps,
/// lists, or strings.
///
/// @param {List} $list - The list to purge.
///
/// @return {List} The purged list.
///
/// @access public
/// @group Utilities
/// @require {function} list-purge
///
/// @alias list-purge
@function purge-list($list) {
  @return list-purge($list);
}

/// Removes all values from $list that are `null`, `false`, or are empty maps,
/// lists, or strings.
///
/// @param {List} $list - The list to purge.
///
/// @return {List} The purged list.
///
/// @access public
/// @group Utilities
/// @require {function} list-purge
///
/// @alias list-purge
@function clean-list($list) {
  @return list-purge($list);
}

/// Removes all values from $list that are `null`, `false`, or are empty maps,
/// lists, or strings.
///
/// @param {List} $list - The list to purge.
///
/// @return {List} The purged list.
///
/// @access public
/// @group Utilities
/// @require {function} list-purge
///
/// @alias list-purge
@function list-clean($list) {
  @return list-purge($list);
}
