Sass Interpolation of Mixin, Function y Variable names

Estoy intentando recorrer una lista de valores en Sass y utilizar la interpolación de la clave actual para generar dinámicamente nombres de clase que utilicen @include y @extend, respectivamente.

Aquí hay un bolígrafo que muestra el problema, simplificado. http://codepen.io/ghepting/pen/vBmLy

Como puede ver en el marcado, intenté incluir el “_” dentro de la cadena interpolada y fuera de ella. ¿Hay algo que me falta para evitar esta limitación de cómo Sass admite la interpolación?

(Nota: el bolígrafo del OP ha desaparecido. Este no es el código original que se encuentra en el bolígrafo, sino una aproximación aproximada del problema)

$error-light: red; $error-dark: darken(red, 10%); $success-light: green; $success-dark: darken(green, 10%); $dialogs: error, success; @each $d in $dialogs { .#{$d} { background: $#{$d}-light; } } 

La interpolación no funciona en mixins o variables en este momento. Tendrás que encontrar una forma diferente de lograr tu objective.

A partir de Sass 3.3, puede usar asignaciones para este propósito para las variables:

 $dialogs: ( error: ( light: red , dark: darken(red, 10%) ) , success: ( light: green , dark: darken(green, 10%) ) ); @each $name, $colors in $dialogs { .#{$name} { color: map-get($colors, dark); } } 

Y para funciones:

 @function green() { @return lighten(green, 10%); } @function red() { @return lighten(red, 10%); } @mixin my-bg($function-name) { background: call($function-name); } .foo { @include my-bg('red'); }