2012-05-29 9 views
5

Me gustaría almacenar parámetros .less en un DB, un ejemplo de caso de uso podría ser que el color cambia para cada usuario según su preferencia.cambiando parámetros sin punto dinámicamente

Me imagino que la mejor manera de hacer esto sería analizar todos los archivos .less para obtener los parámetros, el usuario puede establecer los parámetros que guardarían en un DB contra el usuario. Cuando se solicita menos archivo, una sobrecarga del controlador puede consultar los parámetros en la base de datos. El controlador puede mostrar el css con los parámetros establecidos.

Preguntas: - ¿Cómo puedo tomar un archivo .less y obtener una lista de parámetros? - ¿Cómo puedo tomar un archivo .less una matriz de parámetros (pares de valores clave) y salida css?

Todo usando el marco sin puntos.

Respuesta

2

Si lo hace en .Net, dotless le permite especificar un complemento que puede ser un visitante para ejecutar antes de la evaluación. Esto visita todos los nodos en el árbol de sintaxis menos abstracto, por lo que podría determinar fácilmente todas las variables. Dotless también permite especificar patamteres lo que le permite generar un archivo de variables.

Pero eso es posible ... es posible que desee pensar en almacenar todas las variables en la base de datos como su "copia maestra" y evitar tener que analizar el menos.

3

Podría ser una respuesta tardía, pero hicimos algo similar a su requisito, donde teníamos colores personalizados basados ​​en usuarios almacenados en la base de datos.

Nuestra solución se agregó código personalizado a la fuente de dotless que está disponible aquí creo https://github.com/dotless/dotless

Así que durante el análisis se justs cadena reemplazado las partes que queríamos sustituir. El único inconveniente de este enfoque es obtener compilaciones actualizadas de la nueva DLL sin puntos que necesitamos para volver a fusionar nuestra fuente cada vez.

EDITAR Aquí hay un código de fragmento de ejemplo:

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

¿Tiene un ejemplo de su solución por favor? Necesito exactamente lo mismo. – Curt

+0

Agregué un código de muestra. Aquí es donde calculamos diferentes tonos para diferentes partes de la interfaz de usuario según el color personalizado del usuario. – John

+0

Gracias John, muy apreciado – Curt

Cuestiones relacionadas