Можно ли использовать шаблонную логику Jinja2 в Sass / SCSS с Pelican? - PullRequest
0 голосов
/ 29 марта 2019

Первый вопрос - спасибо за (мягко) исправление моих ошибок.:)

Я пытаюсь применить шаблонную логику Pelican Jinja2 (используя переменные, объявленные в файле pelicanconf.py) к моим файлам SCSS, но она не работает, потому что файлы SCSS компилируются до того, как Pelican имеет шанс прикоснутьсяих, когда он генерирует сайт.

# pelicanconf.py

THEME_COLORS = [
                {
                    'name': '$color-white',
                    'hex' : '#FFFFFF'
                },
                {
                    'name': '$color-darkgray',
                    'hex' : '#484A47'
                },
                {
                    'name': '$color-lightgray',
                    'hex' : '#D1D5DE'
                },
                {
                    'name': '$color-teal',
                    'hex' : '#5C6D70'
                },
                {
                    'name': '$color-rust',
                    'hex' : '#A37774'
                },
                {
                    'name': '$color-red',
                    'hex' : '#E88873'
                }
]
// _variables.scss

{% if THEME_COLORS %}
    {% for color in THEME_COLORS %}

    {% for color_name, color_hex in color.items() %}

      {% if color_name|lower|truncate(length=1, killwords=True, end='') == '$' 
        and color_hex|lower|truncate(length=1, killwords=True, end='') == '#' %}

        {% set $color_name = color_name %}
        {% set $color_val = color_hex %}

        {{ $color_name }} : {{ $color_val }};

        {% endif %}

    {% endfor %}

    {% endfor %}
{% endif %}

Когда я пытаюсь скомпилировать SCSS, я (как и ожидалось) получаю следующее сообщение об ошибке, потому что логика Пеликана не была применена:

{
  "status": 1,
  "file": "path/to/_variables.scss",
  "line": 7,
  "column": 3,
  "message": "Invalid CSS after \"*/\": expected 1 selector or at-rule, was \"{% if THEME_COLORS \"",
  "formatted": "Error: Invalid CSS after \"*/\": expected 1 selector or at-rule, was \"{% if THEME_COLORS \"\n        on line 7 of path/to/_variables.scss\n        from line 18 of themes/martian/static/css/sass/main.scss\n>> */\r\n   --^\n"
}

I 'Я надеюсь получить что-то вроде:

// _variables.scss

$color-white           : #FFFFFF;
$color-darkgray        : #484A47;
$color-lightgray       : #D1D5DE;
$color-teal            : #5C6D70;
$color-rust            : #A37774;
$color-red             : #E88873;

Есть ли способ сделать это, или это просто плохая идея?

...