Help us understand the problem. What is going on with this article?

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

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

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

これは何?

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に利用方法をまとめています。

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away