Example #1
0
        public IEnumerable <HtmlTag> Build(AssetTagPlan plan)
        {
            // This will happen when a user tries to request an asset set
            // with no assets -- think optional sets
            if (!plan.Subjects.Any())
            {
                return(new HtmlTag[0]);
            }

            IEnumerable <MissingAssetTagSubject>     missingSubjects = plan.RemoveMissingAssets();
            Func <IAssetTagSubject, string, HtmlTag> func            = _builders[plan.MimeType];
            Func <IAssetTagSubject, HtmlTag>         builder         = s => {
                string url = _urls.UrlForAsset(s.Folder, s.Name);
                return(func(s, url));
            };

            IEnumerable <HtmlTag> missingTags = _missingHandler.BuildTagsAndRecord(missingSubjects);
            IEnumerable <HtmlTag> assetTags   = plan.Subjects.Select(builder);

            return(missingTags.Union(assetTags));
        }