// parse the command line options internal OptionState ParseOption(string option) { string arg = option.ToUpperInvariant(); if (arg.StartsWith("OUT:", StringComparison.Ordinal)) { outName = option.Substring(4); if (outName.Equals("-")) { msgWrtr = Console.Error; } } else if (arg.StartsWith("FRAME:", StringComparison.Ordinal)) { userFrame = arg.Substring(6); } else if (arg.Equals("HELP", StringComparison.Ordinal) || arg.Equals("?")) { return(OptionState.needUsage); } else if (arg.Equals("ERRORSTOCONSOLE", StringComparison.Ordinal)) { errorsToConsole = true; } else if (arg.Contains("CODEPAGE") && (arg.Contains("HELP") || arg.Contains("?"))) { return(OptionState.needCodepageHelp); } else if (arg.StartsWith("CODEPAGE:", StringComparison.Ordinal)) { fallbackCodepage = CodePageHandling.GetCodePage(option); } else { bool negate = arg.StartsWith("NO", StringComparison.Ordinal); if (negate) { arg = arg.Substring(2); } if (arg.Equals("CHECK", StringComparison.Ordinal)) { checkOnly = !negate; } else if (arg.StartsWith("CASEINSEN", StringComparison.Ordinal)) { caseAgnostic = !negate; } else if (arg.StartsWith("LIST", StringComparison.Ordinal)) { listing = !negate; } else if (arg.Equals("SUMMARY", StringComparison.Ordinal)) { summary = !negate; } else if (arg.Equals("STACK", StringComparison.Ordinal)) { stack = !negate; } else if (arg.Equals("MINIMIZE", StringComparison.Ordinal)) { minimize = !negate; } else if (arg.Equals("VERSION", StringComparison.Ordinal)) { emitVer = !negate; } else if (arg.Equals("PARSEONLY", StringComparison.Ordinal)) { parseOnly = !negate; } else if (arg.StartsWith("PERSISTBUFF", StringComparison.Ordinal)) { persistBuff = !negate; } else if (arg.Equals("PARSER", StringComparison.Ordinal)) { hasParser = !negate; } else if (arg.Equals("BABEL", StringComparison.Ordinal)) { babel = !negate; } else if (arg.Equals("FILES", StringComparison.Ordinal)) { files = !negate; } else if (arg.StartsWith("EMBEDBUFF", StringComparison.Ordinal)) { embedBuffers = !negate; } else if (arg.Equals("INFO", StringComparison.Ordinal)) { emitInfo = !negate; } else if (arg.Equals("UTF8DEFAULT", StringComparison.Ordinal)) // Deprecated, compatability only. { if (negate) { fallbackCodepage = rawCP; } else { fallbackCodepage = utf8CP; } } else if (arg.Equals("COMPRESSMAP", StringComparison.Ordinal)) { compressMap = !negate; compressMapExplicit = true; } else if (arg.Equals("COMPRESSNEXT", StringComparison.Ordinal)) { compressNext = !negate; //compressNextExplicit = true; } else if (arg.Equals("COMPRESS", StringComparison.Ordinal)) { compressMap = !negate; compressNext = !negate; compressMapExplicit = true; //compressNextExplicit = true; } else if (arg.Equals("SQUEEZE", StringComparison.Ordinal)) { // Compress both map and next-state // but do not use two-level compression // ==> trade time for space. squeeze = !negate; compressMap = !negate; compressNext = !negate; compressMapExplicit = true; //compressNextExplicit = true; } else if (arg.Equals("UNICODE", StringComparison.Ordinal)) { // Have to do some checks here. If an attempt is made to // set (no)unicode after the alphabet size has been set // it is a command line or inline option error. int cardinality = (negate ? asciiCardinality : unicodeCardinality); useUnicode = !negate; if (targetSymCardinality == notSet || targetSymCardinality == cardinality) { targetSymCardinality = cardinality; } else { return(OptionState.alphabetLocked); } if (useUnicode) { charClasses = true; if (!compressMapExplicit) { compressMap = true; } } } else if (arg.Equals("VERBOSE", StringComparison.Ordinal)) { verbose = !negate; if (verbose) { emitVer = true; } } else if (arg.Equals("CLASSES", StringComparison.Ordinal)) { if (negate && useUnicode) { return(OptionState.inconsistent); } charClasses = !negate; } else { return(OptionState.errors); } } return(OptionState.clear); }
public Enumerator(Stream file, string codepage) { SetSource(file, CodePageHandling.GetCodePage(codepage)); }