#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. Спасибо за предложение, но на самом деле я нашел решение своей проблемы, написав функцию, которая добавляет кавычки к ключам вашей карты.