// Susy Settings // =============

// Susy Language Defaults // ———————- // - PRIVATE @include susy-defaults((

container: auto,
math: fluid,
output: float,
container-position: center,
gutter-position: after,
global-box-sizing: content-box,
debug: (
  image: hide,
  color: rgba(#66f, .25),
  output: background,
  toggle: top right,
),

));

// Valid Keyword Values // ——————– // - PRIVATE: DONT'T TOUCH $susy-keywords: (

container: auto,
math: static fluid,
output: isolate float,
container-position: left center right,
flow: ltr rtl,
gutter-position: before after split inside inside-static,
box-sizing: border-box content-box,
span: full,
edge: first alpha last omega full,
spread: narrow wide wider,
gutter-override: no-gutters no-gutter,
role: nest,
clear: break nobreak,
debug image: show hide show-columns show-baseline,
debug output: background overlay,

);

// Parse Susy Keywords and Maps // —————————- @function parse-settings(

$short: $susy

) {

$_return: ();

@if type-of($short) == map {
  $_return: $short;
} @else {
  @each $item in $short {
    // strings
    @if type-of($item) == string {
      @each $key, $value in $susy-keywords {
        @if index($value, $item) {
          $_key-value: append($key, $item);
          $_return: _susy-deep-set($_return, $_key-value...);
        }
      }
    // maps
    } @else if type-of($item) == map {
      $_return: map-merge($_return, $item);
    }
  }
}

@return $_return;

}

// Parse Columns & Gutters // ———————– @function parse-layout(

$short

) {

$_return: ();
$_columns: ();
$_gutters: null;

@if not(unitless(nth(nth($short, 1), 1))) {
  $_gutters: nth($short, 1);
} @else {
  $_columns: (columns: nth($short, 1));
  $_gutters: if(length($short) > 1, nth($short, 2), $_gutters);
}

@if type-of($_gutters) == list and length($_gutters) > 0 {
  $_gutters: (
    gutters: nth($_gutters, 2) / nth($_gutters, 1),
    column-width: nth($_gutters, 1),
  );
} @else {
  $_gutters: if($_gutters, (gutters: $_gutters), ());
}

$_return: map-merge($_return, $_columns);
$_return: map-merge($_return, $_gutters);

@return $_return;

}

// Parse Grid/Context // —————— @function parse-grid(

$short: $susy

) {

$_return: parse-settings($short);
$_layout: ();

@if type-of($short) == map {
  $_return: $short;
} @else {
  @each $item in $short {
    // number or list
    @if type-of($item) == number or type-of($item) == list {
      @if type-of($item) == list or unitless($item) {
        $_layout: append($_layout, $item);
      } @else {
        $_return: map-merge($_return, (container: $item));
      }
    }
  }

  $_layout: if(length($_layout) > 0, parse-layout($_layout), $_layout);
}

@return map-merge($_return, $_layout);

}

// Parse Span // ———- @function parse-span(

$short,
$key: span

) {

$_return: ();

@if type-of($short) == map {
  $_return: $short;
} @else {
  $_at: index($short, at);

  @if $_at {
    $_loci: $_at + 1;
    $_location: nth($short, $_loci);
    $_return: map-merge($_return, (location: $_location));
    $short: set-nth($short, $_at, null);
    $short: set-nth($short, $_loci, null);
  }

  $_i: 1;
  $_span: ();

  @while $_i <= length($short) {
    $_this: nth($short, $_i);

    @if type-of($_this) == number {
      $_span: append($_span, $_this);
      $short: set-nth($short, $_i, null);
    } @else if $_this == of {
      $short: set-nth($short, $_i, null);
      $_i: length($short) + 1;
    }

    $_i: $_i + 1;
  }

  @if length($_span) > 0 {
    $_span: if(length($_span) == 1, nth($_span, 1), $_span);
    $_return: map-merge($_return, ($key: $_span));
  }

  $_return: map-merge($_return, parse-grid($short));
}

@return $_return;

}

// Parse Gutters // ————- @function parse-gutters(

$short: $susy

) {

$_gutters: parse-span($short, gutter-override);
$_span: susy-get(gutter-override, $_gutters);

@if $_span and not(map-get($_gutters, columns)) {
  $_context: ();
  $_new: ();

  @each $item in $_span {
    @if type-of($item) == number and unitless($item) {
      $_context: append($_context, $item);
    } @else {
      $_new: append($_new, $item);
    }
  }

  $_context: parse-grid($_context);
  $_new: if(length($_new) == 0, null, $_new);
  $_new: if(length($_new) == 1, nth($_new, 1), $_new);
  $_new: (gutter-override: if($_new != $_span, $_new, $_span));

  $_gutters: map-merge($_gutters, $_new);
  $_gutters: map-merge($_gutters, $_context);
}

@return $_gutters;

}