Sha256: 90f06f1e96dc972fec2301c09c86fb8d5fac217b147296934a21bd5f08e32874

Contents?: true

Size: 1.52 KB

Versions: 5

Compression:

Stored size: 1.52 KB

Contents

// Map Functions
// =============


// Truncate List
// -------------
// - Return a list, truncated to a given length
@function _susy-truncate-list(
  $list,
  $length
) {
  $_return: ();

  @for $i from 1 through length($list) {
    $_return: if($i <= $length, append($_return, nth($list, $i)), $_return);
  }

  @return $_return;
}


// Deep Get
// --------
// - Return a value deep in nested maps
@function _susy-deep-get(
  $map,
  $keys...
) {
  $_return: $map;

  @each $key in $keys {
    @if type-of($_return) == map {
      $_return: map-get($_return, $key);
    }
  }

  @return $_return;
}


// Deep Set
// --------
// - Set a value deep in nested maps
@function _susy-deep-set(
  $map,
  $keys-value...
) {
  $_value: nth($keys-value, -1);
  $_keys: _susy-truncate-list($keys-value, length($keys-value) - 1);
  $_length: length($_keys);
  $_return: ();

  @for $i from 1 through $_length {
    $_n: 0 - $i;
    $_level: _susy-truncate-list($_keys, $_length + $_n);
    $_level: _susy-deep-get($map, $_level...);
    $_merge: (nth($_keys, $_n): $_value);
    $_return: if($_level, map-merge($_level, $_merge), $_merge);
    $_value: $_return;
  }

  @return $_return;
}


// Deep Has-Key
// ------------
// - Return true if a deep key exists
@function _susy-deep-has-key(
  $map,
  $keys...
) {
  $_return: null;
  $_stop: false;

  @each $key in $keys {
    @if not $_stop {
      $_return: map-has-key($map, $key);
    }

    @if $_return {
      $map: map-get($map, $key);
    } @else {
      $_stop: true;
    }
  }

  @return $_return;
}

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
susy-2.1.1 sass/susy/math/su/_maps.scss
susy-2.1.0 sass/susy/math/su/_maps.scss
susy-2.0.0 sass/susy/math/_maps.scss
susy-2.0.0.rc.2 sass/susy/math/_maps.scss
susy-2.0.0.rc.1 sass/susy/math/_maps.scss