SASS string to "non string"

Viewed 656

I have a scenario where I am using a JSON file in order to dynamically create SASS variables. The plugin (Gulp-json-css) can retain the map and array properties, but does not add quotations onto the map keys:

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

I am running into an issue where map-get() is not able to find the appropriate value if a quoted string is used for the parameter.

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

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

Is there anyway to change a quoted string into an "unquoted" string? I know what you're thinking, but unquote() doesn't work either:

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

I need a way to turn "white" into white in order to appropriately retrieve the correct value using the map-get() function.

UPDATE / SOLUTION

To whoever comes across this page and is looking for a solution, I ended up writing a function that will loop through a map and add quotes to it's keys:

@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 );
0 Answers
Related