LoginSignup
54
44

More than 3 years have passed since last update.

全角対応テキストテーブルライブラリ「FluentTextTable」を公開しました!

Last updated at Posted at 2020-07-24

「オブジェクトを手軽にテーブル状にテキスト出力したい!」

そんなことを思ったことはありませんか?

これは何?

FluentTextTableは、柔軟で簡単な「全角文字に対応した」.NET用のテキストテーブルライブラリです。デバッグや簡単なツールなどに利用できます。

つぎのような簡単なコードから・・・

var users = new[]
{
    new User {Id = 1, Name = "ビル・ゲイツ", Birthday = DateTime.Parse("1955/10/28")},
    new User {Id = 2, Name = "スティーブ・ジョブズ", Birthday = DateTime.Parse("1955/2/24")}
};
Build
    .TextTable<User>()
    .WriteLine(users);

このようにコンソールにテーブル状に値を表示することができます。

basicforjp.png

複雑なテーブルの書式を、簡単かつ流暢(Fluent)に設定できます。

Build
    .TextTable<User>(builder =>
    {
        builder
            .Borders.Horizontals.AllStylesAs("-")
            .Borders.HeaderHorizontal.AllStylesAs("=")
            .Columns.Add(x => x.Id).HorizontalAlignmentAs(HorizontalAlignment.Right)
            .Columns.Add(x => x.Name).VerticalAlignmentAs(VerticalAlignment.Center)
            .Columns.Add(x => x.Birthday).VerticalAlignmentAs(VerticalAlignment.Bottom).FormatAs("{0:yyyy/MM/dd}")
            .Columns.Add(x => x.Occupations).FormatAs("- {0}");
    })
    .WriteLine(users);

formatted.png

つぎの書式のカスタマイズをサポートとしています。

  • 列指定(もしくは列自動生成)
  • オブジェクトのフォーマット
  • 水平・垂直アライメント
  • 罫線文字の変更
  • マージンとパディング

マークダウン形式での出力にもサポートしています。

Build
    .MarkdownTable<User>()
    .WriteLine(users);

markdown.png

クイックスタート

.NET Framework 4.0以上、.NET Standard 2.0以上をサポートしています。NuGetからインストールして利用してください。

> Install-Package FluentTextTable

出力対象となるクラスを定義します。

public class User
{
    public int Id { get; set; }
    public string EnglishName { get; set; }
    public string JapaneseName { get; set; }
    public DateTime Birthday;
}

Buildクラスを利用して出力対象クラス用のテーブルを作成します。

デフォルトではpublicなプロパティ・フィールドのすべてが出力の対象となります。

var table = Build.TextTable<User>();

行に該当するオブジェクトを生成して、出力します。

var users = new[]
{
    new User {Id = 1, EnglishName = "Bill Gates", JapaneseName = "ビル・ゲイツ", Birthday = DateTime.Parse("1955/10/28")},
    new User {Id = 2, EnglishName = "Steven Jobs", JapaneseName = "スティーブ・ジョブズ", Birthday = DateTime.Parse("1955/2/24")}
};
Build
    .TextTable<User>()
    .WriteLine(users);

詳細な利用方法

Githubに利用方法をまとめています。

機会があればぜひご利用ください!

54
44
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
54
44