Trình phân tích cú pháp dotLess bẫy Ngoại lệ và xuất chúng vào Trình ghi nhật ký. Đoạn từ nguồn dotLess rằng thực hiện này là 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
có quá tải mà phải mất một đối tượng DotlessConfiguration
, mà cung cấp một số tính năng mà bạn có thể sử dụng:
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; }
}
Bạn sẽ nhận thấy rằng các Logger
tài sản thuộc loại Type
. Dù loại mà bạn cung cấp phải thực hiện 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);
}
Như chúng ta đã thấy trong đoạn đầu tiên, phương pháp Error
trên logger sẽ được gọi khi một lỗi gặp phải trong quá trình phân tích cú pháp.
Bây giờ, một điểm dính của tất cả điều này là cách chính xác một thể hiện của loại thực hiện ILogger
được khởi tạo. Bên trong, dotLess sử dụng một thùng chứa IoC được đưa vào DLL. Theo sau các cuộc gọi phương thức, dường như nó sẽ gọi số Activator.CreateInstance
để khởi tạo ILogger của bạn.
Tôi hy vọng điều này có phần ít hữu ích.
Nguồn
2011-01-25 23:32:42
Bạn đã xem SquishIt chưa? http://www.codethinked.com/post/2010/05/26/SquishIt-The-Friendly-ASPNET-JavaScript-and-CSS-Squisher.aspx –
@qstarin: Cảm ơn, nhưng tôi đã sử dụng combres (http: //combres.codeplex.com/) cho mục đích sản xuất và combres có thể làm mọi thứ squishit (cộng thêm một chút nữa). Nhưng tôi vẫn cần câu trả lời cho câu hỏi của tôi ở trên cho mục đích phát triển. Lý do là tôi không thích làm việc với một tải xuống kết hợp bao gồm tất cả các tệp CSS của tôi, thay vào đó tôi thích các tệp riêng biệt. Và tất cả mọi thứ hoạt động tốt, ngoại trừ các thông báo lỗi ... –
Tôi tò mò, những tính năng hữu ích nào mà Combres cung cấp cho SquishIt không? Nhìn qua tài liệu của Combres, có vẻ như họ làm nhiều việc giống nhau. SquishIt, tuy nhiên, bao gồm dotLess vào chế biến của nó. Đó là lý do tại sao tôi đề cập đến nó, bởi vì bạn sẽ không cần một hành động riêng biệt để thực hiện việc biên dịch dotLess. –