コード例 #1
0
        public static string ToHtml(this IList <PublicationEntry> entries,
                                    PublicationLanguage lang = PublicationLanguage.English)
        {
            var builder = new StringBuilder();
            var years   = entries.Select(it => it.GetYear()).Distinct().OrderByDescending(it => it);

            foreach (var year in years)
            {
                builder.AppendLine($"<h4>{year}</h4>");
                var localEntries = entries.WithYear(year);
                builder.Append(localEntries.WithType(PublicationEntryType.PhdThesis)
                               .ToHtmlSection(Resolve(lang, "Phd thesis", "Диссертационные работы")));
                builder.Append(localEntries.WithType(PublicationEntryType.Book)
                               .ToHtmlSection(Resolve(lang, "Books", "Книги")));
                builder.Append(localEntries.WithType(PublicationEntryType.Article)
                               .ToHtmlSection(Resolve(lang, "Articles", "Статьи")));
                builder.Append(localEntries.WithType(PublicationEntryType.Inproceedings)
                               .ToHtmlSection(Resolve(lang, "Inproceedings", "Тезисы")));
                builder.Append(localEntries.WithType(PublicationEntryType.TechReport)
                               .ToHtmlSection(Resolve(lang, "Technical reports", "Технические отчёты")));
            }

            return(builder.ToString());
        }
コード例 #2
0
 private static string Resolve(PublicationLanguage lang, string en, string ru) =>
 lang == PublicationLanguage.English ? en : ru;
コード例 #3
0
        public static string ToToml(this IList <PublicationEntry> entries,
                                    PublicationLanguage lang = PublicationLanguage.English)
        {
            string culture = lang == PublicationLanguage.English ? "en-us" : "ru-ru";
            var    builder = new StringBuilder();

            builder.AppendLine("Indexer = true");
            builder.AppendLine();
            var years   = entries.Select(it => it.GetYear()).Distinct().OrderByDescending(it => it);
            int counter = entries.Count;

            foreach (var year in years)
            {
                foreach (var entry in entries.Where(e => e.GetYear() == year))
                {
                    builder.AppendLine("[[item]]");
                    builder.AppendLine($"Group = \"{year}\"");
                    builder.AppendLine($"Html = \"{Util.Escape(entry.ToHtml())}\"");
                    builder.AppendLine($"Index = {counter--}");

                    builder.AppendLine("  [[item.badge]]");
                    builder.AppendLine($"  Label = \"{entry.GetLanguage().ToString().Substring(0, 2).ToUpper()}\"");

                    builder.AppendLine("  [[item.badge]]");
                    builder.AppendLine($"  Label = \"{entry.Type.ToLabel(culture)}\"");

                    bool isVak = entry.GetKeywords().Contains("Vak");
                    if (isVak)
                    {
                        builder.AppendLine("  [[item.badge]]");
                        var label = lang == PublicationLanguage.Russian ? "ВАК" : "VAK";
                        builder.AppendLine($"  Label = \"{label}\"");
                    }

                    var doi = entry.GetDoi();
                    if (!string.IsNullOrEmpty(doi))
                    {
                        builder.AppendLine("  [[item.link]]");
                        builder.AppendLine($"  Label = \"DOI\"");
                        builder.AppendLine($"  Url = \"http://dx.doi.org/{doi}\"");
                    }

                    foreach (var url in entry.GetUrls())
                    {
                        var title = Resolve(lang, "Link", "Ссылка");
                        if (url.EndsWith(".pdf"))
                        {
                            title = "Pdf";
                        }
                        else if (url.Contains("ieeexplore.ieee.org"))
                        {
                            title = "IEEE";
                        }
                        else if (url.Contains("apps.webofknowledge.com"))
                        {
                            title = "Web of Science";
                        }
                        else if (url.Contains("www.scopus.com"))
                        {
                            title = "Scopus";
                        }
                        else if (url.Contains("elibrary.ru"))
                        {
                            title = Resolve(lang, "RSCI", "РИНЦ");
                        }
                        else if (url.Contains("mathnet.ru"))
                        {
                            title = "MathNet";
                        }
                        else if (url.Contains("link.springer.com"))
                        {
                            title = "Springer";
                        }
                        else if (url.Contains("www.packtpub.com"))
                        {
                            title = "PacktPub";
                        }
                        else if (url.Contains("conf.nsc.ru") || url.Contains("uni-bielefeld.de") ||
                                 url.Contains("cmb.molgen.mpg.de") || url.Contains("sites.google.com"))
                        {
                            title = Resolve(lang, "Conference site", "Сайт конференции");
                        }
                        else if (url.Contains("authorea"))
                        {
                            title = url.Substring(url.IndexOf("authorea.com", StringComparison.Ordinal))
                                    .TrimEnd('/');
                        }
                        else if (url.Contains("scholar.google.ru"))
                        {
                            title = "Google Scholar";
                        }
                        builder.AppendLine("  [[item.link]]");
                        builder.AppendLine($"  Label = \"{title}\"");
                        builder.AppendLine($"  Url = \"{url}\"");
                    }
                }
            }

            return(builder.ToString());
        }