jdsteinbach
10/29/2014 - 3:41 PM

_inheritance.sass

$global_store: ();

@mixin override($args, $is_child:true) {
  @if $is_child {
    $global_store: () !global;
  }
  $global_store: map-merge($global_store, $args) !global;
}
@mixin default($key_or_map, $value:null) {
  @if $value {
    @include store-default($key_or_map, $value);
  }
  @else {
    @each $key, $value in $key_or_map {
      @include store-default($key, $value);
    }
  }
}
@mixin store-default($key, $value) {
  @if map-has-key($global_store, $key) {
  }
  @else {
    $global_store: map-merge($global_store, ($key: $value)) !global;
  }
}
@function fetch($key) {
  @return map-get($global_store, $key);
}
$global_store: ()

= override($args:(), $is_child:true)
  @if $is_child
    $global_store: () !global
  $global_store: map-merge($global_store, $args) !global

= default($key_or_map, $value:null)
  @if $value
    +store-default($key_or_map, $value)
  @else
    @each $key, $value in $key_or_map
      +store-default($key, $value)

= store-default($key, $value)
  @if map-has-key($global_store, $key)
  @else
    $global_store: map-merge($global_store, ($key: $value)) !global

@function fetch($key)
  @return map-get($global_store, $key)