public void SyncTranslation(string sitePath, string cultureCode) { Path.Get(sitePath) .Files("orchard.*.po", true) .Where(p => p.Parent().FileName.Equals("en-US", StringComparison.OrdinalIgnoreCase)) .ForEach(baselinePath => { var path = baselinePath.Parent().Parent().Combine(cultureCode, baselinePath.FileName); var translations = new List <StringEntry>(); if (path.Exists) { path.Open(inStream => ReadTranslations(inStream, translations), FileMode.Open, FileAccess.Read, FileShare.Read); } path.Parent().CreateDirectory(); path.Open(outStream => { var englishTranslations = new List <StringEntry>(); baselinePath.Open(baselineStream => ReadTranslations(baselineStream, englishTranslations), FileMode.Open, FileAccess.Read, FileShare.Read); using (var writer = new StreamWriter(outStream)) { foreach (var englishTranslation in englishTranslations) { var entry = englishTranslation; var translation = translations.Where( t => t.Context == entry.Context && t.Key == entry.Key).FirstOrDefault(); if (translation == default(StringEntry) || translation.Translation == null || translation.Translation.Equals(@"msgstr """"")) { writer.WriteLine("# Untranslated string"); } writer.WriteLine(entry.Context); writer.WriteLine(entry.Key); writer.WriteLine(entry.English); if (translation != null) { translation.Used = true; writer.WriteLine(translation.Translation); } else { writer.WriteLine("msgstr \"\""); } writer.WriteLine(); } foreach (var translation in translations.Where(t => !t.Used)) { writer.WriteLine("# Obsolete translation"); writer.WriteLine(translation.Context); writer.WriteLine(translation.Key); writer.WriteLine(translation.English); writer.WriteLine(translation.Translation); writer.WriteLine(); } } }, FileMode.Create, FileAccess.Write, FileShare.None); }); }
static void Main(string[] args) { var assemblyPath = typeof(Program).Assembly.Location; var assemblyDirectory = Path.Get(assemblyPath); _testPath = assemblyDirectory.Parent().Parent().Parent().Parent().Combine("Jint.Tests.Ecma"); _suitePath = _testPath; if (!_suitePath.Exists) { _suitePath.CreateDirectory(); } _classTemplate = File.ReadAllText("ClassTemplate.txt"); _methodTemplate = File.ReadAllText("MethodTemplate.txt"); foreach (var url in suites) { var content = new WebClient().DownloadString(url); dynamic suite = JsonConvert.DeserializeObject(content); var collection = suite.testsCollection; var tests = collection.tests; Console.Write("."); foreach (var test in tests) { byte[] data = Convert.FromBase64String((string)test.code); string decodedString = Encoding.UTF8.GetString(data); RenderTest( decodedString, (string)test.commentary, (string)test.description, (string)test.path, test.negative != null ); } } foreach (var category in categorizedTests.Keys) { var file = _testPath.Combine("Ecma").Combine(category + ".cs"); var methods = new StringBuilder(); foreach (var test in categorizedTests[category]) { methods.Append(test.Test); methods.AppendLine(); } var fileContent = _classTemplate; fileContent = fileContent.Replace("$$Methods$$", methods.ToString()); fileContent = fileContent.Replace("$$ClassName$$", GetClassName(category)); File.WriteAllText(file.FullPath, fileContent); } }
public byte[] ExtractDefaultTranslation(string sitePath) { var site = Path.Get(sitePath); var corePoPath = site.Combine( "Core", "App_Data", "Localization", "en-US", "orchard.core.po"); var rootPoPath = site.Combine( "App_Data", "Localization", "en-US", "orchard.root.po"); var zipFiles = new Dictionary <Path, StringBuilder>(); // Extract resources for module manifests site.Files("module.txt", true) .Read((content, path) => { var moduleName = path.Parent().FileName; var poPath = path.MakeRelativeTo(sitePath).Tokens[0].Equals("core", StringComparison.OrdinalIgnoreCase) ? corePoPath : GetModuleLocalizationPath(site, moduleName); ExtractPoFromManifest(zipFiles, poPath, content, path, site); }); // Extract resources for theme manifests site.Files("theme.txt", true) .Read((content, path) => { var themeName = path.Parent().FileName; var poPath = GetThemeLocalizationPath(site, themeName); ExtractPoFromManifest(zipFiles, poPath, content, path, site); }); // Extract resources from views and cs files, for the web site // as well as for the framework and Azure projects. site.Add(site.Parent().Combine("Orchard")) .Add(site.Parent().Combine("Orchard.Azure")) .ForEach(p => p.Files("*", true) .WhereExtensionIs(".cshtml", ".aspx", ".ascx", ".cs") .Grep( ResourceStringExpression, (path, match, contents) => { var str = match.Groups[1].ToString(); DispatchResourceString(zipFiles, corePoPath, rootPoPath, site, path, p, contents, str); } ) .Grep( PluralStringExpression, (path, match, contents) => { var str = match.Groups[1].ToString(); DispatchResourceString(zipFiles, corePoPath, rootPoPath, site, path, p, contents, str); str = match.Groups[6].ToString(); DispatchResourceString(zipFiles, corePoPath, rootPoPath, site, path, p, contents, str); } )); return(ZipExtensions.Zip( new Path(zipFiles.Keys.Select(p => p.MakeRelativeTo(site))), p => Encoding.UTF8.GetBytes(zipFiles[site.Combine(p)].ToString()))); }
public byte[] PackageTranslations(string cultureCode, string sitePath) { var site = Path.Get(sitePath); var translationFiles = site .Files("orchard.*.po", true) .Where(p => p.Parent().FileName.Equals(cultureCode, StringComparison.OrdinalIgnoreCase)) .MakeRelativeTo(site); return(ZipExtensions.Zip( translationFiles, p => site.Combine(p).ReadBytes())); }
public byte[] ExtractDefaultTranslation(string sitePath, IEnumerable <string> extensionNames) { if (extensionNames == null || extensionNames.Count() == 0) { return(ExtractDefaultTranslation(sitePath)); } var site = Path.Get(sitePath); var zipFiles = new Dictionary <Path, StringBuilder>(); // Extract resources for module manifests site.Files("module.txt", true) .Where(p => extensionNames.Contains(p.Parent().FileName)) .Read((content, path) => { var moduleName = path.Parent().FileName; var poPath = GetModuleLocalizationPath(site, moduleName); ExtractPoFromManifest(zipFiles, poPath, content, path, site); }); // Extract resources for theme manifests site.Files("theme.txt", true) .Where(p => extensionNames.Contains(p.Parent().FileName)) .Read((content, path) => { var themeName = path.Parent().FileName; var poPath = GetThemeLocalizationPath(site, themeName); ExtractPoFromManifest(zipFiles, poPath, content, path, site); }); // Extract resources from views and cs files site.Files("*", true) .WhereExtensionIs(".cshtml", ".aspx", ".ascx", ".cs") .Where(p => { var tokens = p.MakeRelativeTo(site).Tokens; return(new[] { "themes", "modules" }.Contains(tokens[0]) && extensionNames.Contains(tokens[1])); }) .Grep( ResourceStringExpression, (path, match, contents) => { var str = match.Groups[1].ToString(); DispatchResourceString(zipFiles, null, null, site, path, site, contents, str); } ) .Grep( PluralStringExpression, (path, match, contents) => { var str = match.Groups[1].ToString(); DispatchResourceString(zipFiles, null, null, site, path, site, contents, str); str = match.Groups[6].ToString(); DispatchResourceString(zipFiles, null, null, site, path, site, contents, str); } ); return(ZipExtensions.Zip( new Path(zipFiles.Keys.Select(p => p.MakeRelativeTo(site))), p => Encoding.UTF8.GetBytes(zipFiles[site.Combine(p)].ToString()))); }
private static Path GetResourceCache(Statement statement, Path cache) { var name = Path.Get(statement.Subject.Uri).FileName.ToLower(); var extension = Path.Get(statement.Object.Uri).Extension.ToLower(); if (extension == "" || extension.StartsWith("._")) { extension = ".html"; } return(cache.Combine(name + extension)); }
public byte[] PackageTranslations(string cultureCode, string sitePath, IEnumerable <string> extensionNames) { var site = Path.Get(sitePath); var translationFiles = site .Files("orchard.*.po", true) .Where(p => p.Parent().FileName.Equals(cultureCode, StringComparison.OrdinalIgnoreCase) && (extensionNames.Contains(p.MakeRelativeTo(site.Combine("Modules")).Tokens[0]) || extensionNames.Contains(p.MakeRelativeTo(site.Combine("Themes")).Tokens[0]))) .MakeRelativeTo(site); return(ZipExtensions.Zip( translationFiles, p => site.Combine(p).ReadBytes())); }
private static string GetEntityName(MemoryStore store, Uri uri) { var name = store.Select(new Statement(uri.AbsoluteUri, foaf + "name", null)) .Select(statement => statement.Object) .Cast <Literal>() .Select(literal => literal.Value) .FirstOrDefault(); if (name == null) { name = Path.Get(uri.AbsolutePath).FileName; } return(name); }
public void InstallTranslation(byte[] zippedTranslation, string sitePath) { var siteRoot = Path.Get(sitePath); ZipExtensions.Unzip(zippedTranslation, (path, contents) => { if (path.Extension == ".po") { var tokens = path.Tokens; var destPath = siteRoot.Combine(tokens); // If a translation file is for a module or a theme, only install it // if said module or theme exists already. Otherwise, skip. if ((!tokens[0].Equals("modules", StringComparison.OrdinalIgnoreCase) && !tokens[0].Equals("themes", StringComparison.OrdinalIgnoreCase)) || siteRoot.Combine(tokens[0], tokens[1]).IsDirectory) { destPath.Write(contents); } } }); }
public byte[] ExtractDefaultTranslation(string sitePath, IEnumerable <string> extensionNames) { if (extensionNames == null || !extensionNames.Any()) { return(ExtractDefaultTranslation(sitePath)); } var site = Path.Get(sitePath); var zipFiles = new Dictionary <Path, StringEntryBuilder>(); // Extract resources for module manifests site.Files("module.txt", true) .Where(p => extensionNames.Contains(p.Parent().FileName, StringComparer.OrdinalIgnoreCase)) .Read((content, path) => { var moduleName = path.Parent().FileName; var poPath = GetModuleLocalizationPath(site, moduleName); ExtractPoFromManifest(zipFiles, poPath, content, path, site); }); // Extract resources for theme manifests site.Files("theme.txt", true) .Where(p => extensionNames.Contains(p.Parent().FileName, StringComparer.OrdinalIgnoreCase)) .Read((content, path) => { var themeName = path.Parent().FileName; var poPath = GetThemeLocalizationPath(site, themeName); ExtractPoFromManifest(zipFiles, poPath, content, path, site); }); // Extract resources from views and cs files site.Files("*", true) .WhereExtensionIs(".cshtml", ".aspx", ".ascx", ".cs") .Where(p => { var tokens = p.MakeRelativeTo(site).Tokens; return(new[] { "themes", "modules" }.Contains(tokens[0], StringComparer.OrdinalIgnoreCase) && extensionNames.Contains(tokens[1], StringComparer.OrdinalIgnoreCase)); }) .Read((contents, path) => ExtractResourcesFromCode(contents, null, null, site, path, zipFiles)); return(ZipExtensions.Zip( new Path(zipFiles.Keys.Select(p => p.MakeRelativeTo(site))), p => Encoding.UTF8.GetBytes(zipFiles[site.Combine(p)].ToString()))); }
public void Execute(IJobExecutionContext context) { if (Singleton.Instance.SourceMountpoints == null || Singleton.Instance.SourceMountpoints.Count == 0) { return; } try { foreach (var sourceMount in Singleton.Instance.SourceMountpoints) { var construct = new DriveConstruct(sourceMount.MountPoint); Win32Api.USN_JOURNAL_DATA newUsnState; List <Win32Api.UsnEntry> usnEntries; NtfsUsnJournal journal = new NtfsUsnJournal(construct.DriveLetter); var drivePath = Path.Get(construct.DriveLetter); logger.Trace("Polling for changes from " + sourceMount.CurrentUSNLocation); var rtn = journal.GetUsnJournalEntries(construct.CurrentJournalData, reasonMask, out usnEntries, out newUsnState, OverrideLastUsn: sourceMount.CurrentUSNLocation); if (rtn == NtfsUsnJournal.UsnJournalReturnCode.USN_JOURNAL_SUCCESS) { List <RawUSNEntry> entries = new List <RawUSNEntry>(); if (usnEntries.Any()) { logger.Debug("USN returned with " + usnEntries.Count + " entries"); logger.Trace($"fsutil usn readjournal {construct.Volume} startusn={sourceMount.CurrentUSNLocation}"); } List <USNChangeRange> changeRange = new List <USNChangeRange>(); foreach (var frn in usnEntries.Select(e => e.FileReferenceNumber).Distinct()) { var entriesForFile = usnEntries.Where(f => f.FileReferenceNumber == frn).ToList(); if (entriesForFile.All(e => e.SourceInfo == Win32Api.UsnEntry.USNJournalSourceInfo.DataManagement || e.SourceInfo == Win32Api.UsnEntry.USNJournalSourceInfo.ReplicationManagement)) { continue; } var actualPath = GetActualPath(journal, entriesForFile.FirstOrDefault()); if (actualPath == "Unavailable" || String.IsNullOrWhiteSpace(actualPath)) { continue; } if (sourceMount.IgnoreList != null && sourceMount.IgnoreList.Any() && sourceMount.IgnoreList.Any(ignore => new Regex(ignore).IsMatch(actualPath))) { continue; } USNChangeRange range = new USNChangeRange { FRN = frn, Min = entriesForFile.Min(e => e.TimeStamp), Max = entriesForFile.Max(e => e.TimeStamp), Closed = entriesForFile.OrderBy(f => f.TimeStamp).LastOrDefault() != null ? (entriesForFile.OrderBy(f => f.TimeStamp).LastOrDefault().Reason & Win32Api.USN_REASON_CLOSE) != 0 : false, RenameFrom = entriesForFile.FirstOrDefault(e => (e.Reason & Win32Api.USN_REASON_RENAME_OLD_NAME) != 0), Entry = entriesForFile.OrderBy(f => f.TimeStamp).LastOrDefault() }; bool alreadyCopiedItem = entriesForFile.GroupBy(r => r.ParentFileReferenceNumber).Select(r => r.First()).Distinct().Any(pfrn => GetActualPath(journal, pfrn).Contains("\\.proximaTemp\\")); if (alreadyCopiedItem || ShouldIgnore(actualPath, drivePath, range, journal)) { continue; } changeRange.Add(range); } foreach (var item in changeRange) { var actualPath = GetActualPath(journal, item.Entry); if (actualPath == "Unavailable") { continue; } string relativePath; try { Uri drivePathUri = new Uri(drivePath.FullPath, UriKind.Absolute); Uri actualPathUri = new Uri(actualPath, UriKind.Absolute); relativePath = Uri.UnescapeDataString(drivePathUri.MakeRelativeUri(actualPathUri).ToString()); } catch (Exception e) { relativePath = "#ERROR#"; } if (relativePath == "#ERROR#" || relativePath.StartsWith("System Volume Information")) { continue; } string renameFromRelativePath = ""; if (item.RenameFrom != null) { string renameFromPath = GetActualPath(journal, ((Win32Api.UsnEntry)item.RenameFrom)); try { Uri drivePathUri = new Uri(drivePath.FullPath, UriKind.Absolute); Uri actualPathUri = new Uri(actualPath, UriKind.Absolute); renameFromRelativePath = Uri.UnescapeDataString(drivePathUri.MakeRelativeUri(actualPathUri).ToString()); } catch (Exception e) { renameFromRelativePath = ""; } } if (!String.IsNullOrWhiteSpace(renameFromRelativePath) && renameFromRelativePath.StartsWith(".proximaTemp")) { continue; } var dbEntry = new RawUSNEntry(); PopulateFlags(dbEntry, item.Entry); dbEntry.Path = actualPath; dbEntry.RelativePath = relativePath; dbEntry.File = item.Entry.IsFile; dbEntry.Directory = item.Entry.IsFolder; dbEntry.FRN = item.Entry.FileReferenceNumber; dbEntry.PFRN = item.Entry.ParentFileReferenceNumber; dbEntry.RecordLength = item.Entry.RecordLength; dbEntry.USN = item.Entry.USN; dbEntry.Mountpoint = sourceMount; dbEntry.TimeStamp = item.Entry.TimeStamp.Truncate(TimeSpan.TicksPerMillisecond); dbEntry.SourceInfo = item.Entry.SourceInfo.ToString(); dbEntry.ChangeRange = item; if (actualPath != null && actualPath != "Unavailable" && actualPath.ToLowerInvariant().StartsWith($"{journal.MountPoint.TrimEnd('\\')}\\$".ToLowerInvariant())) { dbEntry.SystemFile = true; } if (item.RenameFrom != null) { dbEntry.RenameFromPath = GetActualPath(journal, ((Win32Api.UsnEntry)item.RenameFrom)); if (!string.IsNullOrWhiteSpace(dbEntry.RenameFromPath) && dbEntry.RenameFromPath != "Unavailable") { dbEntry.RenameFromRelativePath = new Regex(Regex.Escape(drivePath.FullPath), RegexOptions.IgnoreCase).Replace(dbEntry.RenameFromPath, "", 1); } } entries.Add(dbEntry); } if (changeRange.Any()) { Singleton.Instance.Repository.Add <USNChangeRange>(changeRange); Singleton.Instance.Repository.Add <RawUSNEntry>(entries); var performRollup = RollupService.PerformRollup(entries, sourceMount, Singleton.Instance.Repository); logger.Info(string.Format("[{3}] Adding [{2}CHANGE/{1}USN/{0}File]", performRollup.Count, entries.Count, changeRange.Count, sourceMount.Id)); foreach (var fileAction in performRollup) { // logger.Trace("ADD: " + fileAction.RelativePath + ", USN:" + fileAction.USN); } Singleton.Instance.Repository.Add <FileAction>(performRollup); //performRollup.ForEach(f=> logger.Debug("Added " + f.Id)); } construct.CurrentJournalData = newUsnState; sourceMount.CurrentUSNLocation = newUsnState.NextUsn; sourceMount.Volume = construct.Volume; Singleton.Instance.Repository.Update(sourceMount); } else { logger.Error("Error on Monitor - " + rtn.ToString()); throw new UsnJournalException(rtn); } } } catch (Exception e) { logger.Error(e, "Error in USNJournalMonitor"); } }
public void SyncTranslation(string sitePath, string cultureCode) { Path.Get(sitePath) .Files("orchard.*.po", true) .Where(p => p.Parent().FileName.Equals("en-US", StringComparison.OrdinalIgnoreCase)) .ForEach(baselinePath => { var path = baselinePath.Parent().Parent().Combine(cultureCode, baselinePath.FileName); var translations = new List <StringEntry>(); if (path.Exists) { path.Open(inStream => ReadTranslations(inStream, translations), FileMode.Open, FileAccess.Read, FileShare.Read); } path.Parent().CreateDirectory(); path.Open(outStream => { var englishTranslations = new List <StringEntry>(); baselinePath.Open(baselineStream => ReadTranslations(baselineStream, englishTranslations), FileMode.Open, FileAccess.Read, FileShare.Read); using (var writer = new StreamWriter(outStream)) { foreach (var englishTranslation in englishTranslations) { var entry = englishTranslation; var translation = translations.FirstOrDefault(t => t.UniqueKey == entry.UniqueKey); if (translation == null) { translation = StringEntry.Parse(entry.ToString()); translation.Translation = @"msgstr """""; } else { if (translation.Comment != null && translation.Comment.Contains("# Untranslated string")) { translation.Comment = translation.Comment.Replace("# Untranslated string", string.Empty); //remove previous untraslated comment if any } translation.Used = true; } translation.Scope = entry.Scope; //fix case translation.Context = entry.Context; //fix case if (translation.Translation.Equals(@"msgstr """"")) { var findAny = translations.Where(t => t.Id == entry.Id); var find = findAny.FirstOrDefault(any => any.Translation != @"msgstr """"" && any.Translation != translation.Translation); if (find != null) { //picks new scopes from translated one and states it on comment translation.Translation = find.Translation; translation.Comment = "# Picked from: " + find.Scope; } else { translation.Comment = "# Untranslated string"; } } writer.WriteLine(translation); } foreach (var translation in translations.Where(t => !t.Used)) { translation.Comment = "# Obsolete translation"; writer.WriteLine(translation); } } }, FileMode.Create, FileAccess.Write, FileShare.None); }); }
/// Constructor public BuildArguments(String projectRoot) { this.ProjectRoot = Path.Get(Path.Get(projectRoot).FullPath); this.MainConfigFile = this.ProjectRoot.File("forkdown.main.config.yaml"); this.LabelsConfigFile = this.ProjectRoot.File("forkdown.main.labels.yaml"); }
public static void Main(string[] args) { var source = Path.Get(args.Length > 0 ? args[0] : @"\\ottawa\c$\inetpub\apex-net.it\Apex-net DOC\public"); var dest = Path.Get(args.Length > 1 ? args[1] : @"H:\MyWorks\C#\Screwturn2markdown\SourcePages"); source.Combine("Pages") .Files(p => !RevisionEx.IsMatch(p.FileName)) .Read((content, path) => { Console.WriteLine(path.FileName); // Skipping first four lines (metadata) var reader = new StringReader(content); reader.ReadLine(); reader.ReadLine(); reader.ReadLine(); reader.ReadLine(); content = reader.ReadToEnd(); if (content == null) { return; } // OK, using regular expressions, not ideal, I know, but I need to get that done. Shame on me. No perf pressure here, also. // Do not change the order of these operations: it is meaningful. var nowikiSections = new List <string>(); var literalSections = new List <string>(); content = content .Apply(Literal, m => { literalSections.Add(m.Groups[0].Value); return("<literal:" + (literalSections.Count - 1) + "/>"); }) .Apply(NoWiki, m => { nowikiSections.Add(m.Groups[1].Value.EscapeForMarkdown()); return("<nowiki:" + (nowikiSections.Count - 1) + "/>"); }) .Apply(Bold, "**$1**") .Apply(Italic, "_$1_") // must be after bold. .Apply(Underlined, "<span style=\"text-decoration:underline\">$1</span>") .Apply(Separator, "- - -") .Apply(Strike, "$1<del>$2</del>") .ConvertEnumerations() // Must be before headers .ConvertTables() .RemoveToc() .Apply(H6, "###### $1") .Apply(H5, "##### $1") .Apply(H4, "#### $1") .Apply(H3, "### $1") .Apply(H2, "## $1") .Apply(H1, "# $1") .Apply(Box, "> $1") .Replace("{br}", " \r\n") .ConvertUp() .ConvertUpRelative() .Apply(Anchor, "") .Apply(Img, "![$2]($3)") // must be before link .Apply(Link, StringHelpers.ConvertLink) .Apply(NoWikiRestore, m => nowikiSections[int.Parse(m.Groups[1].Value)]) .Apply(LiteralRestore, m => literalSections[int.Parse(m.Groups[1].Value)]) .Apply(InlineCode, "`$1`") .Apply(CodeBlock, StringHelpers.FormatMarkdownCodeSample) .Replace("<nowiki>", "") .Replace("</nowiki>", "") .Replace('’', '\'') .Replace("®", "®") .Replace("©", "©") .Replace("™", "™") .Replace("–", "-") .Replace("»", "»") .Replace("«", "«"); dest.Combine(path.ChangeExtension(".md").FileName) .Write(content); }); }
public IEnumerable <StringEntry> ExtractDefaultTranslation(string sitePath, string targetSitePath) { var result = new List <StringEntry>(); //var site = Path.Get(sitePath); //var baseSite = String.IsNullOrEmpty(resourceType) ? site : Path.Get(Server.MapPath("~/")); var baseSite = Path.Get(sitePath); var site = !String.IsNullOrEmpty(targetSitePath) ? Path.Get(targetSitePath) : baseSite; string corePoPath = System.IO.Path.Combine( "Core", "App_Data", "Localization", "{0}", "orchard.core.po"); var rootPoPath = System.IO.Path.Combine( "App_Data", "Localization", "{0}", "orchard.root.po"); // Extract resources for module manifests site.Files("module.txt", true) .Read((content, path) => { var moduleName = path.Parent().FileName; var poPath = path.MakeRelativeTo(sitePath).Tokens[0].Equals("core", StringComparison.OrdinalIgnoreCase) ? corePoPath : GetModuleLocalizationPath(site, moduleName); result.AddRange(ExtractPoFromManifest(poPath, content, path, site)); }); // Extract resources for theme manifests site.Files("theme.txt", true) .Read((content, path) => { var themeName = path.Parent().FileName; var poPath = GetThemeLocalizationPath(site, themeName); result.AddRange(ExtractPoFromManifest(poPath, content, path, site)); }); // Extract resources from views and cs files, for the web site // as well as for the framework and Azure projects. if (site.Parent().Combine("Orchard").Exists) { site = site.Add(site.Parent().Combine("Orchard")); } if (site.Parent().Combine("Orchard.Azure").Exists) { site = site.Add(site.Parent().Combine("Orchard.Azure")); } site.Where(p => !p.FullPath.Contains("_Backup")) .ForEach(p => p.Files("*", true) .WhereExtensionIs(".cshtml", ".aspx", ".ascx", ".cs") .Grep( ResourceStringExpression, (path, match, contents) => { var str = Unescape(match.Groups[1].ToString()).Trim('"'); result.AddRange(DispatchResourceString(corePoPath, rootPoPath, site, path, baseSite, contents, str)); } ) .Grep( PluralStringExpression, (path, match, contents) => { var str = Unescape(match.Groups[1].ToString()).Trim('"'); result.AddRange(DispatchResourceString(corePoPath, rootPoPath, site, path, baseSite, contents, str)); str = Unescape(match.Groups[6].ToString()).Trim('"'); result.AddRange(DispatchResourceString(corePoPath, rootPoPath, site, path, baseSite, contents, str)); } )); return(result); }
static void Main(string[] args) { var root = Path.Get("../.."); var dbpedia = root.Combine("dbpedia.xml"); var dbpedia2 = root.Combine("dbpedia2.xml"); var cache = root.Combine("Downloads"); MemoryStore store; //if (!dbpedia2.Exists) if (true) { if (!dbpedia.Exists) { ExecuteQuery(dbpedia); } store = LoadResults(dbpedia); FilterDuplicates(store); MergePredicates(store, mys + "birth", dbo + "birthPlace", dbo + "birthYear"); MergePredicates(store, mys + "death", dbo + "deathPlace", dbo + "deathYear"); ParseFiles(store, cache); SaveResults(store, dbpedia2); } else { store = LoadResults(dbpedia2); } if (!cache.Exists) { cache.CreateDirectories(); } //using (var client = new WebClient()) //{ // foreach (var predicate in new[] { foaf + "page", dbo + "thumbnail" }) // foreach (var result in store.Select(new Statement(null, predicate, null)).OrderBy(result => result.Subject.Uri)) // DownloadResource(client, result, cache); //} Console.WriteLine("Creating edges..."); var edges = CreateEdges(store, cache).ToArray(); Console.WriteLine("Computing components..."); var map = new Dictionary <Vertex, int>(); //edges.ToUndirectedGraph<Vertex, Edge>().ConnectedComponents(map); edges.ToBidirectionalGraph <Vertex, Edge>().WeaklyConnectedComponents(map); Console.WriteLine("Building subgraphs..."); var subgraphs = map .GroupBy(pair => pair.Value) .OrderByDescending(group => group.Count()) .Take(10) //.Select(group => group.Select(pair => pair.Key).ToArray()) .Select(group => GetGroupEdges(group.Select(pair => pair.Key), edges).ToBidirectionalGraph <Vertex, Edge>()) .ToArray(); Console.WriteLine("Cleaning subgraphs..."); foreach (var graph in subgraphs) { graph.RemoveVertexIf(vertex => vertex is LiteralVertex && graph.OutDegree(vertex) + graph.InDegree(vertex) < 2); } foreach (var group in subgraphs) { Console.WriteLine("Count = {0}", group.VertexCount); //foreach (var vertex in group.Vertices) // Console.WriteLine("\t{0}", vertex); } Console.WriteLine("Initializing viewer..."); var viewer = new Viewer(); viewer.DataContext = subgraphs; viewer.ShowDialog(); }