2012-05-29 14 views
5

Vorrei memorizzare i parametri .less in un DB, un caso d'uso di esempio potrebbe essere il cambiamento di colore per ciascun utente in base alle sue preferenze.dinamicamente modificando i parametri senza punti

Immagino che il modo migliore per farlo sarebbe quello di analizzare tutti i file .less per ottenere i parametri, l'utente può quindi impostare i parametri che verrebbero salvati in un DB contro l'utente. Quando viene richiesto il minor numero di file, un sovraccarico del gestore può interrogare il DB per i parametri. Il gestore può quindi emettere il css con i parametri impostati.

Domande: - Come posso prendere un file .less e ottenere un elenco di parametri? - Come posso prendere un file .less una matrice di parametri (coppie di valori chiave) e produrre css?

Tutti utilizzano la struttura senza punti.

risposta

2

Se lo si fa in .Net allora dotless consente di specificare un plug-in che può essere un visitatore da eseguire prima della valutazione. Questo visita tutti i nodi dell'albero di sintassi meno astratto in modo da poter facilmente determinare tutte le variabili. Dotless consente inoltre di specificare brevetti che consentono di generare un file di variabili.

Ma quello è ott .. potreste voler pensare di memorizzare tutte le variabili nel database come "copia master" ed evitare di dover analizzare meno.

3

Potrebbe essere una risposta tardiva, ma abbiamo fatto qualcosa di simile al vostro requisito, in cui avevamo colori personalizzati basati sugli utenti memorizzati nel database.

La nostra soluzione è stata l'aggiunta di codice personalizzato per la fonte di errati privi di punti che è disponibile qui credo https://github.com/dotless/dotless

Così poi durante il parsing della stringa justs sostituito le parti che volevamo sostituire. Unico svantaggio di questo approccio è quello di ottenere build aggiornate della nuova DLL senza-puntini di cui abbiamo bisogno per far risalire la nostra fonte ogni volta.

EDIT Ecco un frammento di codice di esempio:

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

Avete un esempio di soluzione per favore? Ho bisogno esattamente della stessa cosa. – Curt

+0

Ho aggiunto qualche codice di esempio. Qui è dove calcoliamo diverse tonalità per le diverse parti dell'interfaccia utente in base al colore personalizzato dell'utente. – John

+0

Grazie John, molto apprezzato – Curt

Problemi correlati