public ItemCheckResult CheckItem(ParseItem item, ICssCheckerContext context) { UrlItem url = (UrlItem)item; if (!WESettings.GetBoolean(WESettings.Keys.ValidateEmbedImages) || !url.IsValid || url.UrlString.Text.Contains("base64,") || context == null) { return(ItemCheckResult.Continue); } string fileName = ImageQuickInfo.GetFileName(url.UrlString.Text); if (fileName.Contains("://")) { return(ItemCheckResult.Continue); } FileInfo file = new FileInfo(fileName); if (file.Exists && file.Length < (1024 * 3)) { Declaration dec = url.FindType <Declaration>(); if (dec != null && dec.PropertyName != null && dec.PropertyName.Text[0] != '*' && dec.PropertyName.Text[0] != '_') { string error = string.Format(Resources.PerformanceEmbedImageAsDataUri, file.Length); context.AddError(new SimpleErrorTag(url.UrlString, error)); } } return(ItemCheckResult.Continue); }
public IEnumerable <ITagSpan <IOutliningRegionTag> > GetTags(NormalizedSnapshotSpanCollection spans) { if (spans.Count == 0 || !EnsureInitialized()) { yield break; } var visitor = new CssItemCollector <UrlItem>(); _tree.StyleSheet.Accept(visitor); foreach (UrlItem url in visitor.Items.Where(u => u.UrlString != null && u.Start >= spans[0].Start)) { if (url.UrlString.Text.IndexOf("base64,") > -1 && buffer.CurrentSnapshot.Length >= url.UrlString.AfterEnd) { var image = ImageQuickInfo.CreateImage(url.UrlString.Text.Trim('"', '\'')); var span = new SnapshotSpan(new SnapshotPoint(buffer.CurrentSnapshot, url.UrlString.Start), url.UrlString.Length); var tag = new OutliningRegionTag(true, true, url.UrlString.Length + " characters", image); yield return(new TagSpan <IOutliningRegionTag>(span, tag)); } } }