Libsass: Warna bernama tidak berfungsi sebagai kunci peta

Dibuat pada 17 Nov 2014  ·  8Komentar  ·  Sumber: sass/libsass

Halo semua,

Saya mencoba menerapkan fungsi palet warna yang terlihat di artikel ini di sini.

http://erskinedesign.com/blog/friendlier-colour-names-sass-maps/

Ini adalah kode yang dihasilkan

// config
$_color-base-grey: rgb(229,231,234);
$palettes: (
    purple: (
        base:   rgb(42,40,80),
        light:  rgb(51,46,140),
        dark:   rgb(40,38,65)
    ),
    grey: (
        base:  $_color-base-grey,
        light: lighten($_color-base-grey, 10%),
        dark: darken($_color-base-grey, 10%)
    )
);

// Palette function,
<strong i="10">@function</strong> palette($palette, $tone: 'base') {
    <strong i="11">@return</strong> map-get(map-get($palettes, $palette), $tone);
}


// in module styles
a {
    color: palette(purple);
    &:hover {
        color: palette(purple, light);
    }
}

Semua tanda tampaknya menunjukkan ini berfungsi tetapi saya mendapatkan kesalahan ini.

Warning: /Users/xxx/xxx//styles.scss:35: argument `$map` of `map-get($map, $key)` must be a map

Saya menggunakan versi Grunt Sass - 0.16.1

Ada ide?

Terimakasih banyak

Bug - Confirmed Dev - Test Written

Komentar yang paling membantu

Tampaknya pikiran awal saya salah. Masalahnya adalah karena kunci peta adalah nama warna. Libsass memiliki beberapa masalah dalam hal penguraian string yang merupakan nama warna yaitu https://github.com/sass/libsass/issues/558

Kasus yang dikurangi: http://sassmeister.com/gist/d2be1def3619bd6c3a54

Semua 8 komentar

Dikonfirmasi! Saya mendapatkan kesalahan (JSON) berikut dari libsass, dengan API baru

{
        "status": 1,
        "path": "c:/temp/foo3.scss",
        "line": 18,
        "column": 13,
        "message": "argument `$map` of `map-get($map, $key)` must be a map\nBacktrace:\n\tc:/temp/foo3.scss:18, in function `map-get`\n\tc:/temp/foo3.scss:18, in function `palette`\n\tc:/temp/foo3.scss:24"
}

@mgreter , secara terpisah; di message dari JSON, nama file dan nomor baris tidak boleh diulang. :)

Saya menggali ini dan tampaknya karena map-get($palettes, $palette) mengembalikan nol.

Ada solusi belum?

Saya telah menambahkan ini ke tonggak 3.0.3 yang seharusnya membuatnya menjadi rilis berikutnya.

Tampaknya pikiran awal saya salah. Masalahnya adalah karena kunci peta adalah nama warna. Libsass memiliki beberapa masalah dalam hal penguraian string yang merupakan nama warna yaitu https://github.com/sass/libsass/issues/558

Kasus yang dikurangi: http://sassmeister.com/gist/d2be1def3619bd6c3a54

Sebagai peringatan, sepertinya pengguna mungkin mengalami masalah yang terkait dengan sass/sass#363 dalam warna itu karena kunci peta bukanlah string, tetapi warna.

Saya percaya ini agak benar. Saya pikir kunci peta diperlakukan sebagai warna daripada string, meskipun saya tidak yakin mengapa ini menjadi masalah.

Perlu dicatat bahwa kasus uji yang dikurangi berfungsi dengan baik di Ruby sass.

Masalahnya adalah kita memperlakukan purple di kunci peta sebagai string dan purple dalam panggilan fungsi sebagai color . Saat kita memanggil map-get kita meminta nilai yang terkait dengan warna ungu, tetapi disimpan di bawah string ungu. Ini dua hal yang tidak setara - http://sassmeister.com/Gist/77ae29d46ebecd0823ed

Saya punya perbaikan, saya akan mengirimkannya dalam beberapa jam.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat