コード例 #1
0
ファイル: Program.cs プロジェクト: sarrowsmith/DMRNG
    static void Main(string[] args)
    {
        int    number    = 1;
        string source    = "";
        int    maxLength = 20;
        string seed      = null;
        bool   showHelp  = false;

        var p = new OptionSet()
        {
            { "n|number=", "the {NUMBER} of names to generate.",
              (int v) => number = v },
            { "s|seed=", "use {SEED} to seed the randomness.",
              v => seed = v },
            { "m|max-length=", "the {MAXIMUM_LENGTH} of name to generate.",
              (int v) => maxLength = v },
            { "h|help", "show this message and exit",
              v => showHelp = v != null },
        };

        try
        {
            List <string> extra;
            extra = p.Parse(args);
            if (extra.Count > 0)
            {
                source = extra[extra.Count - 1];
            }
        }
        catch (OptionException e)
        {
            Console.WriteLine(e.Message);
            showHelp = true;
        }

        if (showHelp)
        {
            ShowHelp(p);
            return;
        }

        StreamReader reader;

        if ((source == "" || source == "-") && Console.IsInputRedirected)
        {
            reader = new StreamReader(Console.OpenStandardInput(), Console.InputEncoding);
        }
        else
        {
            reader = new StreamReader(source);
        }
        using (reader) {
            source = reader.ReadToEnd();
        }

        RandomNameGenerator rng = seed == null ?
                                  new RandomNameGenerator(source, maxLength) :
                                  new RandomNameGenerator(Utils.Hash(seed), source, maxLength);

        for (; number > 0; --number)
        {
            Console.WriteLine(rng.Next());
        }
    }