Ejemplo n.º 1
0
        protected override async Task Handle(GetWatchlist request, CancellationToken cancellationToken)
        {
            var Context = request.Context;

            using var scope = serviceProvider.CreateScope();
            var db = scope.ServiceProvider.GetService <BotDbContext>();

            var list = await db.Movie.AsQueryable().Where(x => !x.Watched)
                       .OrderBy(x => x.Title)
                       .ToListAsync();

            var builder = new TableBuilder <Movie>()
            {
                MaxPageLength = 1900
            };

            builder.AddColumn("Title", "Title", 30);
            builder.AddColumn("Director", "Director", 20);
            builder.AddColumn("Runtime", "Runtime");
            builder.AddColumn("AddedBy", "AddedByUsername");
            var pages = builder.Build(list);

            foreach (var page in pages)
            {
                await Context.Channel.SendMessageAsync("```" + page + "```");
            }
        }
Ejemplo n.º 2
0
        protected override async Task Handle(GetWatchedList request, CancellationToken cancellationToken)
        {
            var Context = request.Context;

            using var scope = serviceProvider.CreateScope();
            var db = scope.ServiceProvider.GetService <BotDbContext>();

            var list = await db.Movie.AsQueryable().Where(x => x.Watched)
                       .OrderBy(x => x.Title)
                       .ToListAsync();

            var returnstring = new StringBuilder();

            //foreach (var item in list)
            //{
            //    returnstring.AppendLine($"**{ item.Title }** *https://www.imdb.com/title/{ item.Id}*");
            //}
            //var eb = new EmbedBuilder() { Title = "We have watched these movies", Description = returnstring.ToString(), Color = Color.DarkBlue };
            //await Context.Channel.SendMessageAsync(embed: eb.Build());

            var builder = new TableBuilder <Movie>()
            {
                MaxPageLength = 2000 - 6
            };

            builder.AddColumn("Title", "Title", 25);
            builder.AddColumn("Director", "Director", 20);
            builder.AddColumn("WatchedDate", "WatchedDate");
            var pages = builder.Build(list);

            foreach (var page in pages)
            {
                await Context.Channel.SendMessageAsync("```" + page + "```");
            }
        }
Ejemplo n.º 3
0
        public void Print(TextWriter writer, LocalReplay resource, int outputMaxWidth)
        {
            if (!resource.Details.Processed)
            {
                writer.WriteLine("Replay has not been processed");
                writer.WriteLine($"Run \"worms process replay {resource.Details.Date:yyyy-MM-dd HH.mm.ss}\" to extract the log");
            }
            else
            {
                writer.WriteLine($"Start Time: {resource.Details.Date:yyyy-MM-dd HH.mm.ss}");
                writer.WriteLine();

                writer.WriteLine("Teams:");
                var teamsTable = new TableBuilder(outputMaxWidth);
                teamsTable.AddColumn("NAME", resource.Details.Teams.Select(x => x.Name).ToList());
                teamsTable.AddColumn("PLAYER", resource.Details.Teams.Select(x => x.Machine).ToList());
                teamsTable.AddColumn("COLOUR", resource.Details.Teams.Select(x => x.Colour.ToString()).ToList());
                TablePrinter.Print(writer, teamsTable.Build());
                writer.WriteLine();

                writer.WriteLine("Turns:");
                var turnsTable = new TableBuilder(outputMaxWidth);
                turnsTable.AddColumn("NUM", resource.Details.Turns.Select((_, i) => (i + 1).ToString()).ToList());
                turnsTable.AddColumn("TEAM", resource.Details.Turns.Select(x => x.Team.Name).ToList());
                turnsTable.AddColumn("WEAPONS", resource.Details.Turns.Select(x => string.Join(", ", x.Weapons.Select(GetWeaponText))).ToList());
                turnsTable.AddColumn("DAMAGE", resource.Details.Turns.Select(x => string.Join(", ", x.Damage.Select(GetDamageText))).ToList());
                TablePrinter.Print(writer, turnsTable.Build());
                writer.WriteLine();

                writer.WriteLine("Awards:");
                writer.WriteLine($"Winner: {resource.Details.Winner}");
            }
        }
