динамическое изменение параметров без точек

Я хотел бы хранить параметры .less в БД, примером использования может быть изменение цвета для каждого пользователя в зависимости от его или ее предпочтений.

Я полагаю, что лучший способ сделать это - проанализировать все файлы .less, чтобы получить параметры, затем пользователь может установить параметры, которые будут сохранены в БД для пользователя. Когда запрашивается меньший файл, перегрузка обработчика может запросить параметры у БД. Затем обработчик может вывести css с установленными параметрами.

Вопросы: - Как взять файл .less и получить список параметров? - Как я могу взять файл .less массив параметров (пары ключ-значение) и вывести css?

Все с использованием безточечных рамок.


person John    schedule 29.05.2012    source источник


Ответы (2)


Возможно, ответ был поздним, но мы сделали что-то похожее на ваше требование, где у нас были пользовательские цвета на основе пользователей, хранящихся в базе данных.

Наше решение заключалось в добавлении пользовательского кода в исходный код без точки, который доступен здесь, я полагаю https://github.com/dotless/dotless

Итак, во время синтаксического анализа строка просто заменила части, которые мы хотели заменить. Единственным недостатком этого подхода является получение обновленных сборок новой dll без точек, нам нужно каждый раз повторно объединять наш источник.

ИЗМЕНИТЬ Вот пример фрагмента кода:

dotless.Core.Utils.HslColor hslcolor = dotless.Core.Utils.HslColor.FromRgbColor( new dotless.Core.Parser.Tree.Color( "187AAB" );
                hslcolor.Lightness = 0.93;
                var hexString = '#' + ( hslcolor.ToRgbColor().RGB.Select( i => ( ( int )i ).ToString( "X2" ) ).Aggregate( ( a, b ) => a + b ) ).ToLowerInvariant();
                var resultColor = hexString;
person John    schedule 06.06.2012
comment
У вас есть пример вашего решения, пожалуйста? Мне нужно точно такое же. - person Curt; 10.10.2014
comment
Я добавил пример кода. Здесь мы рассчитываем разные оттенки для разных частей пользовательского интерфейса на основе пользовательского цвета пользователя. - person John; 10.10.2014
comment
Спасибо, Джон, очень признателен - person Curt; 10.10.2014

Если вы делаете это в .Net, то точка без точек позволяет вам указать плагин, который может быть посетителем для запуска перед оценкой. Это посещает все узлы в менее абстрактном синтаксическом дереве, поэтому может легко определить все переменные. Dotless также позволяет указывать шаблоны, позволяющие создавать файл переменных.

Но это не так. Возможно, вы захотите подумать о сохранении всех переменных в базе данных в качестве «мастер-копии» и избежать необходимости анализировать меньше.

person Luke Page    schedule 29.05.2012