Konsolunuza Tablolar Ekleme - Spectre Console Serisi
Spectre.Console, güzel konsol uygulamaları oluşturmanıza yardımcı olan güçlü bir .NET kütüphanesidir. Düz metin çıktısı yerine, yapılandırılmış düzenler oluşturabilir, renkler kullanabilir ve hatta ilerleme çubukları veya etkileşimli istemler gösterebilirsiniz. Spectre Konsol Serisinde, Tim Corey bu kütüphaneden en iyi şekilde yararlanmayı küçük, pratik derslerle geliştiricilere gösteriyor.
Videosunda, "Konsolunuza Tablolar Ekleme - Spectre Console Serisi" Tim, Spectre.Console tablolarına odaklanıyor. Tablolar, hizalama, dolgu, kenarlıklar ve stillerle yapılandırılmış verileri göstermenize olanak tanıyan bir temel özelliktir. Bu özelliği nasıl kullanacağınızı tam olarak görmek için Tim'in yürüyüşünü daha detaylı inceleyeceğiz.
Spectre.Console ile Başlarken
Başlangıçta (0:00), Tim, Spectre.Console'un görsel açıdan çekici, bilgilendirici uygulamalar oluşturmanıza olanak tanıdığını açıklar. Spectre.Console adlı bir NuGet paketi olarak dağıtılır. Kolayca kurabilirsiniz:
// dotnet add package spectre console
dotnet add package Spectre.Console// dotnet add package spectre console
dotnet add package Spectre.ConsoleBir kez kurulduğunda, kütüphane, bir konsol uygulamasında bilgi sunmayı çok daha kolay hale getirir. Tim ayrıca video ile sağlanan dokümantasyon ve kaynak kod bağlantılarını daha fazla örnekle ilgilenenler için işaret eder.
İlk Tablonuzu Oluşturmak
Tim 0:35'te kodlamaya başlar. Bir Table nesnesi oluşturur:
var table = new Table();var table = new Table();Ardından, AddColumn ile üç sütun ekler:
table.AddColumn("First Name");
table.AddColumn("Last Name");
table.AddColumn("Age");table.AddColumn("First Name");
table.AddColumn("Last Name");
table.AddColumn("Age");Bu, temel yapıyı oluşturur. Her sütunun, daha sonra kendi genişliği, hizalaması ve stili olabilir olduğunu açıklar.
Ardından, AddRow ile satırlar ekler. Tim, 1:06'da, satır eklemenin üç desteklenen yolu olduğunu söyler:
IRenderable nesnelerin bir parametre listesi (iç içe öğeler için bir panel, başka bir tablo veya hatta çizelgeler gibi).
Dizelerin bir parametre listesi (en yaygın olanı).
- IEnumerable
(daha az yaygın ama mevcut).
İlk olarak ikinci seçeneği gösterir, ekleyerek:
table.AddRow("Tim", "Corey", "46");
table.AddRow("Sue", "Storm", "23");table.AddRow("Tim", "Corey", "46");
table.AddRow("Sue", "Storm", "23");İki satır veriyi tabloya yerleştirir. Saat 3:26'da Tim izleyenlere, terminalde bir IRenderable'ı tablo gibi görüntülemek için AnsiConsole.Write(table) (WriteLine'i değil) kullanmanız gerektiğini hatırlatır:
AnsiConsole.Write(table);AnsiConsole.Write(table);Programı çalıştırdığında, konsol düzgün biçimlendirilmiş bir tablo header ve satırlarla otomatik hizalanmış olarak görüntüler. Bir kaç satır kodla bile Spectre, konsol çıktısını çok daha profesyonel hale getirir.

Tabloyu Hizalama ve Genişletme
Saat 4:00'te Tim, tablonun ekrandaki konumunu nasıl kontrol edeceğinizi gösterir. Örneğin:
table.Centered();table.Centered();Bu, tüm tabloyu konsol penceresinin ortasında gösterecektir. Bu ayarın tüm tabloyu değil, sütunları etkilediğini açıklar. Ayrıca tabloyu sağa veya sola hizalayabilirsiniz. Varsayılan sol hizadır.

Saat 5:01'de table.Expand()'i gösterir, bu tabloyu terminal penceresinin tüm genişliğini doldurur. Genişletildiğinde, merkezleme etkisi olmaz çünkü tablo artık tüm kullanılabilir alanı kaplar. Varsayılan, daraltılmış bir tablodur.

Kenarlar Eklemek ve Terminal Desteğini Anlamak
Sonrasında, Tim 5:21'de bir kenarlık ekliyor:
table.Border(TableBorder.Rounded);table.Border(TableBorder.Rounded);Uygulamayı Visual Studio'nun konsolunda çalıştırır ve köşelerin yuvarlatılmadığını fark eder. 5:54'te Windows Terminal'e geçiyor ve yeniden çalıştırıyor — şimdi yuvarlatılmış köşeler görünüyor.
Tim, (5:59) sunduğunuz terminale bağlı olarak oluşturma yeteneklerinin değiştiğini açıklıyor. Alttaki kabuk yalnızca çıktıyı sağlar; terminal ise hangi stilleri görüntüleyebileceğine karar verir. Windows Terminal yuvarlak kenarlık karakterlerini destekler; Visual Studio'nun entegre konsolu desteklemez. Aynı durum, ekleyebileceğiniz renkler, işaretleme veya italik, altı çizili ya da kalın metin stilleri için de geçerlidir.
7:01'de .NET Geliştirici Komut İstemcisi'nin bile Visual Studio dışında doğru şekilde çalıştığını gösteriyor çünkü farklı bir terminal kullanıyor. Spectre özelliklerini, ilerleme çubukları, uzun süreli görevler veya tablolar gibi denerken akılda tutulması gereken önemli bir nokta: Her terminal her stili görüntüleyemez.
Satır Ayırıcılar Ekleme
Tim ayrıca, netlik için satırlar arasında ayırıcılar gösterebileceğinizi belirtiyor:
table.ShowRowSeparators();table.ShowRowSeparators();Bu, her satır arasında yatay bir çizgi çizer ve bu, daha büyük tablolarda bilgileri taramayı kolaylaştırabilir — özellikle çok sayıda çıktı görüntüleyen veya argümanları dinamik olarak işleyen CLI araçları oluşturuyorsanız.
Sütun Düzeyinde Stil: Dolgu, Genişlik, Hizalama
Spectre.Console tablolarının güçlü yönlerinden biri, her sütunu ayrı ayrı ne kadar özelleştirebileceğinizdir. 8:02'de, Tim ilk sütunu değiştirir:
table.Columns[0].PadLeft(5).PadRight(5);table.Columns[0].PadLeft(5).PadRight(5);Bu, metnin her iki tarafına da dolgu ekler. Ardından, ikinci sütunda sabit bir genişlik ayarlar:
table.Columns[1].Width(15);table.Columns[1].Width(15);Son olarak, o sütunun içeriğini sağa hizalar:
table.Columns[1].RightAligned();table.Columns[1].RightAligned();O, programı tekrar 9:10'da çalıştırdığında, ilk sütunun dolgu eklenmiş, ikinci sütunun sabit bir genişliğe ayarlanmış olduğunu ve içeriğin sağa hizalanmış olduğunu görebilirsiniz. Başlık metni bile bu ayarları dikkate alır. Tim, genişliklerin piksel değil, karakter olarak ölçüldüğünü belirtiyor (8:42).
Bu küçük dokunuşlar — dolgu, hizalama ve sabit genişlikler — konsol uygulamalarınızı çok daha okunabilir hale getirir. Spectre'nin renkleri, işaretleme ve panelleri ile birleştirildiğinde, tamamen bir konsolda çalışan ancak bir GUI'ye daha yakın hissi veren bir çıktı oluşturabilirsiniz.

IEnumerableile Satır Ekleme
9:25'te Tim, bir satır eklemenin üçüncü yolunu gösteriyor — IEnumerable
var person = new List<Text>
{
new Text("Bilbo"),
new Text("Baggins"),
new Text("111")
};
table.AddRow(person);var person = new List<Text>
{
new Text("Bilbo"),
new Text("Baggins"),
new Text("111")
};
table.AddRow(person);Bu, bir koleksiyon kullanarak başka bir satır ekler. Tim, bu seçeneğin günlük kodlarda "çok faydalı olmadığını" belirtmektedir, ancak bir dosyadan gelen veriler, bir birim test çerçevesi veya interaktif bir istem gibi başka bir kaynaktan dinamik olarak satır üretiyorsanız desteklenmektedir.

Özetle
Videonun (9:59) sonunda Tim, özetliyor: Spectre.Console tabloları, bilgileri düzenli ve yapısal bir şekilde sunma konusunda size çok fazla güç sunar. Tablonun hizalamasını, genişliğini ve kenarlık stilini kontrol edebilir, satır ayırıcıları ekleyebilir, sütunlara dolgu uygulayabilir ve hatta panelleri veya diğer renderlanabilir öğeleri gömebilirsiniz.
Kütüphane, modern CLI tasarımından yoğun biçimde ilham aldığından, yalnızca tabloları değil; uzun süren işlemler için ilerleme göstergelerini, grafikleri, kalın, italik, altı çizili ve renkli (mavi veya yeşil metin gibi) metin için işaretlemeyi ve çok daha fazlasını destekler. Tim, izleyicilere belgeleri incelemelerini ve örnekleri denemelerini teşvik ederek Spectre'nin konsol çıktısını nasıl daha ilgi çekici hale getirebileceğini görmelerini öneriyor.
Tim Corey'nin adım adım gösterimini takip ederek, Spectre.Console'un nasıl minimum çabayla güzel konsol uygulamaları oluşturmanıza olanak tanıdığını göreceksiniz. NuGet paketini yükleyin, API'yi keşfedin ve bugün sıradan konsol çıktınızı yapılandırılmış, stilli gösterimlere dönüştürmeye başlayın.

