El analizador de puntos atrapa las excepciones y las envía a un registrador. El fragmento de la fuente de dotless que realiza esta es LessEngine.TransformToCss
:
public string TransformToCss(string source, string fileName)
{
try
{
Ruleset ruleset = this.Parser.Parse(source, fileName);
Env env = new Env();
env.Compress = this.Compress;
Env env2 = env;
return ruleset.ToCSS(env2);
}
catch (ParserException exception)
{
this.Logger.Error(exception.Message);
}
return "";
}
Less.Parse
tiene una sobrecarga que toma un objeto DotlessConfiguration
, que proporciona varias propiedades que se pueden utilizar:
public class DotlessConfiguration
{
// Properties
public bool CacheEnabled { get; set; }
public Type LessSource { get; set; }
public Type Logger { get; set; }
public LogLevel LogLevel { get; set; }
public bool MinifyOutput { get; set; }
public int Optimization { get; set; }
public bool Web { get; set; }
}
Usted se dará cuenta de que el Logger
la propiedad es del tipo Type
. Cualquiera que sea el tipo que proporcione debe implementar dotless.Core.Loggers.ILogger
:
public interface ILogger
{
// Methods
void Debug(string message);
void Error(string message);
void Info(string message);
void Log(LogLevel level, string message);
void Warn(string message);
}
Como vimos en el primer fragmento, el método Error
en el registrador se llamará cuando se detecta un error durante el análisis.
Ahora, el único punto pegajoso de todo esto es cómo se instancia exactamente una instancia del tipo que implementa ILogger
. Internamente, dotLess usa un contenedor IoC que se procesa en la DLL. Después de las llamadas al método, parece que eventualmente llamará al Activator.CreateInstance
para crear una instancia de su ILogger.
Espero que esto sea al menos algo útil.
¿Has visto SquishIt? http://www.codethinked.com/post/2010/05/26/SquishIt-The-Friendly-ASPNET-JavaScript-and-CSS-Squisher.aspx –
@qstarin: Gracias, pero ya estoy usando combres (http: //combres.codeplex.com/) para fines de producción y los combres pueden hacer todo lo que hace squishit (más un poco más). Pero todavía necesito la respuesta a mi pregunta anterior para fines de desarrollo. La razón es que no me gusta trabajar con una descarga combinada incluida de todos mis archivos CSS, prefiero archivos separados. Y todo funciona bien, a excepción de los mensajes de error ... –
Tengo curiosidad, ¿qué características útiles ofrece combges que SquishIt no ofrece? Al revisar la documentación de Combres, parece que hacen las mismas tareas. Squish Sin embargo, incluye dotLess en su procesamiento. Es por eso que lo mencioné, porque no necesitaría una acción separada para realizar la compilación de dotLess. –