Skip to content

Instantly share code, notes, and snippets.

@rafegoldberg
Last active January 13, 2021 15:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rafegoldberg/49de9b87f316996d91f5b6536b1cc0cb to your computer and use it in GitHub Desktop.
Save rafegoldberg/49de9b87f316996d91f5b6536b1cc0cb to your computer and use it in GitHub Desktop.
A Sass @mixin to generate silent extension class patterns.

Silent Sass Extension

Running this Gist through Sass should generate the following output:

.underridden { // $XELIDE: true !default
  color: magenta;
}

.underridden {
  color: red;
}
.overridden {
  color: blue;
}

.overridden, .override { // $XELIDE: false
  color: magenta;
}
// $XELIDE: false;
@import "pattern.core";
@import "underride.partial";
.underridden {
@extend %underr;
color: red;
}
.overridden {
@extend %overr;
color: blue;
}
@import "override.partial"
@include x(overr){
color: cyan;
}
$XELIDE: false !default;
@mixin x($patternName, $elide: true){
$elide: if($elide, $XELIDE, false);
$class: '%#{$patternName}';
@if not $elide {
$class: '#{$class}, .#{$patternName}';
}
#{$class} { @content }
}
@include x(underr){
color: magenta;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment