Перевод строки SASS в «нестроковый»

#css #sass #gulp-sass #node-sass

#css #sass #глоток-sass #узел-sass

Вопрос:

У меня есть сценарий, в котором я использую файл JSON для динамического создания переменных SASS. Плагин (Gulp-json-css) может сохранять свойства карты и массива, но не добавляет кавычки к ключам карты:

 $palettes : ( white: #ffffff, grey: (lite: #aaaaaa, base: #999999, dark: #666666), black: #000000);
 

Я столкнулся с проблемой, из-за которой map-get() не удается найти подходящее значение, если для параметра используется строка в кавычках.

 map-get($palettes, white) => #ffffff

map-get($palettes, "white") => null
--
Conclusion : (white != "white")
 

Есть ли способ изменить строку, заключенную в кавычки, на строку без кавычек? Я знаю, о чем вы думаете, но unquote() тоже не работает:

 $color : "white";
white == unquote($color) => false
 

Мне нужен способ включить "white" white , чтобы соответствующим образом получить правильное значение с помощью map-get() функции.

ОБНОВЛЕНИЕ / РЕШЕНИЕ

Для тех, кто сталкивается с этой страницей и ищет решение, я закончил тем, что написал функцию, которая будет перебирать карту и добавлять кавычки к ее ключам:

 @function quoteMapKeys( $map )
{
    $newMap : ();

    @each $key,$value in $map
    {
        @if type-of($value) == 'map'
        {
            $value : quoteMapKeys( $value );
        }

        $newMap : map-merge($newMap, (quote($key):$value));
    }

    @return $newMap;
}
 
 $palettes : quoteMapKeys( $palettes );
 

Комментарии:

1. Попробуйте использовать #{white} . Если ни это, ни unquote() это не работает, вы можете открыть проблему на GitHub, поскольку в любом случае это не должно иметь значения, заключена ли ваша строка в кавычки или нет. Вы можете дополнительно проверить свою версию Sass.

2. Да, я также пробовал интерполяцию. Имейте в виду, что строка поступает из переменной, подобной моему последнему примеру «unquote» пример. Я также отправил сообщение автору «node-sass», чтобы узнать, есть ли у них что-нибудь на уме.

3. Тогда я мог бы только предложить вам перейти на Dart Sass. Это может помочь. Библиотека Sass долгое время не обновлялась

4. Спасибо за предложение, но на самом деле я нашел решение своей проблемы, написав функцию, которая добавляет кавычки к ключам вашей карты.