public bool SetArguments(string[] args) { int index = 0; for (; index < args.Length; index++) { if (args[index][0] != '-') { break; } int length = args[index].Length; if (length < 2) { return(false); } CharacterSet characterSet = CharacterSet.UNKNOWN; Encoding encoding = null; string typeString = null; switch (args[index][1]) { case 'J': if (length < 3) { return(false); } switch (args[index][2]) { case 'H': characterSet = CharacterSet.HIRAGANA; break; case 'K': characterSet = CharacterSet.KATAKANA; break; case 'k': characterSet = CharacterSet.HALFKANA; break; case 'a': characterSet = CharacterSet.ASCII; break; default: return(false); } SetupKanjiConverter(characterSet); break; case 'H': if (length < 3) { return(false); } switch (args[index][2]) { case 'K': characterSet = CharacterSet.KATAKANA; break; case 'a': characterSet = CharacterSet.ASCII; break; default: return(false); } SetupHiraganaConverter(characterSet); break; case 'K': if (length < 3) { return(false); } switch (args[index][2]) { case 'H': characterSet = CharacterSet.HIRAGANA; break; case 'a': characterSet = CharacterSet.ASCII; break; default: return(false); } SetupKatakanaConverter(characterSet); break; case 'i': if (length > 2) { encoding = Encoding.GetEncoding(args[index].Substring(2)); } else if (++index < args.Length) { encoding = Encoding.GetEncoding(args[index]); } else { return(false); } input.SetReader(new StreamReader(Console.OpenStandardInput(), encoding)); break; case 'o': if (length > 2) { encoding = Encoding.GetEncoding(args[index].Substring(2)); } else if (++index < args.Length) { encoding = Encoding.GetEncoding(args[index]); } else { return(false); } output.SetWriter(new StreamWriter(Console.OpenStandardOutput(), encoding)); break; case 'p': HeikiMode = true; break; case 'f': FuriganaMode = true; break; case 'c': input.SpaceEatMode = true; break; case 's': output.SplitMode = true; break; case 'b': output.AutoFlushMode = false; break; case 'r': if (length > 2) { typeString = args[index].Substring(2); } else if (++index < args.Length) { typeString = args[index]; } else { return(false); } if ("hepburn".Equals(typeString, StringComparison.CurrentCultureIgnoreCase)) { RomajiType = RomanConversionType.HEPBURN; } else if ("kunrei".Equals(typeString, StringComparison.CurrentCultureIgnoreCase)) { RomajiType = RomanConversionType.KUNREI; } else { return(false); } break; case 'C': RomajiCapitalizeMode = true; break; case 'U': RomajiUpperCaseMode = true; break; case 'w': WakachigakiMode = true; break; default: return(false); } } for (; index < args.Length; index++) { kanwaDictionary.Load(args[index]); } return(true); }