//
// Copyright (c) 2002
// Ronald Kevin Burton
//
// Z poniższym kodem nie jest związana żadna gwarancja poprawności działania.
// Program został dołączony do książki ".NET CLR. Księga eksperta" w celu
// ilustracji koncepcji i zasad przedstawionych w tej książce. Program może być 
// używany na własne ryzyko.
//
// Przyznaje się prawo do użycia lub kopiowania tego oprogramowania do dowolnego celu
// bez konieczności ponoszenia żadnych opłat pod warunkiem, że powyższe uwagi zostaną 
// zachowane we wszystkich kopiach. Przyznaje się także prawo do modyfikacji kodu
// i dystrybucji zmodyfikowanego kodu pod warunkiem zachowania powyższych uwag
// oraz dołączenia informacji mówiącej o modyfikacji kodu.
//
// 
using System;
using PerlWordCount;

class main
{
    public static void Main(string[] args)
    {
        String text = "The quick brown fox jumps over the lazy dog.";

        // Utworzenie nowego obiektu 'PerlWordCount.WordCount'; należy pamiętać o jego 
        // późniejszym usunięciu.
        using (WordCount obj = new WordCount(text)) {

            // Uzyskanie właściwości 'Text'
            Console.WriteLine("Text is '{0}'", obj.Text);

            // Ustawienie właściwości 'Text'
            obj.Text = "To be or not to be?";

            // Metoda 'Count' bez argumentów zwraca liczbę słów
            Console.WriteLine("Odnaleziono {0} różnych słów w '{1}'",
                              obj.Count(), obj.Text);

            // Metoda 'Words' zwraca tablicę 'String[]'
            // Metoda 'Count' zwraca liczbę wystąpień słowa
            foreach (String word in obj.Words())
                Console.WriteLine("{0} pojawia się {1} raza(y)", word, obj.Count(word));

            // Wywołanie 'Count' dla słowa nieznajdującego się w 'Text' powoduje zgłoszenie wyjątku
            try {
                String word = "nieznany";
                Console.WriteLine("{0} pojawia się {1} raza(y)", word, obj.Count(word));
            }
            catch (Exception e) {
                Console.WriteLine("Wyjątek: {0}", e.Message);
            }
        }
    }
}