Ejemplo n.º 4
0
        public void Print(TextWriter writer, IReadOnlyCollection <ReplayResource> items, int outputMaxWidth)
        {
            var tableBuilder = new TableBuilder(outputMaxWidth);

            tableBuilder.AddColumn("NAME", items.Select(x => x.Date.ToString("yyyy-MM-dd HH.mm.ss")).ToList());
            tableBuilder.AddColumn("CONTEXT", items.Select(x => x.Context).ToList());
            tableBuilder.AddColumn("PROCESSED", items.Select(x => x.Processed.ToString()).ToList());
            tableBuilder.AddColumn("WINNER", items.Select(x => x.Winner.ToString()).ToList());
            tableBuilder.AddColumn("TEAMS", items.Select(x => string.Join(", ", x.Teams)).ToList());

            var table = tableBuilder.Build();

            TablePrinter.Print(writer, table);
        }
        protected override Table?GetTable(TableBuilder builder)
        {
            builder
            .AddColumn("2792cdda-3eb4-4bd3-b9d6-d81ea492587d", "Result")
            .AddColumn("3d4b05ba-6fa1-425e-8a32-f72757cd9df7", "Effect")
            .AddRow("d21314e9-e1df-4368-81ff-81397f602489", row =>
            {
                row.AddCell("8bc2c85f-a0e9-43ed-a684-441e4dabe1f1", "1");
                row.AddCell("e0b13351-856c-4769-a24b-68aec7a802db", "The target is frightened 2.");
            })
            .AddRow("81324bdf-1fd9-4cd8-abf5-97ea41a80e81", row =>
            {
                row.AddCell("ff6ec7bf-6641-4994-9244-b0d18f10008f", "2");
                row.AddCell("1b7b0f66-5aef-4a03-b5ae-f908f6fe64a7", "The target is confused for 1 round.");
            })
            .AddRow("741c39a8-e338-4c7b-8f9d-4aca84862679", row =>
            {
                row.AddCell("9011d053-b0f6-4183-a9ee-3668646bc7bb", "3");
                row.AddCell("bad7459a-c2a6-48c1-b6d8-e776507d88c2", "The target is stupefied 4 for 1 round.");
            })
            .AddRow("1aa818a0-793e-41d3-9aba-86f5f93efa8c", row =>
            {
                row.AddCell("549c84f9-a3f4-498f-a361-7d0d4f4d9000", "4");
                row.AddCell("1dc82c7f-9268-414e-bcef-8d65547a5659", "The target is blinded for 1 round.");
            })
            .AddRow("07585243-10f2-4903-bac5-bf75e3482bb2", row =>
            {
                row.AddCell("5b9d0d2e-8dc0-48c9-95e6-8fbbd0109a47", "5");
                row.AddCell("b96d7dd3-615d-4b1b-ab03-dbce5c17da00", "The target is stunned for 1 round and stupefied 1 for an unlimited duration.");
            });

            return(builder.Build("d432fce3-02e6-4b1a-a9da-0b6ccdd97301"));
        }
Ejemplo n.º 6
0
        public void Test1()
        {
            var builder = new TableBuilder <Movie>();

            builder.AddColumn("Id", "Id");
            builder.AddColumn("Title", "Title", 20);
            builder.AddColumn("Director", "Director");
            builder.AddColumn("Runtime", "Runtime");
            builder.AddColumn("Added", "AddedAt");

            var m1 = new Movie()
            {
                Id = "tt390430", Title = "Three Billboards Outside Ebbing, Missouri", Director = "Martin McDonagh", Runtime = "1h 55min", AddedAt = DateTime.Now
            };
            var m2 = new Movie()
            {
                Id = "tt343234", Title = "Blow the Man Down", Director = "Bridget Savage Cole", Runtime = "1h 31min", AddedAt = DateTime.Now
            };
            var l = new List <Movie>()
            {
                m1, m2
            };

            var result = builder.Build(l);

            Assert.NotNull(result);

            //var lines = result.Split(Environment.NewLine);

            //Assert.Equal(4, lines.Length);

            //var count = lines[0].Length;

            //foreach (var line in lines)
            //{
            //    Assert.Equal(count, line.Length);
            //}

            //output.WriteLine(result);
        }
