async Task ExportStringHistory(SOString str, string dir)
        {
            string       path = Path.Combine(dir, str.Key.Replace('|', '_') + ".htm");
            StreamWriter wr   = new StreamWriter(path, false, Encoding.UTF8);

            using (wr)
            {
                await HistoryToHTML(str, wr);
            }
        }
        async Task HistoryToText(SOString str, TextWriter target)
        {
            var suggestions = await svc.GetSuggestionsByString(str.Id);

            await target.WriteLineAsync("Key: " + str.Key);

            await target.WriteLineAsync("Created: " + str.CreationDate.ToString());

            await target.WriteLineAsync("Original string: ");

            await target.WriteLineAsync(str.OriginalString);

            if (str.HasTranslation)
            {
                await target.WriteLineAsync("Current translation: ");

                await target.WriteLineAsync(str.Translation);
            }
            await target.WriteLineAsync();

            if (suggestions.Length == 0)
            {
                await target.WriteLineAsync("(No suggestions found)");
            }

            for (int i = 0; i < suggestions.Length; i++)
            {
                await target.WriteLineAsync("Suggestion #" + (i + 1).ToString() + ": ");

                await target.WriteLineAsync(suggestions[i].Suggestion);

                await target.WriteLineAsync("Author: " + suggestions[i].CreatedByName + " (" + suggestions[i].CreatedById.ToString() + ")");

                await target.WriteLineAsync("State: " + suggestions[i].State.ToString());

                await target.WriteLineAsync();

                for (int j = 0; j < suggestions[i].Histories.Length; j++)
                {
                    var hist = suggestions[i].Histories[j];
                    await target.WriteAsync(hist.CreationDate.ToString().PadRight(20, ' '));

                    await target.WriteAsync(hist.UserName);

                    await target.WriteAsync(" [ID:");

                    await target.WriteAsync(hist.UserId.ToString());

                    await target.WriteAsync("] ");

                    await target.WriteAsync(hist.HistoryType.ToString());

                    if (!String.IsNullOrEmpty(hist.Comment))
                    {
                        await target.WriteAsync(" (");

                        await target.WriteAsync(hist.Comment);

                        await target.WriteAsync(')');
                    }

                    await target.WriteLineAsync();
                }

                await target.WriteLineAsync();
            }
        }
        async Task HistoryToHTML(SOString str, TextWriter target)
        {
            await target.WriteLineAsync("<html><head><title>String translation history - Traducir Lab</title>");

            await target.WriteLineAsync("</head><body><h1>String translation history</h1>");

            var suggestions = await svc.GetSuggestionsByString(str.Id);

            await target.WriteAsync("<p>");

            await target.WriteAsync("<b>Key:</b> ");

            await target.WriteAsync("<a href=\"https://ru.traducir.win/filters?key=" + WebUtility.UrlEncode(str.Key));

            await target.WriteAsync("\">" + str.Key + "</a><br/>");

            await target.WriteAsync("<b>Created:</b> " + str.CreationDate.ToString() + "</p>");

            await target.WriteLineAsync("<p><b>Original string:</b> <br/>");

            await target.WriteLineAsync(WebUtility.HtmlEncode(str.OriginalString));

            await target.WriteLineAsync("</p>");

            if (str.HasTranslation)
            {
                await target.WriteLineAsync("<p><b>Current translation:</b> <br/>");

                await target.WriteLineAsync(WebUtility.HtmlEncode(str.Translation));

                await target.WriteLineAsync("</p>");
            }
            await target.WriteLineAsync();

            if (suggestions.Length == 0)
            {
                await target.WriteLineAsync("<p><i>(No suggestions found)</i></p>");
            }

            for (int i = 0; i < suggestions.Length; i++)
            {
                await target.WriteLineAsync("<h2>Suggestion #" + (i + 1).ToString() + "</h2><p> ");

                await target.WriteAsync(WebUtility.HtmlEncode(suggestions[i].Suggestion));

                await target.WriteAsync("</p><p><b>Author:</b> <a href=\"https://ru.stackoverflow.com/users/");

                await target.WriteAsync(suggestions[i].CreatedById.ToString());

                await target.WriteAsync("/\">");

                await target.WriteAsync(WebUtility.HtmlEncode(suggestions[i].CreatedByName));

                await target.WriteAsync("</a><br/>");

                await target.WriteAsync("<b>State:</b> " + suggestions[i].State.ToString());

                await target.WriteLineAsync("</p>");

                await target.WriteLineAsync("<table border=\"1\" cellpadding=\"4\"><tr>");

                await target.WriteLineAsync("<th>Date</th>");

                await target.WriteLineAsync("<th>User</th>");

                await target.WriteLineAsync("<th>Action</th>");

                await target.WriteLineAsync("<th>Comment</th></tr>");

                for (int j = 0; j < suggestions[i].Histories.Length; j++)
                {
                    await target.WriteLineAsync("<tr>");

                    var hist = suggestions[i].Histories[j];
                    await target.WriteAsync("<td>" + hist.CreationDate.ToString() + "</td>");

                    await target.WriteAsync("<td>");

                    await target.WriteAsync("<a href=\"https://ru.stackoverflow.com/users/");

                    await target.WriteAsync(hist.UserId.ToString());

                    await target.WriteAsync("/\">");

                    await target.WriteAsync(WebUtility.HtmlEncode(hist.UserName));

                    await target.WriteAsync("</a>");

                    await target.WriteAsync("</td><td>");

                    await target.WriteAsync(hist.HistoryType.ToString());

                    await target.WriteAsync("</td><td>");

                    if (!String.IsNullOrEmpty(hist.Comment))
                    {
                        await target.WriteAsync(WebUtility.HtmlEncode(hist.Comment));
                    }

                    await target.WriteLineAsync("</td></tr>");
                }

                await target.WriteLineAsync("</table>");
            }

            await target.WriteLineAsync("<hr/>");

            await target.WriteLineAsync("<i>This document was automatically generated by ");

            await target.WriteLineAsync("<a href=\"https://github.com/MSDN-WhiteKnight/Traducir-Lab\">Traducir.Wpf</a></i>");

            await target.WriteLineAsync("</body></html>");
        }
Ejemplo n.º 4
0
 private void ChangeTag(SOString newTag)
 {
     Item.transform.tag = newTag.Value;
 }