/// <summary> /// Creates and seeds a new fragment. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="location">The location.</param> /// <param name="baseText">The base text.</param> /// <returns>A new fragment.</returns> /// <exception cref="ArgumentNullException">item or location or /// baseText</exception> public override ITextLayerFragment GetFragment( IItem item, string location, string baseText) { if (item == null) { throw new ArgumentNullException(nameof(item)); } if (location == null) { throw new ArgumentNullException(nameof(location)); } if (baseText == null) { throw new ArgumentNullException(nameof(baseText)); } Faker f = new Faker(); ApparatusLayerFragment fr = new ApparatusLayerFragment { Location = location, Tag = f.Lorem.Word() }; int n = Randomizer.Seed.Next(1, 4); for (int i = 1; i <= n; i++) { ApparatusEntry entry = new ApparatusEntry { Type = (ApparatusEntryType)Randomizer.Seed.Next(0, 4) }; if (Randomizer.Seed.Next(1, 6) == 1) { entry.Tag = f.Lorem.Word(); } // note if (entry.Type == ApparatusEntryType.Note) { entry.Note = f.Lorem.Sentence(); // authors foreach (string author in SeedHelper.RandomPickOf(_authors, 2)) { entry.Authors.Add( new ApparatusAnnotatedValue { Value = author }); } } // variant else { entry.Value = f.Lorem.Word(); entry.NormValue = entry.Value.ToUpperInvariant(); entry.IsAccepted = i == 1; // witnesses foreach (string witness in SeedHelper.RandomPickOf(_witnesses, 2)) { entry.Authors.Add( new ApparatusAnnotatedValue { Value = witness }); } // authors foreach (string author in SeedHelper.RandomPickOf(_authors, 1)) { entry.Authors.Add( new ApparatusAnnotatedValue { Value = author }); } } fr.Entries.Add(entry); } return(fr); }