Renkler ve Stiller ve Yeniden Kullanılabilirlik - Spectre Console Serisi
[[academy-video-youtube({"vid": "w4-YfRUawYM", "start_time": "0", "title": "Colorlar ve Stiller ve Yeniden Kullanılabilirlik - Spectre Konsol Serisi", "creator": "Tim Corey", "length": "9m 57s"})]]
Spectre Console, geliştiricilerin sıradan konsol uygulamalarını görsel açıdan zengin deneyimlere dönüştürmelerine olanak tanıyan güçlü bir NuGet paketidir. Spectre Console renklerini, metin süslemelerini ve yeniden kullanılabilir stillerini birleştirerek, sıradan bir konsol çıktısını hem bilgilendirici hem de cilalı bir şey haline getirebilirsiniz.
"Colorlar ve Stiller ve Yeniden Kullanılabilirlik - Spectre Console Serisi" başlıklı videosunda Tim Corey, tam olarak bunu nasıl yapacağınızı adım adım açıklıyor. Bu makalede, Tim'in yaptığı aynı noktalar üzerinden geçeceğiz ve izleyebilmeniz için zaman damgalarını göstereceğiz. Bu, renklerin, bir stil sınıfının ve hatta tekrar kullanım için yeni bir stil oluşturmanın nasıl yaratılacağını ve özelleştirileceğini anlamanın harika bir yolu.
Spectre Console Biçimlendirme Giriş
0:00 itibariyle, Tim Spectre Console'un "konsol uygulamalarınızı görsel olarak çekici, bilgilendirici uygulamalar yapmanıza" olanak tanıdığını açıklar. Bu serinin kütüphaneyi küçük parçalar halinde ayırdığını, böylece geliştiricilerin bir seferde bir özelliğe odaklanabileceklerini belirtir.
Açıklamadaki kaynak kod bağlantısına işaret eder ve kullanıcıları kanalına abone olmaya davet eder. Bu ders, konsol çıktısında biçimlendirilmiş metni nasıl ayarlayacağınızı ve geri döndüreceğinizi ve bu biçimleri programınızda yeniden kullanılabilir hale getirmenin yollarını odaklanır.
Inline Markup ve MarkupLine Kullanımı
0:36'da Tim, AnsiConsole.MarkupLine ve AnsiConsole.Markup'u göstererek başlıyor. Bu yöntemler, dize temsiline renkler ve süslemeler doğrudan yerleştirme yeteneği verir.
0:51'de Tim'in açıkladığı gibi, Markup otomatik olarak yeni bir satır eklemez, ancak MarkupLine ekler—"console.Write ile WriteLine arasındaki fark gibi." Bu fark, birden fazla öğe veya bir listeyi ayrı satırlarda göstermek istediğinizde önemlidir.
[red]Bu satır içi işarettir[/] yazıyor ve kırmızı dizeyi göstermek için çalıştırıyor. Sonra, 1:38'de, ön plan ve arka plan renklerini gösteriyor—"Beyaz Zeminde Kırmızı"—böylece kullanıcı kırmızı metni beyaz zemin üzerinde görebilir. 2:05'te süsleme olarak kalın ekliyor.
2:18'de Tim, satır içi işaretlemenin küçük işlemler için hızlı ve kolay olduğunu, ancak daha yapılandırılmış veya yeniden kullanılabilir tarzlar istediğinizde "gerçekten geri kalanlar için harika değil" olduğunu belirtiyor.

Önceden Ayarlanmış Bir Stil Sınıfı Oluşturma
2:32'de Tim, yeniden kullanım için bir stil sınıfının yeni bir örneğini nasıl oluşturacağını gösteriyor. Şunu yazar:
var dangerStyle = new Style(
foreground: Color.Red,
background: Color.White,
decoration: Decoration.Bold);var dangerStyle = new Style(
foreground: Color.Red,
background: Color.White,
decoration: Decoration.Bold);Burada Tim, kırmızı ön plan, beyaz arka plan ve kalın süsleme olan yeni bir stil içeren dangerStyle adında bir değişken atıyor. Ayrıca 3:26'da, her argümanı doldurmak zorunda olmadığınızı, ihtiyacınıza bağlı olarak sadece ön planı veya sadece süslemeyi seçebileceğinizi belirtiyor.
Bu sınıf tabanlı yaklaşım, stilinizi bir yerde güncelleme ve metin oluşturduğunuz her yerde tutarlı bir şekilde uygulama yeteneği verir, işaretleme etiketlerini tekrarlamak yerine.
Yeni İşaretleme ile Stiller Uygulama
3:48'de Tim, o stili nasıl uygulayacağını gösteriyor. Çünkü AnsiConsole.WriteLine stilleri doğrudan kabul etmez, stilinizi yeni işaretleme nesnesi ile AnsiConsole.Write ile kullanmak zorundasınız:
AnsiConsole.Write(
new Markup("Danger text from style", dangerStyle));AnsiConsole.Write(
new Markup("Danger text from style", dangerStyle));4:08'de sadece dize veya basit türleri kabul eden WriteLine'ın aksine, Write'ın bir IRenderable nesnesini kabul eden bir aşırı yüklemeye sahip olduğunu açıklıyor. Bu yüzden stilinizi yeni işaretlemeye geçirir ve sonra yazar.
Tim, 4:45'te bu sözdiziminin "biraz daha fazla iş" olduğunu belirtiyor, ancak şekilli metni gösterme için resmi yol. Eğer bunu sık sık yapıyorsanız, basitleştirmek için kendi yönteminizi oluşturmayı bile öneriyor.