Ejemplo n.º 7
0
        protected override Table?GetTable(TableBuilder builder)
        {
            builder
            .AddColumn("8d4fe099-9f43-4beb-bdeb-fe0c65c8666b", "Dragon Type")
            .AddColumn("f4328fbe-dd26-4f0b-ba0a-7a2b780f06d1", "Area and Damage Type")
            .AddColumn("949bd8f3-fee0-4528-bca2-cf1bf56e029f", "Saving Throw")
            .AddRow("1799cadc-8298-4e3f-a2c9-855595bc24ad", row =>
            {
                row
                .AddCell("dde93aa0-7bc6-414d-9ae0-81c68aae7d47", "Black or copper.")
                .AddCell("bbb57cfd-ab60-42dd-9d94-4c8590dd7f17", "60-foot line of acid.")
                .AddCell("ba302e6a-e058-4f06-893e-98e2bf35cc21", "Reflex.");
            })
            .AddRow("0e106283-258f-43f0-8380-472280606c9d", row =>
            {
                row
                .AddCell("e2610661-da07-4b77-952f-fe74d6b06bd9", "Blue or bronze.")
                .AddCell("6e110940-8204-4035-86c2-7d03281fd3cd", "60-foot line of electricity.")
                .AddCell("6c7a16a9-0cbf-4e1b-bf91-35ad0bc82b27", "Reflex");
            })
            .AddRow("bd5b21d2-e886-4c88-89f6-71e8a916a1ff", row =>
            {
                row
                .AddCell("f6caf324-1e2f-480b-879c-dc76ae1e157f", "Brass.")
                .AddCell("02569c93-391e-4a66-a5ec-12192479af36", "60-foot line of fire.")
                .AddCell("4977716e-9d7d-40f1-b60a-b173eb49c23c", "Reflex");
            })
            .AddRow("74a876fa-6879-496d-8d73-4648de1b014c", row =>
            {
                row
                .AddCell("22e85977-bb8d-4ed7-ad61-7722c9b63e40", "Green.")
                .AddCell("e07a7a6d-ec7e-4e76-ad99-b871258f0ba3", "30-foot cone of poison.")
                .AddCell("3424fbaf-7caa-4204-a44e-dc388130a449", "Fortitude");
            })
            .AddRow("a6d13064-96bc-4ef8-9c10-f355b69a773b", row =>
            {
                row
                .AddCell("c89542bb-4f57-4443-8f68-9663596f81c2", "Gold or red.")
                .AddCell("d0f69b66-154d-4c35-a8c4-e2b98f2090c1", "30-foot cone of fire.")
                .AddCell("7eeb0641-a92b-402c-9cdf-8b3b284a3f68", "Reflex");
            })
            .AddRow("f273d613-2e9b-4628-8e46-798ba6769c28", row =>
            {
                row
                .AddCell("0db1ef65-66e9-472e-8a8d-b4bbfe20c103", "Silver or white.")
                .AddCell("d07c9ade-1a62-4961-8a0c-d4730a1db098", "30-foot cone of cold.")
                .AddCell("c6cf8ab9-c13a-4196-9501-459ec2be5c85", "Reflex");
            });

            return(builder.Build("8f257a22-51a5-4dfd-994b-cf61347a5f58"));
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Creates the table builder for a specific <see cref="StatisticFeedDefinition" />.
        /// </summary>
        /// <returns></returns>
        private TableBuilder CreateTableBuilder()
        {
            var tableBuilder = new TableBuilder(_stringBuilder);

            foreach (FieldDefinition field in StatisticFeedDefinition.FieldsDefinition)
            {
                tableBuilder.AddColumn(new ColumnDefinition {
                    Label = field.Label, Width = field.WidthHint, Alignment = ColumnAlignment.Left
                });
            }

            tableBuilder.Prepare();
            return(tableBuilder);
        }
Ejemplo n.º 9
0
    public async Task TestScanTokenSize()
    {
        var builder = new TableBuilder(_tableName)
                      .AddColumn("key", KuduType.Int8, opt => opt.Key(true))
                      .SetNumReplicas(1);

        for (int i = 0; i < 100; i++)
        {
            builder.AddColumn($"int64-{i}", KuduType.Int64);
        }

        var table = await _client.CreateTableAsync(builder);

        var tokenBuilder = _client.NewScanTokenBuilder(table);
        var tokens       = await tokenBuilder
                           .IncludeTabletMetadata(false)
                           .IncludeTableMetadata(false)
                           .BuildAsync();

        var token      = Assert.Single(tokens);
        var tokenBytes = token.Serialize();

        var tokensWithTabletMetadata = await tokenBuilder
                                       .IncludeTabletMetadata(true)
                                       .IncludeTableMetadata(false)
                                       .BuildAsync();

        var tokenWithTabletMetadata      = Assert.Single(tokensWithTabletMetadata);
        var tokenWithTabletMetadataBytes = tokenWithTabletMetadata.Serialize();

        var tokensWithTableMetadata = await tokenBuilder
                                      .IncludeTabletMetadata(false)
                                      .IncludeTableMetadata(true)
                                      .BuildAsync();

        var tokenWithTableMetadata      = Assert.Single(tokensWithTableMetadata);
        var tokenWithTableMetadataBytes = tokenWithTableMetadata.Serialize();

        var tokensWithAllMetadata = await tokenBuilder
                                    .IncludeTabletMetadata(true)
                                    .IncludeTableMetadata(true)
                                    .BuildAsync();

        var tokenWithAllMetadata      = Assert.Single(tokensWithAllMetadata);
        var tokenWithAllMetadataBytes = tokenWithAllMetadata.Serialize();

        Assert.True(tokenWithAllMetadataBytes.Length > tokenWithTableMetadataBytes.Length);
        Assert.True(tokenWithTableMetadataBytes.Length > tokenWithTabletMetadataBytes.Length);
        Assert.True(tokenWithTabletMetadataBytes.Length > tokenBytes.Length);
    }
Ejemplo n.º 10
0
        private async Task <MattermostResponse> HandleList(MattermostRequest req)
        {
            var polls = await _dbContext.Polls
                        .Where(p => p.ChannelId == req.channel_id)
                        .OrderByDescending(p => p.CreatedAtUtc)
                        .ToListAsync();

            if (!polls.Any())
            {
                return(new MattermostResponse()
                {
                    ResponseType = Common.Consts.ResponseType.Ephemeral,
                    Text = Langs.NoPollsOnThisChannel
                });
            }

            var ownerNames = await _mattermostSrv.GetUsersByIds(polls.Select(x => x.OwnerId).Distinct().ToList());

            var ownerNamesDictionary = ownerNames.ToDictionary(x => x.id, x => x.username);

            var table = new TableBuilder();

            foreach (var poll in polls)
            {
                table
                .AddColumn("Id", poll.Id.ToString())
                .AddColumn("Description", poll.Description)
                .AddColumn("Created at", poll.CreatedAtUtc.ToLocalTime().ToString("yyyy-MM-dd HH:mm"))
                .AddColumn("Active", poll.IsActive ? "Yes" : "No")
                .AddColumn(
                    "Created by",
                    ownerNamesDictionary.ContainsKey(poll.OwnerId)
                            ? ownerNamesDictionary[poll.OwnerId]
                            : "*Deleted*"
                    );
            }

            return(new MattermostResponse()
            {
                ResponseType = Common.Consts.ResponseType.Ephemeral,
                Text = string.Format(
                    Langs.PollList,
                    table.ToString()
                    )
            });
        }
        protected override Table?GetTable(TableBuilder builder)
        {
            builder
            .AddColumn("b9917bfa-96d3-48c5-bc12-fb530e73db87", "1d4")
            .AddColumn("e29d1ddf-cb8a-44f3-aa00-23c5d402493b", "Color")
            .AddColumn("cce1ea2f-a856-428e-8a4d-5aac108cd5cd", "Failure")
            .AddColumn("5e34d24f-b720-4c64-9126-be13552c2d1f", "Critical Failure")
            .AddRow("fcf31656-4f89-42da-bf9b-35f209fdeb5c", row =>
            {
                row
                .AddCell("f0840b48-88ba-44e2-8cde-fb9e2f6d697c", "1")
                .AddCell("a0b9d7c1-832e-4c60-908a-50cec6807126", "White")
                .AddCell("64d74f40-2eb3-471d-9187-01b10f3226c0", "Dazzled 1 round.")
                .AddCell("8c9a6be8-4153-4682-8ecf-d437772333b0", "Dazzled 1 minute.");
            })
            .AddRow("43f1abd3-b59c-4fcb-a8f9-d25d67561301", row =>
            {
                row
                .AddCell("93781c76-8083-4c4e-a028-bd30f1c75d0a", "2")
                .AddCell("485fd071-daa8-4ec3-83f0-96fa201ad0ac", "Red")
                .AddCell("07b98d48-04f5-4328-a53e-87445f6bfcd5", "Enfeebled 1 for 1 round.")
                .AddCell("84f6b213-8315-4f60-a941-15009d662b60", "Enfeebled 2 for 1 round.");
            })
            .AddRow("be37f12e-0f0e-468f-b954-a25ee89c5176", row =>
            {
                row
                .AddCell("d3cf00ac-078a-4d6a-8777-6c89229427aa", "3")
                .AddCell("0f6c0a01-39af-4162-999c-421b3ed3083b", "Yellow")
                .AddCell("69ba681d-f286-448e-8f49-eeede6ac8061", "Frightened 1.")
                .AddCell("7a005aaa-c00c-4c68-9c65-b41140dbe588", "Frightened 2.");
            })
            .AddRow("044f0a18-cc33-4c05-9f2e-cc411fe89279", row =>
            {
                row
                .AddCell("63a29908-5408-457f-b128-c2e164b1ea58", "4")
                .AddCell("7f9acb9d-5e79-454f-a1d6-c1e26bd07e88", "Blue")
                .AddCell("59446203-e584-478e-8991-42706c01e4d8", "Clumsy 1 for 1 round.")
                .AddCell("56068469-144a-407d-8edc-af02233ad5b3", "Clumsy 2 for 1 round.");
            });

            return(builder.Build("77fab51e-5718-4cbc-93ec-29df80ce3c3b"));
        }
Ejemplo n.º 12
0
        private static void DisplayNews(ITopNewsResponse response)
        {
            CellFormat headerFormat = new CellFormat()
            {
                ForegroundColor = Color.LightSeaGreen
            };
            IList <string> columns = new List <string>()
            {
                "Name", "Top News ID", "Revision ID", "Revision Date"
            };

            foreach (var category in response.Data.Categories)
            {
                Console.WriteLine($"Category: {category.Key}");

                var builder = new TableBuilder(headerFormat);
                foreach (var name in columns)
                {
                    builder.AddColumn(name);
                }

                var table = builder.Build();
                table.Config = TableConfig.Unicode();

                table.Config.wrapText      = true;
                table.Config.textWrapLimit = 40;

                IList <object> rowData = new List <object>();
                foreach (var page in category.Value)
                {
                    rowData.Clear();
                    rowData.Add(page.Page);
                    rowData.Add(page.TopNewsID);
                    rowData.Add(page.RevisionID);
                    rowData.Add(page.RevisionDate);

                    table.AddRow(rowData.ToArray());
                }

                Console.Write(table);
            }
        }
        protected override Table?GetTable(TableBuilder builder)
        {
            builder
            .AddColumn("8f8b5c9d-6cb0-414a-bfd7-67ca16dbace9", "1d4")
            .AddColumn("8d4f4f9b-ee4d-4f2f-971f-7427a586c588", "Realm")
            .AddColumn("67bcbb99-6a2e-4fd4-b32a-39d3dd0f7a01", "Manifestation")
            .AddColumn("5ead8a47-ff78-409a-bbfb-2dc8b03f0c88", "Damage Type")
            .AddRow("f24670a8-4ad0-4d3a-80e4-d1a17e8808ba", row =>
            {
                row
                .AddCell("22cb2810-3342-4c02-9c67-7e263af82de8", "1")
                .AddCell("fbb1b6e3-847b-4514-9d04-bcad5b86a4de", "Skies")
                .AddCell("a343affe-523e-4573-b6bc-e960eeab1e43", "Bolts of lightning and flying debris.")
                .AddCell("95dc97f6-d9a3-44fb-94e2-c216ee845a5a", "Bluedgeoning and electricity.");
            })
            .AddRow("59d365af-56c7-43f3-8361-c928974ff538", row =>
            {
                row
                .AddCell("9bd06a1e-9c72-4d21-9a23-b9f031433281", "2")
                .AddCell("33e470b8-f2c4-4b9d-a1c5-d6ed132732a2", "Depths")
                .AddCell("c7dbb56a-1236-4b69-88e9-059d65b05c6b", "Acid and demonic shells.")
                .AddCell("b044f702-6f8f-4353-b9cf-a15e2382aa3d", "Acid and slashing");
            })
            .AddRow("0a1cbdb3-cc9e-4b91-ae08-9c9dc9425185", row =>
            {
                row
                .AddCell("1a98ad22-efd6-40a2-83cd-defc27c90d1b", "3")
                .AddCell("5e651b0d-93da-4ce2-aa39-4c378290acce", "Frozen")
                .AddCell("3c5693c0-b521-487c-854e-575faef48671", "Frigid air and ice.")
                .AddCell("806a9c8f-b6b1-4e35-9788-ad2ee9edb58b", "Bludgeoning and cold.");
            })
            .AddRow("c637f33b-5924-4cc6-85a2-cb75d7b5add9", row =>
            {
                row
                .AddCell("419cda7d-5946-47e1-9be1-ca59c362c856", "4")
                .AddCell("5e0fbbd7-11cf-4926-ae54-4ebfd800e9dd", "Volcanic")
                .AddCell("e9630bd0-a5e6-4ebd-bc5d-f69c3ae3a0cb", "Jagged volcanic rocks and magma.")
                .AddCell("048af3d4-dc26-4a3f-951e-59c5416cad93", "Fire and piercing.");
            });

            return(builder.Build("3bea2bd8-f9fa-4369-b76b-37486eb7afbf", "You deal 4d6 damage of each of the corresponding types to each creature in the cone(8d6 total damage)."));
        }
Ejemplo n.º 14
0
        protected override Table?GetTable(TableBuilder builder)
        {
            builder
            .AddColumn("a995d2ac-862a-4144-a49d-ebe41674b98d", "Creature or Item Level")
            .AddColumn("5fbc8431-df89-49f0-8031-278de1d821d7", "Spell or Effect Level")
            .AddColumn("3b3ca2e1-0bae-4139-8a60-a5a67eed076c", "Aura Strength")
            .AddRow("67704341-3c02-40fa-abf7-7bb01147f9d9", row =>
            {
                row.AddCell("92b4678a-f0df-4d06-8145-13949c8abf7e", "0-5");
                row.AddCell("2c0c37e8-5033-4b6d-bae8-9761cbf12512", "-");
                row.AddCell("746c0b3e-83a3-483c-9bc8-c8bbf6c5ba5b", "None");
            })
            .AddRow("8e5b88b0-47fb-489e-9a1b-6b3c1b03e2f3", row =>
            {
                row.AddCell("5f27f445-de06-47c7-9d83-a2d8b4f7805c", "6-10");
                row.AddCell("d5e05a9d-2570-4d18-a5d0-2158af7c457f", "0-3");
                row.AddCell("f1e5b86d-eca6-42f4-856f-b2ed70c38a87", "Faint");
            })
            .AddRow("93244a11-0097-47dc-94c0-38cb7603a229", row =>
            {
                row.AddCell("884ab5b0-8f89-4568-944d-9e645aa0f796", "11-15");
                row.AddCell("f21212d2-9441-4f9f-91f6-c1b146882597", "4-7");
                row.AddCell("7867aa1f-fd1c-4983-979f-cfab25851b17", "Moderate");
            })
            .AddRow("772692cd-853c-4adc-9c37-2b67f4afd24f", row =>
            {
                row.AddCell("26aca67e-567e-4abc-bad2-6f8d889d254a", "16-20");
                row.AddCell("e49811d9-7330-4803-97b2-48e6eb30c70a", "4-7");
                row.AddCell("9fe614a2-f821-48d9-be52-d420b8f69417", "Moderate");
            })
            .AddRow("6d62d5c6-671a-4023-aa1b-ab989bea290c", row =>
            {
                row.AddCell("7f98a85c-4835-4940-9abd-ed786424ed0a", "21+");
                row.AddCell("0bb5fe75-a9d1-4a4b-bbf4-1cedee2c2d5b", "10");
                row.AddCell("a3c30e30-faa2-450f-83bc-f688558f55df", "Overwhelming");
            });

            return(builder.Build("2258f9cf-0a20-4580-a2dd-66ef4ba69280", "The strength of an alignment aura depends on the level of the creature, item, or spell. The auras of undead, clerics and other divine spellcasters with a patron deity, and creatures from the Outer Sphere are one step stronger than normal (faint instead of none, for example)."));
        }
Ejemplo n.º 15
0
        public void Print(TextWriter writer, IReadOnlyCollection <SchemeResource> items, int outputMaxWidth)
        {
            var tableBuilder = new TableBuilder(outputMaxWidth);

            tableBuilder.AddColumn("NAME", items.Select(x => x.Name).ToList());
            tableBuilder.AddColumn("CONTEXT", items.Select(x => x.Context).ToList());
            tableBuilder.AddColumn("HEALTH", items.Select(x => x.Details.WormEnergy.ToString()).ToList());
            tableBuilder.AddColumn(
                "TURN-TIME",
                items.Select(x => GetTurnTime(x.Details.TurnTimeInfinite, x.Details.TurnTime)).ToList());
            tableBuilder.AddColumn(
                "ROUND-TIME",
                items.Select(x => GetRoundTime(x.Details.RoundTimeMinutes, x.Details.RoundTimeSeconds)).ToList());
            tableBuilder.AddColumn("WORM-SELECT", items.Select(x => x.Details.WormSelect.ToString()).ToList());
            tableBuilder.AddColumn("WEAPONS", items.Select(x => GetWeaponSummary(x.Details.Weapons)).ToList());

            var table = tableBuilder.Build();

            TablePrinter.Print(writer, table);
        }
        private static void DisplayNews(ITopNewsHeadlinesResponse response)
        {
            CellFormat headerFormat = new CellFormat()
            {
                ForegroundColor = Color.LightSeaGreen
            };

            var builder = new TableBuilder(headerFormat);

            foreach (var name in new List <string>()
            {
                "Publish Date", "Headline", "Story ID"
            })
            {
                builder.AddColumn(name);
            }

            var table = builder.Build();

            table.Config = TableConfig.Unicode();

            table.Config.wrapText      = true;
            table.Config.textWrapLimit = 40;

            IList <object> rowData = new List <object>();

            foreach (var headline in response.Data.Headlines)
            {
                rowData.Clear();
                rowData.Add(headline.VersionCreated);
                rowData.Add(headline.Text);
                rowData.Add(headline.StoryId);

                table.AddRow(rowData.ToArray());
            }

            Console.Write(table);
        }
Ejemplo n.º 17
0
        /// <summary>
        /// /poll results [ID]
        /// </summary>
        private async Task <MattermostResponse> HandlePollResults(MattermostRequest req)
        {
            //-send poll results as an ephemeral message

            var cmdParams = req.text.Split(" ").Select(x => x.Trim()).ToList();
            int pollId    = 0;

            if (cmdParams.Count > 1)
            {
                //get specific poll answers
                var pollIdParam = cmdParams[1];
                if (!int.TryParse(pollIdParam, out pollId))
                {
                    return(new MattermostResponse()
                    {
                        ResponseType = Common.Consts.ResponseType.Ephemeral,
                        Text = Langs.ResultsUsage
                    });
                }
            }
            else
            {
                //get latest poll answers
                var latestPoll = await _dbContext.Polls
                                 .Where(x => x.ChannelId == req.channel_id)
                                 .OrderByDescending(x => x.CreatedAtUtc)
                                 .FirstOrDefaultAsync();

                if (latestPoll == null)
                {
                    return new MattermostResponse()
                           {
                               ResponseType = Common.Consts.ResponseType.Ephemeral,
                               Text         = Langs.ResultsUsage
                           }
                }
                ;

                pollId = latestPoll.Id;
            }

            var answers = await(
                from poll in _dbContext.Polls
                where poll.ChannelId == req.channel_id && poll.Id == pollId
                from pollAnswer in _dbContext.PollAnswers.Where(x => x.PollId == poll.Id).DefaultIfEmpty()
                select pollAnswer
                ).ToListAsync();

            if (answers != null && answers.Any())
            {
                var table = new TableBuilder();
                foreach (var answer in answers)
                {
                    table
                    .AddColumn("User", answer.UserName)
                    .AddColumn("Answer", answer.Answer);
                }

                return(new MattermostResponse()
                {
                    ResponseType = Common.Consts.ResponseType.Ephemeral,
                    Text = table.ToString()
                });
            }
            else
            {
                return(new MattermostResponse()
                {
                    ResponseType = Common.Consts.ResponseType.Ephemeral,
                    Text = Langs.NoAnswersFound
                });
            }
        }
        protected override Table?GetTable(TableBuilder builder)
        {
            builder
            .AddColumn("6ca123fe-d3de-444e-8e7b-a2312913fd9f", "1d8")
            .AddColumn("09bfd599-c40b-46a7-a20a-9c6462f5b314", "Color")
            .AddColumn("1732bfa4-4f69-4877-8669-a63df0d1fabd", "Save")
            .AddColumn("31d79ecf-61eb-4720-a428-daeb519e4b44", "Effect (Traits)")
            .AddRow("7c351358-cfa8-432e-a9f6-63084994f3a8", row =>
            {
                row
                .AddCell("48194501-c45e-4cbc-8627-1f4c0f4d90a2", "1")
                .AddCell("3713fc47-41a9-47e4-9e53-5747aa62c6a0", "Red")
                .AddCell("39fa72a0-237e-4880-8f22-1543791d8daa", "Reflex")
                .AddCell("f643c2ea-e650-4dec-9d43-97b1c1c70125", "50 fire damage (fire).");
            })
            .AddRow("27d3bf9f-c660-45df-9e89-492027a410f1", row =>
            {
                row
                .AddCell("aad5596d-15e7-4858-92bf-90426d94c329", "2")
                .AddCell("633a5e12-13d4-4e88-b522-7437e1544dd4", "Orange")
                .AddCell("018070e7-ce96-478b-a33e-c4ff41857977", "Reflex")
                .AddCell("838afa4e-e2bc-4e9b-8362-f61f365aa991", "60 acid damage (acid).");
            })
            .AddRow("7e4fd6be-c972-4977-b727-28df2acf32e6", row =>
            {
                row
                .AddCell("2c53e992-d67c-4aed-a997-50302f3e7da9", "3")
                .AddCell("66252eaa-f04f-4b90-a442-60f25bad3ee2", "Yellow")
                .AddCell("88da78e9-8b2c-488d-a85e-95840a9a186d", "Reflex")
                .AddCell("095791cf-28a0-4b20-9e4a-4479a9041081", "70 electricity damage (electricity).");
            })
            .AddRow("3fdca9cd-e3d4-49df-9482-32a3c38f7051", row =>
            {
                row
                .AddCell("f513949f-95bf-48ad-9139-5da25b60f919", "4")
                .AddCell("2c3b1ba1-a50c-4a4d-88c8-8da50ac12dbb", "Green")
                .AddCell("96a3d2db-6df7-4d9e-8e24-5caa1c39fbb7", "Fortitude")
                .AddCell("7d31be5d-f364-48ae-a04c-54d0e2745bf7", "30 poison damage and enfeebled 1 for 1 minute (poison).");
            })
            .AddRow("51558f46-046a-48e2-8dcc-201b8a9888f7", row =>
            {
                row
                .AddCell("d10ca47c-420e-423e-9a7b-811629baef3c", "5")
                .AddCell("b555850e-ec50-4d7d-9adb-388d9d4dc764", "Blue")
                .AddCell("245575a1-44b4-44c5-be5c-fdd493757edc", "Fortitude")
                .AddCell("c56ff7d5-f181-4f85-ac30-5bb35552d772", "Affected as if by flesh to stone.");
            })
            .AddRow("8d9bc647-5119-4bdd-85ea-bd3eedda5d03", row =>
            {
                row
                .AddCell("07708ee5-0ac7-4ba6-b10c-242d5a3232f8", "6")
                .AddCell("9cd860fd-5ddd-4e00-8537-e5255da00cdb", "Indigo")
                .AddCell("7e25ca2e-d2af-4c50-b5a2-1c9a29e37e2d", "Will")
                .AddCell("3e3e0c77-f4b0-443c-b9d3-66b261bcc88b", "Confused, as the warp mind spell (mental).");
            })
            .AddRow("79860964-d0ec-4234-b0ed-abcda815cee6", row =>
            {
                row
                .AddCell("4dc94d09-7ef3-4951-9c3e-beeb8dddcbf0", "7")
                .AddCell("3ae421de-cd42-4620-8a6f-9504ab7652bd", "Violet")
                .AddCell("19d981f4-68b8-49c9-b9e4-b51f7b748f7f", "Will")
                .AddCell("3c856f4f-caac-4db3-b4f7-2c76e2893f03", "Slowed 1 for 1 minute; if a critical failure, sent to another plane, as plane shift (teleportation).");
            })
            .AddRow("40e8b921-e62c-4ed0-aa8c-e93e7334152e", row =>
            {
                row
                .AddCell("63c16510-4d11-439d-8179-e3e8dd45786d", "8")
                .AddCell("f5a5715f-b496-4bca-a2f2-5e52964753fa", "Potent Beam")
                .AddCell("131297f2-aaab-458e-91d0-ca1e3278ff60", "-")
                .AddCell("fc30d3e9-7541-4fb6-9a8b-530e4c26e3d1", "Affected by two beams - roll twice, rerolling any duplicates or results of 8.");
            });

            return(builder.Build("755b85a4-3292-4c5e-b898-f89e5e06e9b1"));
        }
Ejemplo n.º 19
0
 /// <summary>
 /// 添加列
 /// </summary>
 /// <param name="name">列名</param>
 /// <param name="valueExpression">值的表达式</param>
 /// <returns></returns>
 public ExcelResultBuilder <T> AddColumn(string name, Func <T, object> valueExpression)
 {
     _tableBuilder.AddColumn(name, valueExpression);
     return(this);
 }
Ejemplo n.º 20
0
        // DisplayRows
        // Generic routine to display the rows of a table
        public static void DisplayRows(DataColumnCollection columns, IEnumerable <DataRow> rows, int maxCols = 0, int maxRows = 0)
        {
            CellFormat headerFormat = new CellFormat()
            {
                ForegroundColor = Color.LightSeaGreen
            };
            var builder = new TableBuilder(headerFormat);

            var displayCols = maxCols <= 0 ? columns.Count : maxCols;

            foreach (DataColumn col in columns)
            {
                builder.AddColumn(col.ColumnName);
                if (--displayCols == 0)
                {
                    break;
                }
            }

            if (maxCols > 0 && maxCols < columns.Count)
            {
                builder.AddColumn($"{columns.Count - maxCols} more");
            }

            var table = builder.Build();

            table.Config = TableConfig.Unicode();

            table.Config.wrapText      = true;
            table.Config.textWrapLimit = 40;

            var rowCount    = rows.ToArray().Length;
            var displayRows = maxRows <= 0 ? rowCount : maxRows;

            displayCols = maxCols <= 0 ? columns.Count : maxCols;
            IList <object> rowData = new List <object>();

            foreach (DataRow dataRow in rows)
            {
                foreach (object item in dataRow.ItemArray)
                {
                    if (rowData.Count == displayCols)
                    {
                        rowData.Add("...");
                        break;
                    }

                    switch (item)
                    {
                    case null:
                        break;

                    case JValue val:
                        var str = val.ToString();
                        rowData.Add(str);
                        break;

                    case IEnumerable <JToken> list:
                        rowData.Add($"[{string.Join(", ", list.Select(node => $"{node}"))}]");
                        break;

                    default:
                        rowData.Add(item);
                        break;
                    }
                }

                table.AddRow(rowData.ToArray());
                rowData.Clear();

                if (--displayRows == 0)
                {
                    break;
                }
            }

            if (maxRows > 0 && maxRows < rowCount)
            {
                table.AddRow($"<{rowCount - maxRows} more>...");
            }

            Console.Write(table);
        }