示例#1
0
        public void Export(XRay xray, string path, IProgressBar progress, CancellationToken cancellationToken = default)
        {
            var appVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

            var start    = (long?)xray.Srl;
            var end      = (long?)xray.Erl;
            var chapters = xray.Chapters.ToArray();

            if (xray.Chapters.Count <= 0)
            {
                start    = null;
                end      = null;
                chapters = new[]
                {
                    new Chapter
                    {
                        Name  = null,
                        Start = 1,
                        End   = 9999999
                    }
                };
            }

            var xrayArtifact = new Artifacts.XRay
            {
                Asin        = xray.Asin,
                Guid        = $"{xray.DatabaseName}:{xray.Guid}",
                Version     = "1",
                XRayVersion = $"{appVersion.Major}.{appVersion.Minor}{appVersion.Build}",
                Created     = (xray.CreatedAt ?? DateTime.Now).ToString("yyyy-MM-dd HH:mm:ss"),
                Terms       = xray.Terms.Select(term => new Term
                {
                    Desc        = term.Desc ?? "",
                    DescSrc     = term.DescSrc ?? "",
                    DescUrl     = term.DescUrl ?? "",
                    Type        = term.Type,
                    TermName    = term.TermName,
                    Occurrences = term.Occurrences.Count > 0
                        ? term.Occurrences
                        : new HashSet <Occurrence>
                    {
                        new()
                        {
                            Excerpt   = new IndexLength(100, 100),
                            Highlight = new IndexLength(100, 6)
                        }
                    }
                }).ToArray(),
示例#2
0
        // todo just take paragraph instead of indexlength
        public static void EnhanceOrAddExcerpts(List <Excerpt> excerpts, int characterId, IndexLength excerptLocation)
        {
            var exCheck = excerpts.Where(t => t.Start.Equals(excerptLocation.Index)).ToArray();

            if (exCheck.Length > 0)
            {
                if (!exCheck[0].RelatedEntities.Contains(characterId))
                {
                    exCheck[0].RelatedEntities.Add(characterId);
                }
            }
            else
            {
                var newExcerpt = new Excerpt
                {
                    Id = excerpts.Any()
                        ? excerpts.Max(excerpt => excerpt.Id) + 1
                        : 1,
                    Start  = excerptLocation.Index,
                    Length = excerptLocation.Length
                };
                newExcerpt.RelatedEntities.Add(characterId);
                excerpts.Add(newExcerpt);
            }
        }