2012-05-29 11 views
5

Chciałbym przechowywać .less parametry w DB, przykład przypadku użycia może być, że zmiany koloru dla każdego użytkownika na podstawie jego preferencji.dynamiczne zmienianie parametrów bezkształtnych

Myślę, że najlepszym sposobem, aby to zrobić, byłoby przeanalizowanie wszystkich plików .less, aby uzyskać parametry, użytkownik może następnie ustawić parametry, które będą zapisywać w DB przeciwko użytkownikowi. Gdy żądany jest mniej pliku, przeciążenie modułu obsługi może wywoływać zapytania DB dla parametrów. Program obsługi może następnie wyprowadzić css z ustawionymi parametrami.

Pytania: - W jaki sposób mogę pobrać plik .less i uzyskać listę parametrów? - Jak mogę pobrać .less plik tablicy parametrów (pary wartości klucza) i wyjściowy css?

Wszystkie przy użyciu struktury bez kropek.

Odpowiedz

2

Jeśli robisz to w .Net, to możesz wybrać wtyczkę, którą użytkownik może uruchomić przed oceną. To odwiedza wszystkie węzły w mniej abstrakcyjnym drzewie składni, dzięki czemu można łatwo określić wszystkie zmienne. Dotless pozwala również na określenie patamteres umożliwiając wygenerowanie pliku zmiennych.

Ale to ott .. możesz chcieć myśleć o przechowywaniu wszystkich zmiennych w bazie danych jako swojej "kopii głównej" i uniknąć konieczności analizowania mniejszych.

3

Może być późna odpowiedź, ale zrobiliśmy coś podobnego do twojego wymagania, w którym mieliśmy niestandardowe kolory na podstawie użytkowników przechowywanych w bazie danych.

Nasze rozwiązanie było dodanie niestandardowego kodu do źródła bez kropki, która jest dostępna tutaj wierzę https://github.com/dotless/dotless

Więc podczas parsowania to justs ciąg zastąpione części chcieliśmy zastąpić. Jedyną wadą tego podejścia jest uzyskanie zaktualizowanych wersji nowej biblioteki dumpowej, którą musimy za każdym razem odzyskać.

EDIT Oto przykładowy fragment kodu:

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; 
+0

Czy masz przykładowe rozwiązania proszę? Potrzebuję dokładnie tego samego. – Curt

+0

Dodałem przykładowy kod. Tutaj obliczamy różne odcienie dla różnych części interfejsu użytkownika na podstawie niestandardowego koloru użytkownika. – John

+0

Dziękuję John, bardzo doceniany – Curt

Powiązane problemy