public static void ConvertToFiles(RuleIndex index, string outputPath, ProgressDialog progress) { if (progress != null) { progress.SetDescription("Converting elements..."); } int max = index.Elements.Count; int pos = 0; var sourceModules = new List<string>(); foreach (IGrouping<string, RuleElement> source in index.Elements.GroupBy(r => GetRealSource(r.Source))) { string sourceSegment = GetSafePathSegment(source.Key); string sourcePath = Path.Combine(outputPath, sourceSegment); if (!Directory.Exists(sourcePath)) { Directory.CreateDirectory(sourcePath); } var modules = new List<string>(); foreach (IGrouping<string, RuleElement> type in source.GroupBy(r => r.Type.ToString())) { string moduleName = type.Key; modules.Add(moduleName); string outFile = Path.Combine(sourcePath, moduleName + ".js"); using (TextWriter writer = File.CreateText(outFile)) { var converter = new Converter(index, writer); converter.WriteGlobalPrefix(); converter.WriteTypePrefix(type.Key); foreach (RuleElement element in type.OrderBy(e => e.Name.ToString())) { if (progress != null) { progress.SetProgress(pos++, max); } converter.WriteGenericRulesElement(element); } converter.WriteTypeSuffix(); converter.WriteGlobalSuffix(); converter.WriteWarnings(); } } string indexModule = Path.Combine(sourceSegment, "all"); sourceModules.Add(indexModule); string indexFile = Path.Combine(outputPath, indexModule + ".js"); using(TextWriter writer = File.CreateText(indexFile)) { var converter = new Converter(index, writer); converter.WriteIndexFile(modules); } } string masterIndex = Path.Combine(outputPath, "all.js"); using(TextWriter writer = File.CreateText(masterIndex)) { var converter = new Converter(index, writer); converter.WriteIndexFile(sourceModules); } }
public static string ConvertElement(RuleIndex index, RuleElement element) { var stringWriter = new StringWriter(); var converter = new Converter(index, stringWriter); converter.WriteGlobalPrefix(); converter.WriteTypePrefix(element.Type); converter.WriteGenericRulesElement(element); converter.WriteTypeSuffix(); converter.WriteGlobalSuffix(); return stringWriter.ToString(); }
public static void Convert(RuleIndex index, TextWriter writer, ProgressDialog progress) { var converter = new Converter(index, writer); if (progress != null) { progress.SetDescription("Converting elements..."); } int max = index.Elements.Count; int pos = 0; converter.WriteGlobalPrefix(); foreach (IGrouping<string, RuleElement> ebt in index.Elements.GroupBy(e => e.Type.ToString())) { converter.WriteTypePrefix(ebt.Key); foreach (RuleElement element in ebt.OrderBy(e => e.Name.ToString())) { if (progress != null) { progress.SetProgress(pos++, max); } converter.WriteGenericRulesElement(element); } converter.WriteTypeSuffix(); } converter.WriteGlobalSuffix(); converter.WriteWarnings(); }