示例#1
0
        public static Item CreateThemeItem(string sourcePath, string distributionName, LessRegistry.KnownThemeInfo theme, string colorSchemeName, string sizeSchemeName)
        {
            var distribution = LessRegistry.CssDistributions[distributionName];
            var segments     = new List <CacheableSegment>();

            if (!distribution.CommonsInExternalFiles)
            {
                segments.Add(CreateCommonSegment(distributionName));
            }

            foreach (var moduleName in ResolveModules(distributionName))
            {
                var lessFiles = LessRegistry.GetThemeLessFiles(sourcePath, moduleName, theme.Name, colorSchemeName, sizeSchemeName);
                if (lessFiles == null)
                {
                    continue;
                }

                segments.Add(new CacheableSegment
                {
                    Key       = String.Join("|", moduleName, theme.Name, colorSchemeName, sizeSchemeName),
                    LessFiles = lessFiles
                });
            }

            return(new Item
            {
                CssFile = new ThemeCssFileInfo(distributionName, theme, colorSchemeName, sizeSchemeName),
                Segments = segments.ToArray()
            });
        }
示例#2
0
 static CacheableSegment CreateCommonSegment(string distributionName)
 {
     return(new CacheableSegment
     {
         Key = distributionName + "_common",
         LessFiles = LessRegistry.GetCommonLessFiles(ResolveModules(distributionName))
     });
 }
示例#3
0
        static void CreateThemes(string sourcePath, string version, string outputPath)
        {
            Directory.CreateDirectory(outputPath);

            var lessCache = new CompiledLessCache(sourcePath);

            lessCache.Inflate(PersistentCache.Instance);

            foreach (var distributionName in LessRegistry.CssDistributions.Keys)
            {
                var aggregate = LessAggregation.EnumerateAllItems(sourcePath, distributionName);
                foreach (var item in aggregate)
                {
                    using (var stream = File.Create(Path.Combine(outputPath, item.CssFile.GetFileName())))
                        using (var writer = new StreamWriter(stream))
                        {
                            writer.WriteLine(LicenseHeaderHelper.FormatForCssDistribution(distributionName, version));

                            foreach (var segment in item.Segments)
                            {
                                writer.WriteLine(lessCache.GetCssForSegment(segment.Key));
                            }
                        }
                }
            }

            var iconsSrcFolder  = LessRegistry.GetIconsPath(sourcePath);
            var iconsDestFolder = Path.Combine(outputPath, "icons");

            Directory.GetFiles(iconsSrcFolder, "*.*", SearchOption.AllDirectories).ToList()
            .ForEach(fileName =>
            {
                string relativePath = fileName.Remove(0, iconsSrcFolder.Length);
                string destFileName = iconsDestFolder + relativePath;
                if (!Directory.Exists(Path.GetDirectoryName(destFileName)))
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(destFileName));
                }

                File.Copy(fileName, destFileName, true);
            });
        }
示例#4
0
        static string[] ResolveModules(string distributionName)
        {
            var dist = LessRegistry.CssDistributions[distributionName];

            return(LessRegistry.ResolveRequiredModules(dist.Modules));
        }
示例#5
0
 bool IsDefaultSize()
 {
     return(LessRegistry.IsDefaultSizeScheme(_sizeSchemeName));
 }