Satır Ara ve İmleç Yerleşimi İşleme
Kodu çalıştırdıktan sonra, Tim 5:44'te imlecin şekilli metinle aynı satırda oturduğunu belirtiyor. Bunun nedeni, Write yeni bir satır eklememesi. 6:07'de bunu düzeltmek için dize içine \n ekleyerek imleci aşağı hareket ettirmenin yolunu gösteriyor.
Bu küçük numara, çıktınızın beklentinize uygun olmasını sağlar—kullanıcı girdisinin veya verinin şekilli bir prompttan sonra geldiği daha büyük konsol uygulamaları oluştururken önemlidir.
Birden Çok Süsleme Eklemek
Tim daha sonra süslemeleri birleştirmeyi gösteriyor. 6:27'de "Birden fazla süsleme uygulamak isterseniz ne olur?" diyor. Örneğin, italik de uygulamak istiyorum." Bunu, süslemeleri ayırmak için tek bir boru karakteri kullanarak yaparsınız.
Uzun bir süsleme listesinden seçim yapabileceğinizi gösteriyor—kalın, italik, üstü çizgili, altı çizgili, sönük, ters, yanıp sönme—ve hatta 7:05'te Windows PowerShell ve Windows Terminal desteğinden bahsediyor. Şu anda, yavaş yanıp sönme ve hızlı yanıp sönme Windows Terminal'de aynı görünüyor.
7:29'da kodu tekrar çalıştırıyor ve kalına ek olarak uygulanmış italik stilini gösteriyor. "Bunları karıştırıp istediğiniz gibi birleştirebilirsiniz," diyor Tim 7:49'da, tekrarlanabilir şekilde uygulayabileceğiniz stiller oluşturuyor.
Bu, hataları kırmızı ile vurgulamak, başarı mesajlarını yeşille, uyarıları sarı ile veya özel etiketleri mavi, mor, orkide veya hatta kestane rengi ile vurgulamak istediğinizde güçlü bir özelliktir—Spectre Console tam RGB renk setini destekler.
Satır İçi ve Önceden Ayarlanmış Stilleri Karıştırma
8:02'de Tim, farklı stillerle yazılar ve yazılar nasıl birleştirileceğini gösteriyor. AnsiConsole.Write'u birden fazla kez çağırabilir—önce şekilli metninizle, sonra şekilsiz veya farklı şekilde şekilli metinle—bir satırın sadece bir bölümünü vurgulamak için. Gösteriyor:
AnsiConsole.Write(new Markup("Danger text", dangerStyle));
AnsiConsole.WriteLine(" and more");AnsiConsole.Write(new Markup("Danger text", dangerStyle));
AnsiConsole.WriteLine(" and more");8:37'de Tim'in açıkladığı gibi, WriteLine yerine Write kullanılıyor: Metninizin sadece bir bölümünü normale döndürmeden önce vurgulamak isteyebilirsiniz.

Bu işlev size birleşik bir çıktı oluşturmanın esnek bir yolunu verir—belki bir veri tablosu, uzun süren çalışmalar için bir ilerleme çubuğu veya birçok sütundan oluşan bir panel oluşturmak için ve sadece belirli maddelere veya etiketlere stil uygulamak için.
Özet – Seçenekleriniz
9:01'e kadar, Tim seçenekleri özetliyor:
Hızlı biçimlendirme için text// ve Markup veya MarkupLine ile satır içi stil kullanın.
- Ya da AnsiConsole.Write çağırdığınızda Markup nesnelerine uygulayarak yeni bir style() ile yeni bir stil oluşturun.
Tim, izleyicilere 9:26'da "onları farklı renkler, arka planlar ve süslemeler ve diğer her şeyle deneyin" diyor. Bu, şekilli başlıklara sahip yeni tablolar oluşturmak, dosyalar veya öğe dizileri işlerken güncellenen bir ilerleme çubuğu eklemek veya hatta JSON verilerini şekilli bir görüntüye dönüştürmek içerir.
9:33'te izleyicilere teşekkür ederek ve Tim Corey olduğunu hatırlatarak kapatıyor. Bu dizi, Patrik Svensson tarafından oluşturulan ve Phil Scott gibi geliştiricilerin katkılarıyla oluşturulan Spectre Console kütüphanesine dayanıyor ve Tim'in videoları bu özellikleri hızlıca öğrenmenize yardımcı oluyor.
Sonuç
Tim Corey'nin videosu, Spectre Console'un sıradan konsol uygulamalarını nasıl görsel olarak çekici hale getirdiğini açıkça gösteriyor. Satır içi işaretlemeden tamamen yeniden kullanılabilir stil sınıflarına kadar o, ön plan ve arka plan renklerini, metin süslemelerini ve imleç yerleşimini nasıl kontrol edeceğinizi adım adım anlatıyor.
Yukarıdaki zaman damgalarıyla Tim'in örneklerini takip ederseniz, kendi konsol uygulamalarınıza kısa sürede profesyonel görünümlü stiller ekleyebileceksiniz—sözdizimini tahmin etmeden. Ve bir kere değişken atanmasını, süslemeler eklemeyi ve şekilli metin oluşturmayı bildikten sonra, bu becerileri demetler, paneller, ilerleme çubukları ve Spectre Console'un sunduğu diğer özellikleri oluşturmak için kolayca genişletebilirsiniz.
Tim'in dediği gibi, "Onları deneyin... ve nelerden hoşlandığınıza bakın."

