Exemplo n.º 1
0
        static void Main()
        {
            string dirlocation = @"D:\D - Software and School Folder\Acads\Computer Self Study\C++\www.learncpp.com\Expert C++\HTML";
            string FileName    = @"Chapter 1.html";
            string input       = File.ReadAllText(Path.Combine(dirlocation, FileName));

            TagsGenerator gen = new TagsGenerator(input);

            gen.RemoveTagStyles();

            File.WriteAllText(Path.Combine(dirlocation, "Chapter1_converted.html"),
                              gen.InsertNewLineCharacters());
        }
Exemplo n.º 2
0
        private void AddGeneratedSessions(List <Session> sessions, IList <Person> persons, IEnumerable <TimeSlot> timeSlots, IList <Track> tracks)
        {
            var textGenerator = new SampleTextGenerator();
            const SampleTextGenerator.SourceNames descTextSource =
                SampleTextGenerator.SourceNames.Decameron;

            // levels setup so "intermediate" sessions occur more frequently
            var levels     = new[] { _levels[0], _levels[1], _levels[1], _levels[1], _levels[2] };
            var levelCount = levels.Length;

            var trackCount = tracks.Count;
            var trackIx    = 0;

            var slots      = timeSlots.Where(t => t != _keyNoteTimeSlot).ToArray();
            var slotsCount = slots.Length;

            var       personsCount        = persons.Count;
            const int firstKnownSpeakerIx = 2; // skip the "reserved" attendees who we know are not speakers.
            const int firstCrowdIx        = 4; // first person in the crowd who could be a speaker

            var chosenCount = TheChosen._theChosen.Count();

            var speakerIxs = new List <int>(); // speakers assigned in the current timeslot


            // Populate sessions
            var slotIx = 0; // current slot

            while (slotIx < slotsCount)
            {
                var slot = slots[slotIx];

                // Assign sessions by track, looping through tracks
                var track = tracks[trackIx];
                var room  = _roomsForGeneratedSessions[trackIx]; // track sessions are in the same room

                // Weight the draw of speakers towards the "well-known" speakers
                // Ensure a person only speaks once in a timeslot
                //var speakerIx = Rand.Next(firstKnownSpeakerIx, firstCrowdIx+5);
                var speakerIx = Rand.Next(firstKnownSpeakerIx, firstKnownSpeakerIx + chosenCount);
                if (speakerIx >= firstCrowdIx || speakerIxs.Contains(speakerIx))
                {
                    do
                    {
                        speakerIx = Rand.Next(firstCrowdIx, Math.Min(75, personsCount)); //Max speakers allowed are 75
                    } while (speakerIxs.Contains(speakerIx));
                }
                speakerIxs.Add(speakerIx);

                var speaker = persons[speakerIx];
                var level   = levels[Rand.Next(0, levelCount)];
                var session =
                    new Session
                {
                    Title       = GenerateTitle(track),
                    Code        = GenSessionCode(track.Name, level),
                    SpeakerId   = speaker.Id,
                    TrackId     = track.Id,
                    TimeSlotId  = slot.Id,
                    RoomId      = room.Id,
                    Level       = level,
                    Tags        = TagsGenerator.GenTags(track.Name),
                    Description = textGenerator.GenSentences(40, descTextSource),
                };

                sessions.Add(session);

                // Limit to 110 sessions
                if (sessions.Count > 110)
                {
                    return;
                }

                if (++trackIx != trackCount)
                {
                    continue;
                }

                // Ran around the tracks; bump to next TimeSlot and reset
                slotIx++;
                trackIx = 0;
                speakerIxs.Clear();
            }
        }