2015-10-16 Giacomo Stelluti Scala * PR #255 fixes Issue #254 by @scadorel Merged. 2015-09-22 Giacomo Stelluti Scala * Issue #241 (reported by @pvmraghunandan) Fixed. 2015-09-13 Giacomo Stelluti Scala * Added properties test project using FsCheck. 2015-09-07 Giacomo Stelluti Scala * Internal refactoring on OptionMapper. 2015-09-03 Giacomo Stelluti Scala * Updated RailwaySharp source reference. 2015-09-02 Giacomo Stelluti Scala * PR #231 (by @kshanafelt) Merged. 2015-08-29 Giacomo Stelluti Scala * Internal refactoring. 2015-08-27 Giacomo Stelluti Scala * PR #227 (by @cfeilen) Merged. 2015-08-24 Giacomo Stelluti Scala * PR #227 (by @Thilas) Merged. * Reverted back to Tuple<...> instead of TokePartitions type. 2015-08-20 Giacomo Stelluti Scala * All ParserResult.Return renamed to MapResult. 2015-08-19 Giacomo Stelluti Scala * Issue #225 (reported by @rmunn) Fixed. * Issue #225/b (reported by @rmunn) Fixed. 2015-08-15 Giacomo Stelluti Scala * Centralizing Tokenizer configuration. 2015-08-14 Giacomo Stelluti Scala * Internal refactoring. 2015-08-13 Giacomo Stelluti Scala * Replacing Either with Result. 2015-08-10 Giacomo Stelluti Scala * Internal refactoring. 2015-08-07 Giacomo Stelluti Scala * Renaming tests fakes. * Issue #220 Implemented. 2015-08-06 Giacomo Stelluti Scala * PR #216 (by @Thilas) Merged. 2015-08-05 Giacomo Stelluti Scala * Issue #218 Fixed (IgnoreUnknownArguments). 2015-08-03 Giacomo Stelluti Scala * Issue #65 (re) Fixed for 2.0.x library. 2015-08-02 Giacomo Stelluti Scala * Changes in usage text handling. * PR #215 (by @Thilas) Merged. 2015-08-01 Giacomo Stelluti Scala * Fixing XML comments. 2015-07-31 Giacomo Stelluti Scala * Issue #210 (reported by @mac2000) Implemented. * Test refactorings. 2015-07-30 Giacomo Stelluti Scala * Issue #208 Implemented (extended usage text support). * Minor HelpText refactorings. 2015-07-28 Giacomo Stelluti Scala * Internal refactorings. 2015-07-27 Giacomo Stelluti Scala * Added FormatCommandLine() overload with settings. 2015-07-26 Giacomo Stelluti Scala * ParserResult internally refactored, minor breaking changes to HelpText. * Internal refactorings. 2015-07-25 Giacomo Stelluti Scala * Adding unparse support. * PR #207 Merged. * Using new Paket-friendly CSharpx and RailwaySharp. * Added F# option support to FormatCommandLine(). 2015-07-23 Giacomo Stelluti Scala * Test project refactoring. 2015-07-21 Giacomo Stelluti Scala * Internal refactorings (using CSharpx.EnumerableExtensions). * PR #205 (by @forki) Merged. * Internal refactorings. * Refactoring with RailwaySharp.ErrorHandling. 2015-07-20 Giacomo Stelluti Scala * Issue #203 Implemented * Internal refactorings. * Issue #204 (reported by @Kimi-Arthur) Fixed. * TypeConverter refactored with CSharpx.Either. 2015-07-19 Giacomo Stelluti Scala * Managing deps with Paket. 2015-07-18 Giacomo Stelluti Scala * Issue #202 (reported by @StevenLiekens) Fixed. * Internal refactorings in rule enforcement. * Added a test for #202, method rewritten and (re)fixed. * More internal refactorings in rule enforcement. 2015-07-15 Giacomo Stelluti Scala * Reverting back suprflous check. 2015-07-14 Giacomo Stelluti Scala * PR #197 (by @Thilas) Implemented. 2015-07-13 Giacomo Stelluti Scala * Internal refactorings in CopyrighInfo, HeadingInfo. 2015-07-12 Giacomo Stelluti Scala * Internal refactorings in HelpText. 2015-07-10 Giacomo Stelluti Scala * Issue #191 (--version\version added to help screen) Fixed. * Issue #162 (`ValueAttribute` handled in help screen) Implemented. 2015-07-09 Giacomo Stelluti Scala * Issue #189 Implemented. * Issue #190 Fixed/Implemented (--help/--version/version for verbs). * Internal refactorings in InstanceChooser. * Issue #188 Fixed. 2015-07-08 Giacomo Stelluti Scala * Automatic --version handling. * Added C# demo. * Internal refactorings in HelpText. 2015-07-07 Giacomo Stelluti Scala * Added WithParsed() for verbs. * Added Return() for verbs. 2015-07-06 Giacomo Stelluti Scala * Issue #183 Fixed by @Thilas. * Issue #183 reported by @Thilas Fixed. * Default '--help' command refactored. 2015-07-05 Giacomo Stelluti Scala * Added Return(...) to ParserResult. 2015-07-04 Giacomo Stelluti Scala * Issue #180 Implemented. * Issue #181 Implemented. 2015-07-03 Giacomo Stelluti Scala * Issue #179 Implemented. 2015-07-02 Giacomo Stelluti Scala * PR #123 by @smbecker Merged. * Fixes. 2015-06-30 Giacomo Stelluti Scala * Internal refactorings. * Support for immutable types. * Fixes. 2015-06-29 Giacomo Stelluti Scala * Issue #112 Fixed. 2015-06-28 Giacomo Stelluti Scala * Internal refactorings. 2015-06-27 Giacomo Stelluti Scala * Disallowed Min=Max=0 for sequences, raising exception. * Issue #177 Fixed. 2015-06-26 Giacomo Stelluti Scala * Added support for FSharpOption. 2015-06-25 Giacomo Stelluti Scala * Issue #155 Fixed (thanks to @guyzeug). 2015-06-24 Giacomo Stelluti Scala * PR #171 merged. 2015-06-23 Giacomo Stelluti Scala * Issue #172 Fixed. 2015-06-22 Giacomo Stelluti Scala * Fixing FAKE build script. 2015-06-20 Giacomo Stelluti Scala * Internal refactorings. * New tests added. 2015-06-20 Giacomo Stelluti Scala * Removed reduntant internal params null checks. 2015-06-19 Giacomo Stelluti Scala * Better GetHashCode() implementations. 2015-06-19 Giacomo Stelluti Scala * Adding more tests for token partitioners. * Fix in Sequence.Partition(). * Sequence.Partition() rewritten. * Refactoring for Increase Testability. * Little change to allow .NET 4.5 build. 2015-06-18 Giacomo Stelluti Scala * Important fix on scalar string value adjacent to string sequence (without constraints). * Refactoring for Increase Testability. 2015-06-17 Giacomo Stelluti Scala * Fixing Issue #164. 2015-06-16 Giacomo Stelluti Scala * Increased test coverage using theories. 2015-06-15 Giacomo Stelluti Scala * Fixing Issue #159. * Fixing Issue #160. * Fixing Issue #161. 2015-06-13 Giacomo Stelluti Scala * Chaning Separator from string to char. * Fixing Issue #157. 2015-06-12 Giacomo Stelluti Scala * Issue #68, option list behaviour. 2015-06-10 Giacomo Stelluti Scala * Pull request #154 merged. 2015-06-07 Giacomo Stelluti Scala * Pull request #144 merged. 2015-06-06 Giacomo Stelluti Scala * Pull request #119 merged. 2015-06-05 Giacomo Stelluti Scala * Pull request #103 merged (solving conflicts). 2015-06-04 Giacomo Stelluti Scala * Pull request #97 merged. 2015-06-03 Giacomo Stelluti Scala * Pull request #87 merged. * Pull request #95 merged. 2013-04-26 Giacomo Stelluti Scala * Released pre-release of Version 2.0. 2013-02-27 Giacomo Stelluti Scala * Implicit name is now available on OptionAttribute and OptionListAttribute (added tests). 2013-02-26 Giacomo Stelluti Scala * Reduced mutability of ParserSettings, instance can be used once. * Internal refactoring. - some particular System.String extensions moved to ArgumentParser as made private. 2013-02-25 Giacomo Stelluti Scala * Reverted same StyleCop default (see doc/Contribution). * tools/invariantstrtool.exe replaced by T4 template (project removed from GitHub). * Removed superfluous abstraction. * Removing IParserSettings, other superfluous abstraction. * Applied KISS (keep it simple, stupid): removed nested ParserConfigurator in favor of Parser(Action) new CommandLine.Parser ctor. * Second KISS, removed IParser. 2013-02-23 Giacomo Stelluti Scala * When omitting longName default is property name (lower case) as issue #57. * ParserConfigurator made nested type of Parser. * ParserConfigurator::HelpWriter(TextWriter) renamed to ParserConfigurator::UseHelpWriter(...). 2013-02-22 Giacomo Stelluti Scala * Reverting back genericity from IParser. 2013-02-21 Giacomo Stelluti Scala * HelpText, internal refactoring to safely suppress a CodeAnalysis warning. * Namespace Core renamed Infrastructure. * Extensions methods refacored in one class per group. * Fixed issue #6. * Using VSSTUDIO CodeAnalysis instead of FxCop. * CSharp and VB.NET template updated. * Minor refactoring on HelpText. 2013-02-19 Giacomo Stelluti Scala * Trying to tatally complying to naming rules (see doc/Contributors). * Parser.cs passed to StyleCop (skipped secondary rules -> will complied as a whole). * Refactored unit test specific code in CommandLine.Parser with a delegates. * StyleCop applied also to: ParserConfigurator, ParserContext, IParserSettings, ParserSettings, ParserState. * Parser.cs -> internal refactoring. * StyleCop: ParsingError, ParserException, BadOptionInfo, HelpText, HeadingInfo, FormatOptionHelpTextEventArgs, EnglishSentenceBuilder, CopyrightInfo, BaseSentenceBuilder. * StyleCop: ReflectionUtil, ReflectionCache, Pair, Assumes, ValueMapper, PropertyWriter, StringArrayEnumerator, OptionMap, OptionInfo, OptionGroupParser, OneCharStringEnumerator, LongOptionParser, ArgumentParser. * StyleCop: Attributes namespace (all important warnings solved). * StyleCop: FULL COMPLIANT. * Attributes in Text namespace moved to root namespace (issue #56). * Parser class (made sealed): - ALL bool ParseArguments(...) overload removed and replaced by: bool ParseArguments(string[] args, T options) where T : class bool ParseArguments(string[] args, T options, Action onVerbCommand) where T : class - ALL bool ParseArgumentsStrict(...) overload removed and replaced by: bool ParseArgumentsStrict(string[] args, T options, Action onFail = null) where T : class bool ParseArgumentsStrict(string[] args, object options, Action onVerbCommand, Action onFail = null) where T : class - bool WasVerbOptionInvoked(string verb) removed replaced by: bool ParseArguments(...,Action onVerbCommand,...), bool ParseArgumentsStrict(...Action onVerbCommand,...) - static object GetVerbOptionsInstanceByName(string verb, object target, out bool found) marked obsolete use HelpText::AutoBuild(object,string) * HelpText class: - added HelpText::AutoBuild(object,string) 2013-02-18 Giacomo Stelluti Scala * Added nuget_nuspec task to Rakefile. * Added OptionInfo::ReceivedValue to solve an issue in OptionMap::EnforceRequiredRule (see issue #15). 2013-02-17 Giacomo Stelluti Scala * Fix: a strict overload ParseArguments(string[],object,TextWriter,int) has wrong name (oops); renamed ParseArgumentsStrict(string[],object,TextWriter,int). 2013-02-16 Giacomo Stelluti Scala * Added ParsingCulture to IParserSettings. * PropertyWriter, OptionInfo and ValueMapper now accepts CultureInfo in constructor. * Changed a pair of tests to be compliant and verify. * Default singleton parsing culture is CultureInfo.InvariantCulture. * Version incremented to 1.9.4.225 beta. 2013-02-12 Giacomo Stelluti Scala * Minor generalized internal refactoring. * Version incremented to 1.9.4.221 beta. 2013-02-12 Giacomo Stelluti Scala * Consolidating pull request #52 by @mizipzor. * Version incremented to 1.9.4.219 beta. 2013-02-11 Giacomo Stelluti Scala * Defined IParserSettings. Now ParserSettings implements this interface. * IParser and Parser depends on IParserSettings rather on default implementation. * Version incremented to 1.9.4.217 beta. 2013-02-06 Giacomo Stelluti Scala * Solved an issue came out when solving https://github.com/gsscoder/commandline/issues/49 (see VerbsFixture.cs#172). * Version incremented to 1.9.4.215 beta. 2013-02-02 Giacomo Stelluti Scala * ParsingErrorsHandler delegate replaced by Action. * Fixed an issue with OptionMap test internal constructor. * Version incremented to 1.9.4.211 beta. 2013-01-31 Giacomo Stelluti Scala * Added readonly property Settings of type ParserSettings to IParser, Parser. * Added ParserConfigurator to configure the parser with lambda expressions (see isse #42). * Version incremented to 1.9.4.209 beta. 2013-01-31 Giacomo Stelluti Scala * Namespace '.Internal' renamed to '.Core'. * Types with extension methods moved to new namespace Extensions (following my latest conventions). * Utility types moved to new Helpers namespace. * Text/Attributes moved to {root}/Attributes folder. * CommandLineParser renamed to Parser (yes, I finally dit it!). - ICommandLineParser -> IParser - CommandLineParserSettings -> ParserSettings - CommandLineParserException -> ParserException * FxCop can scan Debug assembly (because now Debug == Release assembly). * Version incremented to 1.9.4.207 beta. 2013-01-29 Giacomo Stelluti Scala * Better constructor chaining in CommandLineParserSettings. * ReflectionUtil leaved open for testing also in Release build (I'll try to remove S symbol in every part of the project). * Removed conditional compylation symbol #UNIT_TESTS from OptionAttribute.cs. * Removed conditional compylation symbol #UNIT_TESTS from ArgumentParser.cs. * Removed conditional compylation symbol #UNIT_TESTS from OptionInfo.cs. * Used same key to sign both assemblies (main, tests). * Removed DebugTests compilation target (tied to #UNIT_TESTS symbol). * Added xunit.runners to solution. * Removed CommandLine.Dist.sln, xbuild replaced by mdtool. * Rakefile now build and test as whole. * Version incremented to 1.9.4.205 beta. 2013-01-28 Giacomo Stelluti Scala * All name of test fixture methods changed to a new convention (e.g.: A_descriptive_assertion) using https://gist.github.com/4655503. 2013-01-27 Giacomo Stelluti Scala * Started refactoring on test project (migrating from NUnit to Xunit). 2013-01-27 Giacomo Stelluti Scala * Fixed an issue in Rakefile. Now 'test' task is separeted form 'build' (defualt). 2013-01-27 Giacomo Stelluti Scala * Thanks to github user @marcells, we can reference CommandLine.dll from CommandLine.Tests.dll keeping strong name. * Used Fluent Assertions (http://nuget.org/packages/FluentAssertions/) because signed. * Version incremented to 1.9.4.203 beta. 2013-01-25 Giacomo Stelluti Scala * Implemented issue #33 (https://github.com/gsscoder/commandline/issues/33) that introduces ValueOptionAttribute. * Internal Target type renamed to ValueMapper. * OptionInfo property writing primitives refactored in PropertyWriter type. * Added ValueOptionAttributeParsingFixture and new mock types. * Version incremented to 1.9.4.201 beta. 2013-01-24 Giacomo Stelluti Scala * Sources in Utils dir moved to CommandLine.Utils namespace. * Added type TargetExtensions to increase readability/reuse of code (now with ReflectionCache we can query target instance without fear of performance loss). * CommandLineParser refactored (also using new ParserContext type). * Removed uncalled private code where detected by FxCop (CA1811). * Minor generalized refactoring. * Version incremented to 1.9.4.139 beta. 2013-01-24 Giacomo Stelluti Scala * src/CommonAssemblyInfo.cs generated with Rakefile.rb. 2013-01-23 Giacomo Stelluti Scala * All CommandLineParser partials merged. * ReflectionUtil now caches data using ReflectionCache. * Version incremented to 1.9.4.131 Beta. 2013-01-23 Giacomo Stelluti Scala * Enum Internal.ParserState renamed to PresentParerState to avoid confusion with class ParserState. * TargetWrapper renamed to Target. * Version incremented to 1.9.4.129 Beta. 2013-01-22 Giacomo Stelluti Scala * FxCop SuppressMessage attributes placed in right place (near source of issue). 2013-01-22 Giacomo Stelluti Scala * Refactored BaseOptionAttribute to avoid virtual member call in ctor in OptionAttribute (FxCop CA2214). * OptionArrayAttribute and OptionListAttribute inherits directly from BaseOptionAttribute. This allows to make OptionAttribute sealed (FxCop CA1813). * Also VerbOptionAttribute derives now from BaseOptionAttribute. * OptionInfo, OptionMap, ReflectionUtil modified to work directly with BaseOptionAttribute. * Version incremented to 1.9.4.127 Beta. 2013-01-22 Giacomo Stelluti Scala * Added solution folder "Files" to CommandLine.sln. * OptionMap constructor is now private. Instance is now created by two factory methods '::Create()' derived by 'OptionInfo::CreateMap()'. * OptionInfo.verbs.cs merged with OptionInfo.cs * Added rake task 'strings' to regenerate SR.string.cs from SR.string. * Version incremented to 1.9.4.125 Beta. 2013-01-22 Giacomo Stelluti Scala * CommandLine.snk regenerated, the current prevented the build process. 2013-01-20 Giacomo Stelluti Scala * Types renamed to comply naming rules (FxCop CA1711): - (breaking) HandleParsingErrorsDelegate to ParsingErrorsHandler. - (breaking) MultiLineTextAttribute to MultilineTextAttribute. * HelpText::AutoBuild removed default parameter, created overload (FxCop CA1026). * HelpText::MessageEnum removed as no more used. * VerbOptionAttribute made sealed as it should be from begin(FxCop CA1813). * Added property getter to (FxCop CA1044): - HelpText::Copyright - HelpText::Heading - CommandLineParserSettings::* (internal -> public) * Added property getter to (FxCop CA1019): - MultilineTextAttribute - ValueListAttribute (::ConcreteType, internal -> public). * Attributes AssemblyLicenseAttribute and AssemblyUsageAttribute set to ComVisible=false as the entire assembly(FxCop CA1405). * StringUtil -> StringExtensions, we can use extension method because the required compatibility is C# 3.0 compiler. * Fixed disposable pattern implementation in CommandLineParser and CommandLineParserSettings. * CommandLineParserException no more sealed and externally creatable. * Version incremented to 1.9.4.123 Beta. 2013-01-20 Giacomo Stelluti Scala * Removed synchronization from OptionInfo and TargetWrapper: elaboration occurs in one method call (::ParseArguments) and should not be divided across threads. If yes, synchronization must be provided by developer not by the library. * Version incremented to 1.9.4.121 Beta. 2013-01-20 Giacomo Stelluti Scala * Source in Core dir (public types) placed in tree root. * Project SampleApp renamed to CommandLine.Demo (+ minor refactoring, better comments). * Version incremented to 1.9.4.119 Beta. 2013-01-19 Giacomo Stelluti Scala * Updated SR.strings.cs and tools/invariantstr.exe. * Used correct NUnit version from NuGet (removed from tools dir). * Updated Rakefile.rb. 2013-01-18 Giacomo Stelluti Scala * Added first draft of Rakefile.rb to source tree root. * Dropped unmantained NAnt stuff. * Added correct NUnit version in tools dir (NuGet -> NUnit.Runners do not work!). 2013-01-17 Giacomo Stelluti Scala * SR.string[.cs] managed with tools/invariantstr.exe (https://github.com/gsscoder/invariantstrtool). * Version incremented to 1.9.4.117 Beta. 2013-01-17 Giacomo Stelluti Scala * Fixed issue #45 reported by @mizipzor (Alexander Fast). * Version incremented to 1.9.4.115 Beta. 2013-01-17 Giacomo Stelluti Scala * Added CommandLineParser::WasVerbOptionInvoked to check for selected verb in a more clean way. * Version incremented to 1.9.4.113 Beta. 2013-01-17 Giacomo Stelluti Scala * CommandLineParserSettings now implements IDisposable (it owns a TextWriter). * CommandLineParser now implements IDisposable (it owns CommandLineParserSettings that now is dispsable). * Version incremented to 1.9.4.111 Beta. 2013-01-16 Giacomo Stelluti Scala * Merged pull request #44 from @dbaileychess (Derek Bailey) that adds MetaKey to BaseOptionAttribute (similar to python argparse). * Version incremented to 1.9.4.109 Beta. 2013-01-16 Giacomo Stelluti Scala * Implemented 'strict parsing' as required by contributor Dan Nemec (github nemec) in issue #32. * Defined message for some internal (developers eyes only) exceptions and placed in class CommandLine.Internal.SR (simulating but without real resources). * Fixed some verb commands issues. * Added unit tests for 'strict parsing'. * Version incremented to 1.9.4.107 Beta. 2013-01-16 Giacomo Stelluti Scala * Removed recently added #define directives. * Project tree reorgranized (removed Verbs dir). * Version incremented to 1.9.4.101 Beta. 2013-01-11 Giacomo Stelluti Scala * Removed dependency from CommandLineOptionsBase. Used instead an attribute named ParserStateAttribute mapped on a property of type IParserState (provides get accessor to let the library creates a default instance for you. * Some minor refactoring (private methods, parameters name changed). * Version incremented to 1.9.4.99 Beta. 2013-01-11 Giacomo Stelluti Scala * Manually merged contribution by github user rkayman (Robert Kayman) that extend use of MultiLineTextAttribute (and hence derived types). * Version incremented to 1.9.4.97 Beta. 2013-01-10 Giacomo Stelluti Scala * Source splitted again putting each type in its .cs file. * Version incremented to 1.9.4.95 Beta. 2013-01-10 Giacomo Stelluti Scala * Merged pull request #25 from contributor mizipzor. * Version incremented to 1.9.4.93 Beta. 2013-01-09 Giacomo Stelluti Scala * API change 00: in ctor string shortName -> char; property string ShortName -> char? - BaseOptionAttribute - HelpOptionAttribute - OptionAttribute - ParsingEror - BadOptionInfo * API change 01: short name with whitespace/line terminator is not allowed. - BaseOptionAttribute (enforced in ShortName::set) - tests/AttributesFixture.cs * API change 02 (extension/non breaking): verbs - tests/Mocks/OptionsWithVerbs.cs added - tests/Mocks/OptionsWithVerbsHelp.cs added - tests/Parser/VerbsFixture.cs added - tests/Text/VerbsHelpTextFixture.cs added - CommandLine.cs - BaseOptionAttribute::DefaultValue and ::ShortName made virtual - CommandLineParserSettings::StringComparison member added - ReflectionUtil::RetrieveOptionProperty member added - introduced CMDLINE_VERBS preprocessor "public" directive (other are for "internal" use) - CommandLineVerbs.cs added to implement verb commands (module is optional at source code level) - #Core# -> expanded OptionInfo implementation - #Attributes# -> VerbOptionAttribute added (inherits from OptionAttribute) -> HelpVerbOptionAttributed added (inherits from BaseOptionAttribute directly) - #Parser# -> expanded CommandLineParser implementation - CommandLineText.cs - added a trivial optional parameter to HelpText::AutoBuild for supporting verbs * Comments: added missing comments to MultiLineTextAttribute type. * IArgumentEnumerator doesn't inherit anymore from IDisposable (it was only a legacy of old design). * Internal types moved to namespace CommandLine.Internal. * ParsingError made sealed. * License year range updated in code license region/comment. * Code formatting - privates (except ctor) moved at the end of types. - braces around allo blocks (also one line code blocks). - no braces on same construct line: - except when all in one line - except for object initializers - some blank line removed for favor source inclusion. * Version incremented to 1.9.4.91 Beta. 2012-12-22 Giacomo Stelluti Scala * Extended use of Should.Fluent to whole test project. * Version incremented to 1.9.3.34 Stable. 2012-12-15 Giacomo Stelluti Scala * Test project refactored. * Adopting Should.Fluent assertion library in unit tests. * Version incremented to 1.9.3.33 rc1. 2012-12-14 Giacomo Stelluti Scala * Main assembly CommandLine.dll signed. * Removed old commented code. * Added missing XML documentation comments. * Two (very) minor code refactoring changes. * Version incremented to 1.9.3.31 rc0. 2012-12-09 Giacomo Stelluti Scala * Minor code refactoring suggested by ReSharper. * Fixed bug reported by github user mizipzor about grow of CopyrightInfo (id #BUG0006, ref.: https://github.com/gsscoder/commandline/issues/22). * library/CommandLineText.cs/CopyrightInfo (CopyrightInfo) Modified method ToString() for #BUG0006. * tests/Text/CopyrightInfoFixture.cs Added test ShouldNotGrowWhenConvertedToString() for #BUG0006. * Version incremented to 1.9.3.29 rc0. 2012-11-30 Giacomo Stelluti Scala * Merged pull request #11 from github user jafin (ref.: https://github.com/gsscoder/commandline/pull/11). * All tests runned for verify changes -> all passed. * Version incremented to 1.9.3.27. 2012-11-30 Giacomo Stelluti Scala * Fixed bug reported by github user jandler about numbers overflow (id #BUG0005, ref.: https://github.com/gsscoder/commandline/issues/14). * library/CommandLine.cs/OptionInfo (OptionInfo) Method SetValueScalar(...) modified for #BUG0005. * tests/CommandLineParserFixture.cs Added new region #BUG0005 with 5 new tests. * tests/CommandLine.cs Removed old lines of commented code. * Version incremented to 1.9.3.25. 2012-11-26 Giacomo Stelluti Scala * Fixed bug reported by github user sbambrick about negative numbers parsing (id #BUG0004, ref.: https://github.com/gsscoder/commandline/issues/13). * library/CommandLine.cs/ArgumentParser (ArgumentParser) Methods Create(...) and IsInputValue(...) modified for #BUG0004. * library/CommandLine.cs/StringUtil (StringUtil) Added method 'bool IsNumeric(string)' used in modified ArgumentParser methods. * tests/CommandLineParserFixture.cs Added new region #BUG0004 with 8 new tests. * Version incremented to 1.9.3.23. 2012-11-09 Giacomo Stelluti Scala * Merged pull request #10 from hugodahl for displaying all missing but required values. * Current version set to: 1.9.3.21 beta. 2012-07-31 Giacomo Stelluti Scala * Changed projects target to Mono 4.0 Profile. * Added tests ParseTwoUIntConsecutiveArray* to OptionArrayAttributeParsingFixture. * Fixed the LongOptionParser type problem of parsing two consecutive arrays (issue from m1gu3l github user). 2012-06-18 Giacomo Stelluti Scala * Fixed issue with ReflectionUtil::GetAttribute / HelpText::AutoBuild. * For now disabled some tests for these methods. 2012-06-13 Giacomo Stelluti Scala * Added fixture for unknown arguments (and first test). 2012-06-12 Giacomo Stelluti Scala * Merged pull request from Kevin Moore to support unknown arguments. 2012-06-04 Giacomo Stelluti Scala * Added tests for HelpText::AutoBuild. * Fixed minor formatting error in HelpText::DefaultParsingErrorsHandler. 2012-05-31 Giacomo Stelluti Scala * Added errors heading in sentence builder. * Added HelpText.DefaultParsingErrorsHandler for reduce code devoted to errors handling. 2012-05-29 Giacomo Stelluti Scala * Introduced AssemblyLicenseAttribute and AssemblyUsageAttribute for use with HelpText::AutoBuild(). * Added helper method to internal CommandLine.ReflectionUtil type. * Core sources linked to Sample Application. 2012-05-27 Giacomo Stelluti Scala * Minor fix in HelpText::RenderParsingErrorsText(). * Beta promoted to RC0. 2012-05-20 Giacomo Stelluti Scala * Added tests for BaseOptionAttribute::DefaultValue. * Setting a bad value for BaseOptionAttribute::DefaultValue raises a CommandLineParserException. 2012-05-20 Giacomo Stelluti Scala * All option attributes that inherits from BaseOptionAttribute support initialization via DefaultValue (this feature needs more tests). * All solution (included tests project) now build also in Release config. 2012-05-18 Giacomo Stelluti Scala * Values are now converted using Thread.CurrentThread.CurrentCulture. * Added tests for culutre-specific conversions. 2012-05-16 Giacomo Stelluti Scala * Added default to HelpOption.HelpText. * Fixed a minor bug in HelpText constructor. 2012-05-15 Giacomo Stelluti Scala * Added default singleton CommandLineParser.Default. * Added test fixture for CommandLineParser.Defualt. 2012-05-13 Giacomo Stelluti Scala ------------------------------------------------------------------------------------ + file added; * file modified; - file deleted; ~ file renamed; > file moved; . file replaced; { group start; } group end ----------------------------------------------------------------------------------- * Text/HelpText.cs (HelpText) Modified. Added HelpText.AddDashesToOption formatting property (default = false). * Text/Tests/HelpTextFixture.cs (HelpTextFixture) Modified. Added tests from HelpText.AddDashesToOption. 2012-05-05 Giacomo Stelluti Scala ------------------------------------------------------------------------------------ + file added; * file modified; - file deleted; ~ file renamed; > file moved; . file replaced; { group start; } group end ----------------------------------------------------------------------------------- Release promoted to beta due to stability. Modified project structure. Added unix build files. Published on github.com/. 2011-09-17 Giacomo Stelluti Scala ------------------------------------------------------------------------------------ + file added; * file modified; - file deleted; ~ file renamed; > file moved; . file replaced; { group start; } group end ------------------------------------------------------------------------------------ [a] Evolutionary Maintenance: Added a new feature to report a more detailed help text when user input violates parsing rules. This release bring this feature to the next level. + Core/ParsingError.cs (ParsingError) Added. Class that records a parsing error. + Core/BadOptionInfo.cs (BadOptionInfo) Added. This class is used as a light reference for bad options. + Utility/StringUtil.cs (StringUtil) Added. Basic string utility class. + Text/EnglishSentenceBuilder.cs (EnglishSentenceBuilder) Added. Used with StringBuilder for localize text. + Text/BaseSentenceBuilder.cs (BaseSentenceBuilder) Added. The base class for localized sentence building. > Core/PostParsingState.cs (PostParsingState) Moved. This is the right place for this class. * Parser/CommandLineOptionsBase.cs (CommandLineOptionsBase) Modified. This class was refactored for [a]. * Core/ArgumentParser.cs (ArgumentParser) Modified. Modified for [a]. * Parser/CommandLineParser.cs (CommandLineParser) Modified. Modified for [a]. * Core/OptionMap.cs (OptionMap) Modified. Modified for [a]. * Text/HelpText.cs (HelpText) Modified. Modified for [a]. * Text/TESTS/HelpTextFixture.cs (HelpTextFixture) Modified. Modified for [a]. 2011-07-06 Giacomo Stelluti Scala ------------------------------------------------------------------------------------ + file added; * file modified; - file deleted; ~ file renamed; > file moved; . file replaced; { group start; } group end ------------------------------------------------------------------------------------ [a] Evolutionary Maintenance: Added a new feature to report a more detailed help text when user input violates parsing rules. # discussion 204518 (http://commandline.codeplex.com/discussions/204518) # discussion 249258 (http://commandline.codeplex.com/discussions/249258) * Solution, Project Files {CommandLine.sln, CommandLine.csproj[.user], SampleApp.csproj[.user]} Modified. Project format updated to MS Visual C# 2010 Express. NOTE: the target framework is still .NET Framework 2.0. . ../../lib/nunit.framework.dll Replaced. Assembly replaced with the one supplied with NUnit version 2.5.10.11092. * Text/TESTS/HelpTextFixture.cs (HelpTextFixture) Modified. Added tests DetailedHelpWith*() for implent and test [a]. + TESTS/Mocks/ComplexOptions.cs (ComplexOptions) Added. Mock object needed (for now) to HelpTextFixture test type. + Parser/CommandLineOptionsBase.cs (CommandLineOptionsBase) Added. New abstract type used when you need to get parsing errors. + Parser/PostParsingState.cs (PostParsingState) Added. Internal type that models the state of the parser at the and of the job. * Parser/CommandLineParser.cs (CommandLineParser) Modified. Added private method SetPostParsingStateIfNeeded(object,PostParsingState). The type was modified for [a]. * Core/ArgumentParser.cs (ArgumentParser) Modified. Added property PostParsingState LastPostParsingState{get,set} and method DefineOptionThatViolatesFormat(OptionInfo). Again, the type was modified for [a]. * Core/LongOptionParser.cs (LongOptionParser) Modified. The method Parse(IArgumentEnumerator,OptionMap,object) was modified for [a]. * Core/OptionGroupParser.cs (OptionGroupParser) Modified. Also the method Parse(IArgumentEnumerator,OptionMap,object) was modified for [a]. * Text/HelpText.cs (HelpText) Modified. Added method RenderParsingErrorsText(CommandLineOptionsBase) and protected method GetMessageText(MessageEnum) to handle parsing error rendering (see [a]). * Core/OptionInfo.cs (OptionInfo) Modified. Added property NameWithSwitch{get}. * Core/OptionMap.cs (OptionMap) Modified. The method EnforceRules() was modified for handling [a] requirements. 2010-05-19 Giacomo Stelluti Scala ----------------------------------------------------------------------------------- + file added; * file modified; - file deleted; ~ file renamed; > file moved { group start; } group end ----------------------------------------------------------------------------------- * Text/HelpText.cs (HelpText) Modified. Changed incorrect spelling of a variable of GetMaxLength(IList) method (see issue #R20100506.00 - http://commandline.codeplex.com/WorkItem/View.aspx?WorkItemId=10554). Parameterless constructor made public. Added more public constructors. (see issue #R20100507.00 - http://commandline.codeplex.com/WorkItem/View.aspx?WorkItemId=10573) * Text/TESTS/HelpTextFixture.cs (HelpTextFixture) Modified. Added test ::InstancingWithParameterlessConstructor 2010-03-18 Giacomo Stelluti Scala ----------------------------------------------------------------------------------- + file added; * file modified; - file deleted; ~ file renamed; > file moved { group start; } group end ----------------------------------------------------------------------------------- * HelpText.cs (HelpText) Modified. Now you can customize options help text using the FormatOptionHelpText event as requested in #REQ0005 ([1] http://commandline.codeplex.com/WorkItem/View.aspx?WorkItemId=10426&ProjectName=commandline by fhaag). + FormatOptionHelpTextEventArgs.cs (FormatOptionHelpTextEventArgs) Added. See [1]. * HelpTextFixture.cs (HelpTextFixture) Modified. See [1]. 2010-03-08 Giacomo Stelluti Scala ----------------------------------------------------------------------------------- + file added; * file modified; - file deleted; ~ file renamed; > file moved { group start; } group end ----------------------------------------------------------------------------------- {* Parser/TESTS/CommandLineParserFixture.cs (CommandLineParserFixture) * Parser/TESTS/MutuallyExclusiveParsingFixture.cs (MutuallyExclusiveParsingFixture) * Parser/TESTS/NullableTypesParsingFixture.cs (NullableTypesParsingFixture) *} Parser/TESTS/Parser/TESTS/.cs (Parser/TESTS/) All Modified. Refactoring toward code readability and maintainability. Introduced use of CommandLineParserBaseFixture::AssertParserSuccess(bool). Introduced use of CommandLineParserBaseFixture::AssertParserFailure(bool). {* Text/HelpText.cs (HelpText) *} Text/TESTS/HelpTextFixture.cs (HelpTextFixture) Patch 'fix_helptext_infinite_loop.patch' officially applied (thanks to user/dev philr; see http://commandline.codeplex.com/WorkItem/View.aspx?WorkItemId=10361). * {all}.cs Modified header. Updated the range of years in copyright notice. * Core/IArgumentEnumerator.cs (IArgumentEnumerator) Modified. Redefined for mono compatibility. {* Core/StringArrayEnumerator.cs (StringArrayEnumerator) *} Core/OneCharStringEnumerator.cs (OneCharStringEnumerator) All Modified. See IArgumentEnumerator (Core/IArgumentEnumerator.cs). 2009-11-28 Giacomo Stelluti Scala --------------------------------------------------------------------------------------- + file added * file modified - file deleted ~ file renamed > file moved --------------------------------------------------------------------------------------- + Tests/Mocks/SimpleOptionsWithBadOptionArray.cs (SimpleOptionsWithBadOptionArray) Added. Used in OptionArrayAttributeParsingFixture. * Core/OptionInfo.cs (OptionInfo) Modified. Modified ::SetValue(IList, object) method to handle exceptions correctly. * Core/ArgumentParser.cs (ArgumentParser) Modified. Added ::EnsureOptionArrayAttributeIsNotBoundToScalar(OptionInfo) method to prevent misuse of syntax defined by attributes. * Core/OptionGroupParser.cs (OptionGroupParser) Modified. Introduced use of ArgumentParser::EnsureOptionArrayAttributeIsNotBoundToScalar(...). * Core/LongOptionParser.cs (LongOptionParser) Modified. Introduced use of ArgumentParser::EnsureOptionArrayAttributeIsNotBoundToScalar(...). * Parser/Tests/OptionArrayAttributeParsingFixture.cs (OptionArrayAttributeParsingFixture) Modified. Added following test methods. ::PassingBadValueToAnIntegerArrayOptionFails() ::PassingNoValueToAStringArrayOptionFails() ::PassingNoValueToAnIntegerArrayOptionFails() ::WillThrowExceptionIfOptionArrayAttributeBoundToStringWithShortName() ::WillThrowExceptionIfOptionArrayAttributeBoundToStringWithLongName() ::WillThrowExceptionIfOptionArrayAttributeBoundToIntegerWithShortName() ::WillThrowExceptionIfOptionArrayAttributeBoundToIntegerWithLongName() 2009-11-24 Giacomo Stelluti Scala --------------------------------------------------------------------------------------- + file added * file modified - file deleted ~ file renamed > file moved --------------------------------------------------------------------------------------- + Core/TargetWrapper.cs (TargetWrapper) Added. Decouples the instance that will contain parsed values by the code that consumes it. * Core/ArgumentParser.cs (ArgumentParser) Modified. Added method ::BooleanToParserState(...) with two overloads (this simple method will make code of [LongOption|OptionGroup]Parser more clean - or so I hope). Added ::EnsureOptionAttributeIsArrayCompatible(OptionInfo) method for the same reason described above. * Parser/CommandLineParser.cs (CommandLineParser) Modified. Try to use TargetWrapper instead of working directly with options instance. * Core/LongOptionParser.cs (LongOptionParser) Modified. Introduced the use of ArgumentParser::BooleanToParserState(...) and ArgumentParser::EnsureOptionAttributeIsArrayCompatible(...) for a cleaner code and improved maintainability. * Core/OptionGroupParser.cs (OptionGroupParser) Modified. Same changes of LongOptionParser. ~ Tests/MockUtil.cs (MockUtil) -> Tests/DebugStringUtil.cs (DebugStringUtil) Renamed. A correct name is the first step for refactoring a unit of code. * Core/Tests/ArgumentParserFixture.cs (ArgumentParserFixture) Modified. Test code simplified. * Attributes/Tests/HelpOptionAttributeFixture.cs (HelpOptionAttributeFixture) Modified. Minor refactoring. * Attributes/Tests/ValueListAttributeFixture.cs (ValueListAttributeFixture) Modified. Minor refactoring. 2009-11-22 Giacomo Stelluti Scala * IArgumentEnumerator.cs (IArgumentEnumerator) Modified. The interface now inherits from IEnumerator. Added ::MovePrevious() method to be implemented (for now only) by StringArrayEnumerator. * OneCharStringEnumerator.cs (OneCharStringEnumerator) Modified. See IArgumentEnumerator[.cs]. * StringArrayEnumerator.cs (StringArrayEnumerator) Modified. See IArgumentEnumerator[.cs]. * OptionMap.cs (OptionMap) Modified. * OptionListAttribute.cs (OptionListAttribute) Modified. AttributeUsage removed, it's inherited from Option[Attribute]. * OptionArrayAttribute.cs (OptionArrayAttribute) Added. This new attribute defines an option to store multiple values in an array. * OptionInfo.cs (OptionInfo) Modified. ::IsArray property added. ::IsAttributeArrayCompatible property added. ::SetValue(IList, object) method added to handle OptionArray[Attribute]. * SimpleOptionsWithArray.cs (SimpleOptionsWithArray) * SimpleOptionsWithArrayAndValueList.cs (SimpleOptionsWithArrayAndValueList) Added. * OptionArrayAttributeParsingFixture.cs (OptionArrayAttributeParsingFixture) Added. Unit tests for parsing with OptionArray[Attribute]. * ArgumentParser.cs (ArgumentParser) Modified. Added protected method ::GetNextInputValues(IArgumentEnumerator) for handle OptionArray[Attribute]. * ArgumentParserFixture.cs (ArgumentParserFixture) Added. * ParserException.cs -> CommandLineParserException.cs (CommandLineParserException) Renamed. CommandLineParserException is a name more consistent with other CommandLineParser* types than ParserException. * BaseFixture.cs (BaseFixture) Added. This is another step towards unit tests refactoring. * CommandLineParserBaseFixture.cs (CommandLineParserBaseFixture) Modified. Now inherits from BaseFixture. 2009-11-16 Giacomo Stelluti Scala * IStringEnumerator.cs -> IArgumentEnumerator.cs (IArgumentEnumerator) Renamed. This interface is used to enumerate over a string vector (old StringEnumeratorEx) or a string item of this vector (old CharEnumeratorEx). I think that IArgumentEnumerator is a more meaningful name. * OptionGroupParser.cs (OptionGroupParser) Modified. Reference to IStringEnumerator changed to IArgumentEnumerator. Reference to CharEnumeratorEx changed to OneCharStringEnumerator. OptionMap referenced directly (IOptionMap interface currently removed). * LongOptionParser.cs (LongOptionParser) Modified. Reference to IStringEnumerator changed to IArgumentEnumerator. OptionMap referenced directly (IOptionMap interface currently removed). * StringEnumeratorEx.cs -> StringArrayEnumerator.cs (StringArrayEnumerator) Renamed. This isn't an extended version of CLR StringEnumerator. It's really a custom string array enumerator. So I decided to refactor it, starting from giving it a correct name. * CharEnumeratorEx.cs -> OneCharStringEnumerator.cs (OneCharStringEnumerator) Renamed. This is really a string enumerator that has its ::Current member made of a 1-char string. Motivation for name refactoring as above. * CommandLineParser.cs (CommandLineParser) Modified. Reference to IStringEnumerator changed to IArgumentEnumerator. Reference to StringEnumeratorEx changed to StringArrayEnumerator. OptionMap referenced directly (IOptionMap interface currently removed). * EnumeratorsFixture.cs (EnumeratorsFixture) Modified. Reference to IStringEnumerator changed to IArgumentEnumerator. Reference to CharEnumeratorEx changed to OneCharStringEnumerator. Reference to StringEnumeratorEx changed to StringArrayEnumerator. * IOptionMap.cs (IOptionMap) Removed. Why keep an internal interface inherited only from one concrete type? * OptionMap.cs (OptionMap) Modified. Inheritance from IOptionMap removed. * OptionInfo.cs (OptionInfo) Modified. OptionMap referenced directly (IOptionMap interface currently removed). ::IsDefined defined with automatic property syntax. * ArgumentParser.cs (ArgumentParser) Modified. Reference to IStringEnumerator changed to IArgumentEnumerator. OptionMap referenced directly (IOptionMap interface currently removed). * OptionMapFixture.cs (OptionMapFixture) Modified. OptionMap referenced directly (IOptionMap interface currently removed). * BaseOptionAttribute.cs (BaseOptionAttribute) Modified. Where possible, automatic properties used. * OptionListAttribute.cs (OptionListAttribute) Modified. ::Separator defined with automatic property syntax. * ValueListAttribute.cs (ValueListAttribute) Modified. ::MaximumElements defined with automatic property syntax. * CommandLineParserSettings.cs (ValueListAttribute) Modified. Where possible, automatic properties used. 2009-11-12 Giacomo Stelluti Scala * Program.cs (SampleApp.Program) Modified. Minor internal refactoring. * HelpText.cs Modified. [Steven Evans ->] Added support for automatic text wrap. Updated the type XML comment. Added possibility to add an additional new line after description of an option (::AdditionalNewLineAfterOption). * HelpTextFixture.cs Modified. [Steven Evans ->] Added test code for new features of HelpText (see above). 2009-11-09 Giacomo Stelluti Scala * Mocks folder Created. The new folder is a subdirectory of {project-root>/Tests. All types inside this folder will belong to namespace CommandLine.Tests.Mocks. * MockOptionsBase.cs (MockOptionsBase) Moved. This source file was moved and renamed to OptionsBase.cs (OptionsBase). * SimpleOptions.cs (SimpleOptions) Created. Refactoring of CommandLineParserFixture.MockOptions. * SimpleOptionsWithValueList.cs (SimpleOptions) Created. Refactoring of CommandLineParserFixture.MockOptionsExtended. * NumberSetOptions.cs (NumberSetOptions) Created. Refactoring of CommandLineParserFixture.MockNumericOptions. * BooleanSetOptions (BooleanSetOptions) Created. Refactoring of CommandLineParserFixture.MockBoolPrevalentOptions. * SimpleOptionsWithOptionList (SimpleOptionsWithOptionList) Created. Refactoring of CommandLineParserFixture.MockOptionsWithOptionList. * SimpleOptionsWithEnum (SimpleOptionsWithEnum) Created. Refactoring of CommandLineParserFixture.MockOptionsWithEnum. * MixedCaseOptions (MixedCaseOptions) Created. Refactoring of CommandLineParserFixture.MockOptionsCaseSensitive. * CommandLineParserFixture.Mocks.cs Removed. The partial CommandLineParserFixture in this code file is now empty. * CommandLineParserFixture.cs (CommandLineParserFixture) Modified. The type CommandLineParserFixture is no longer partial. * CommandLineParserSettingsFixture.cs (CommandLineParserSettingsFixture) Modified. Type CommandLineParserSettingsFixture.MockOptions moved in a separate file. * SimpleOptionsWithHelpOption.cs (SimpleOptionsWithHelpOption) Created. Refactoring of CommandLineParserSettingsFixture.MockOptions. * OptionsWithDefaultSet.cs (OptionsWithDefaultSet) Created. Refactoring of MutuallyExclusiveParsingFixture.MockOptionsWithDefaultSet. * OptionsWithMultipleSet.cs (OptionsWithMultipleSet) Created. Refactoring of MutuallyExclusiveParsingFixture.MockColorOptions. * OptionsWithMultipleSetAndOneOption.cs (OptionsWithMultipleSetAndOneOption) Created. Refactoring of MutuallyExclusiveParsingFixture.MockExtendedColorOptions. * MutuallyExclusiveParsingFixture.cs (MutuallyExclusiveParsingFixture) Modified. Nested mock types moved to separate files. * ValueListAttributeParsingFixture.cs (ValueListAttributeParsingFixture) Modified. Nested type MockOptionsWithValueList removed and replaced with SimpleOptionsWithValueList. Nested type MockOptionsWithValueListMaxElemDefined removed and replaced with OptionsWithValueListMaximumThree. Nested type MockOptionsWithValueListMaxElemEqZero removed and replaced with OptionsWithValueListMaximumZero. * SimpleOptionsWithValueList.cs (SimpleOptionsWithValueList) OptionsWithValueListMaximumThree.cs (OptionsWithValueListMaximumThree) OptionsWithValueListMaximumZero.cs (OptionsWithValueListMaximumZero) Created. Compare above. * NAnt Script (../nant/default.build) Modified. Aligned to Visual Studio project. * Validator.cs (Validator) Renamed. In a near future I plan to use types with 'validator' semantic to enable validation of parsed values. So I've renamed this type (that validates methods arguments) with a more meaningful 'Assumes[.cs]'. I've also refactored names of methods. * HelpText.cs (HelpText) HeadingInfo.cs (HeadingInfo) CopyrightInfo.cs (CopyrightInfo) CommandLineParser.cs (CommandLineParser) StringEnumeratorEx.cs (StringEnumeratorEx) CharEnumeratorEx.cs (CharEnumeratorEx) Modified. Reference to Validator type changed to Assumes type. * BaseOptionAttribute.cs (BaseOptionAttribute) Modified. The short name of an option can now be made by only one character. This satisfy #DGN0002 ([1] http://commandline.codeplex.com/WorkItem/View.aspx?WorkItemId=9077 by andy78smith). * AttributesFixture.cs Created. New tests for #DGN0002 (see [1]). * StringEnumeratorEx.cs (StringEnumeratorEx) Modified. ::GetRemainingFromNext() now throws a more correct System.NotSupportedException instead of System.NotImplementedException. * NullableTypesParsingFixture.cs (NullableTypesParsingFixture) Created. #REQ0003 ([2] http://commandline.codeplex.com/WorkItem/View.aspx?WorkItemId=7649 by jeffwilcox). * NullableTypesOptions.cs (NullableTypesOptions) Created. Mock object for NullableTypesParsingFixture. * OptionInfo.cs (OptionInfo) Modified. Added ::SetNullableValue(string, object) to handle nullable types; see [2]. ::SetValueScalar(string, object) marked private (not necessary to be public). ::SetValueList(string, object) marked private (not necessary to be public). * ReflectionUtil.cs (ReflectionUtil) Modified. Added method ::IsNullableType(Type); see [2]. * CommandLineParserFixture.cs (CommandLineParserFixture.cs) Modified. ::PassingNoValueToAIntegerTypeLongOptionFails corrected in ::PassingNoValueToAnIntegerTypeLongOptionFails. * config folder Created. This new subdirectory created inside {project-roo}/doc will host configuration related files. * net-3.5_fx-node.nant-conf Moved/Renamed. Moved to {project-roo}/doc/config and renamed as NAnt.exe.config.part. * CommandLine.sln Moved. The MS Visual C# 2008 EE solution file is now under {project-root} directory. This satisfy #REQ0004 ([3] http://commandline.codeplex.com/WorkItem/View.aspx?WorkItemId=9080 by x97mdr). * msvs2008 folder Removed. 2009-11-01 Giacomo Stelluti Scala * {all}.cs Modified. Code formatting lightly adjusted for readability and maintainability. * OptionInfo.cs (OptionInfo) [if|else] construct of ::SetValue(string, object) turned into [guard-clause|return]. * HelpText.cs (HelpText) [if|else] construct of ::GetLength(*) turned into [guard-clause|return]. * IncompatibleTypesException.cs (IncompatibleTypesException) Removed. It's no longer necessary. * ParserException.cs (ParserException) Moved. {project-root}/Exceptions/ParserException.cs was moved to {project-root}/Parser. * Exceptions folder Removed. * NAnt Script (../nant/default.build) Modified. Aligned to Visual Studio project. * Tests folder Created. This folder will contain reusable test code. * MockUtil.cs MockOptionsBase.cs Moved. Both files moved to {project-root}/Tests folder. * CommandLineParserBaseFixture.cs (CommandLineParserBaseFixture) Added. CommandLineParserBaseFixture will be the base class for testing CommandLineParser. * ValueListAttributeParsingFixture.cs (ValueListAttributeParsingFixture) Added. Groups tests for CommandLineParser type related to ValueList[Attribute]. These tests were first contained in CommandLineParserFixture. * CommandLineParserBaseFixture.cs (CommandLineParserBaseFixture) Modified. See ValueListAttributeParsingFixture[.cs] changes. * CommandLineParserFixture.Mocks.cs (types nested in CommandLineParserFixture) Modified. Added MockOptionsExtended type. * CommandLineLibrary.shfb Removed. This file was converted to a newer version of SandCastle (sc 2.4.10520, hpfb 1.8.0.2 beta). * CommandLineLibrary.shfbproj Added. This is the new version of CommandLineLibrary.shfb (source for build CHM help file). 2009-09-16 Giacomo Stelluti Scala * Parser.cs (Parser) Removed. This type has been marked obsolete many release ago. * CommandLineParser.cs (CommandLineParser) Modified. Private method ParseArgumentList renamed to DoParseArguments. XML comments revised. Now the behavior of both ParseArguments(...) methods is aligned with the introduction of CommandLineParserSettings::HelpWriter. Setting this property to null (or passing null to the overload of ParseArgurguments(...) that accepts helpWriter as argument) means that in case of fail (or help request) you don't want to display any help screen. * Parser folder Added. Contains ICommandLineParser.cs, CommandLineParser.cs, CommandLineParserSettings.cs * Tests folder Moved. {project-root}/Tests was moved inside of {project-root}/Parser. * ICommandLineParser.cs (ICommandLineParser) Modified. XML comments revised. * NAnt Script (../nant/default.build) Modified. Changed to reflect MS Visual C# 2008 EE project layout. The function 'path::combine(...)' is now used in a more extensive way. * Properties/ThisAssembly.cs Version defined '1.6 stable'. * PairT.cs Changed. This type has ben replaced (and adapted) with the version shipped with Common Utility Library (see [1] http://commonapi.codeplex.com/). * Util folder Renamed. Extended to 'Utility'. * CommandLineParserFixture.cs (CommandLineParserFixture) Modified. Added more tests for #BUG0003 (fixed in a previous release). Added more tests for #REQ0001 (implemented in a previous release). * CommandLineParserFixture.Mocks Modified. Added type MockNumericOptions. * ArgumentParser.cs (ArgumentParser) Modified. Now single dash '-' is allowed also as non-option value (you can capture it with ValueList[Attribute]). * LongOptionParser.cs (LongOptionParser) Modified. Removed commented code. * OptionMap.cs (OptionMap) Modified. Removed commented code. * SampleApp/ThisAssembly.cs (ThisAssembly) Added. Contains assembly's constants. * SampleApp/Program.cs Modified. It has been updated to be more readable. * CommandLineParserSettings.cs Modified. Removed default setting of HelpWriter property (internal get accessor). * CommandLineParserSettingsFixture.cs Added. Contains CommandLineParserSettings specific's tests. * doc folder (../doc) Modified. Added NUNIT-LICENCE, copied and renamed from {install-dir}/NUnit 2.4.8/license.txt. (I forgot to do this form earliest version!) 2009-08-22 Giacomo Stelluti Scala * CommandLineParserFixture.cs (CommandLineParserFixture) Modified. User Rasqualtwilight (see [1] https://www.blogger.com/comment.g?blogID=1092962441290089148&postID=3958784299747727243) correctly suggest that the parser should fail if nothing (or null string in case of string option) is passed to a long option (#BUG0002). Modified for #DGN0001 (see [3]). The refactoring of ParserSettings type name (to CommandLineParserSettings) has impacted some test(s). * LongOptionParser.cs (LongOptionParser) Modified. (#BUG0002) * ArgumentParser.cs (ArgumentParser) Modified. Added a guard clause like suggested by Rasqualtwilight in [1]; see IsInputValue(string) method. The method IsInputValue(...) was also modified in order to accept '-' (single dash) as option input parameter value; also this is stated in [1] and referenced as #REQ0001 (see [2] http://stackoverflow.com/questions/367309/which-command-line-commands-style-do-you-prefer). The dash '-' is used by some program to indicate STDIN (again, see [1] and [2]). * ICommandLineParser.cs (ICommandLineParser) Modified. Removed previously added overload ParseArguments(...) that accepts ParserSettings. I think that this is a better design choiche (#DGN0001, see [3] http://commandline.codeplex.com/Thread/View.aspx?ThreadId=64678). This is done to decouple ParserSettings type from this interface and couple it with the main parser implementation (CommandLineParser). * CommandLineParser.cs (CommandLineParser) Modified. (#DGN0001) * HelpText.cs (HelpText) Modified. In order to fullfill the user pruiz request (#REQ0002; see [3] http://commandline.codeplex.com/WorkItem/View.aspx?WorkItemId=8015). * HelpTextFixture.cs (HelpTextFixture) Modified. (#REQ0002) * CommandLineParserFixture.Mocks.cs (MockOptionsCaseSensitive) Modified. In order to fullfill design choice #DGN0001: moving the ParserSettings type from method to class constructor removes the obligation to have an HelpOption attribute (HelpOptionAttribute.cs) defined. * ParserSettings.cs (ParserSettings) Renamed to CommandLineParserSettings.cs: ParserSettings type renamed to CommandLineParserSettings. | \|/ * CommandLineParserSettings.cs (CommandLineParserSettings) Added standard copyright header. Added MutuallyExclusive boolean property to switch on/off parsing rule for options with MutuallyExclusiveSet defined. Added more constructors. Modified for #REQ0003 (see [4]). * OptionAttribute.cs (OptionAttribute) Modified. The OptionAttribute is modified in order to add a "mutually exclusive" feature requested by ErikEJ (#REQ0003; see [4] http://commandline.codeplex.com/WorkItem/View.aspx?WorkItemId=7134). Added public string property MutuallyExclusiveSet (string). * MutuallyExclusiveParsingFixture.cs Added. Unit tests for "mutually exclusive" feature (#REQ0003). * OptionInfo.cs (OptionInfo) Modified. (#REQ0003) Added string property MutuallyExclusiveSet to handle the same property on OptionAttribute (see OptionAttribute.cs). * OptionMap.cs (OptionMap) Modified. Altered constructor. Changes made to OptionMap::EnforceRules(...) to handle #REQ0003 (see [4]); this doesn't affect public API, because OptionMap type is internal for library private use. * OptionMapFixture.cs (OptionMapFixture) Modified. Some changes made for #REQ0003 (see [4]). 2009-08-01 Giacomo Stelluti Scala * CommandLineParserFixture.cs (CommandLineParserFixture) Modified. Added test code to implement 'case sensitive on/off switch' following user unruledboy request (#REQ0000) posted in project hosting web site (http://commandline.codeplex.com/Thread/View.aspx?ThreadId=44806). * ParserSettings.cs (ParserSettings) Added. This object configures aspects of parser's behavior. (#REQ0000) * ICommandLineParser.cs (ICommandLineParser) Modified. Added a ParseArguments(...) overload that accepts an instance of ParserSettings. (#REQ0000) * CommandLineParser.cs (CommandLineParser) Modified. Now implements the new method defined in ICommandLineParser. (#REQ0000) * ArgumentParser.cs (ArgumentParser) Modified. (#REQ0000) * OptionMap.cs (OptionMap) Modified. (#REQ0000) * OptionMapFixture.cs (OptionMapFixture) Modified. Internal type OptionMap has a new public constructor (see OptionMap.cs). 2009-01-21 Giacomo Stelluti Scala * CommandLineParserFixture.cs (CommandLineParserFixture) Modified. Added test code to put highlight a bug noticed working for a blog tutorial (http://gsscoder.blogspot.com/2009/01/hands-on-code-modify-copy-directory.html). I wrote the tutorial for other people and finally helped me too. I'm sure that this kind of bug was not here even with earlier version of CommandLine.dll. So why appeared in a 1.5-stable? It's appeared because the code coverage were not enough deep and a so simple case were not take in to account (LEARN FROM THIS ERROR!!!). * OptionMap.cs (OptionMap) Modified. Last changes to this class hasn't modified Unit-Tests results. Anyway the problem was here and now was corrected (ref. #BUG0002). The problem was that an undefined input results in raising an unhandled excpetion, instead of returning false (this is valid for all overloads of 'bool CommandLineParser::ParseArguments(...)'). * OptionMapFixture.cs (OptionMapFixture, OptionMapFixture+OptionMapBuilder) Modified. Minor internal refactoring (mostly for future use). Added tests for consolidate contract of OptionMap (:IOptionMap) type (OptionMap.cs): this also is in relation of bug #BUG0002. * ValueListAttributeFixture.cs Modified. Removed commented code. * IncompatibleTypesException.cs Modified. Heading comment. 2009-01-08 Giacomo Stelluti Scala * {all}.cs Modified. Updated header. * ThisAssembly.cs Modified. Updated version. * CommandLineParserFixture.cs Modified for Unit-Test refactoring. * CommandLineParserFixture.Mocks.cs Extracted from CommandLineParserFixture.cs. * MockUtil.cs Added. Used in Unit-Test. * MockOptions.cs Added. Base class from mock options types (Unit-Test). * OptionInfo.cs Modified. Added support for enum types. See 'bool OptionInfo::SetValueScalar(string, object)'. * CopyrightInfo.cs Modified. * HelpText.cs Modified. * HelpTextFixture.cs Added. * PairT.cs Modified. Marked sealed. * IncompatibleTypesException.cs Modified. Marked obsolete (instead catch ParserException type). * ParserException.cs Added. The ParserException type will be used through (more specialized exception types will be created only if really needed). * ValueListAttribute.cs Modfied * SampleApp/Program.cs Modified. 2008-12-20 Giacomo Stelluti Scala * Applied my latestì coding standard' about tabs to all sources (*.cs): size 4 (spaces). * Removed 'internal' keyword from type declaration (because in C# is implicit). * ICommandLineParser.cs Added. Interface for command line parsing (derived from Parser.cs). This interface was introduced for simplify the use of the parser with 'inversion of control/dependency injection' containers. (Read: http://gsscoder.blogspot.com/2008/10/decouple-software-in-services.html) * CommandLineParser.cs Added. Default implementation for ICommandLineParser. * Parser.cs Modified. Now its a client of ICommandLineParser/CommandLineParser. It' use is deprecated use instead CommandLineParser. * Source tree reorganized moving most files to a new 'Core/' directory. * Test files moved to relative '../Tests/' subdirectory. * ParserFixture.cs Modified. Renamed to CommandLineParserFixture.cs. * IOptionMap.cs Added. Used in refactoring of OptionMap type (see OptionMap.cs). * OptionMap.cs Modified. Partially rewritten. * ArgumentParser.cs Modified. References IOptionMap instead of OptionMap. * LongOptionParser.cs OptionGroupParser.cs OptionInfo.cs Modified. As ArgumentParser derived types now references IOptionMap. * EnumeratorsFixture.cs Modified. * CharEnumerator.cs Modified. 2008-07-22 Giacomo Stelluti Scala * OptionListAttribute.cs Added. Allows to set an option with a composite value (values separated by a character). * ParserFixture.cs Modified. * OptionInfo.cs Modified. * ValueListAttribute.cs Added. Modified a comment. 2008-05-05 Giacomo Stelluti Scala * Enumerations/ParserState.cs Moved to Interfaces. * CharEnumeratorEx.cs, StringEnumeratorEx.cs Moved to Collections. * NAnt Script (../nant/default.build) Modified. * Text/Tests/HeadingInfoFixture.cs Added. Unit tests for Text/HeadingInfo.cs * Attributes/ValueListAttribute.cs Modified. Added check for maximum elements. * Parser.cs Modified. Added support for modified ValueListAttribute type. * Tests/ParserFixture.cs Modified. Added tests for new features of ValueListAttribute type. * Util/Validator.cs Modified. Method CheckZeroLength now throws the correct exception. * Text/Tests/CopyrightInfoFixture.cs Modified. 2008-04-27 Giacomo Stelluti Scala * OptionInfo.cs, PairT.cs Moved from Data to Collections directory. * Data directory Renamed as Text. All types inside included in CommandLine.Text namespace. * Text/CopyrightInfo.cs Nested enumaration Symbol replaced with a boolean. * Tests/CopyrightInfoFixture.cs Moved to Text/Tests/CopyrightInfoFixture.cs * Text/HeadingInfo.cs Added. Decouples data previously handled by HelpText type. * Text/HelpText.cs Modified. Data previously handled by this type is now managed by HeadingInfo (HeadingInfo.cs). 2008-04-01 Giacomo Stelluti Scala * Documentation Comments added to following Sources: - Parser.cs - Attributes/BaseOptionAttribute.cs - Attributes/HelpOptionAttribute.cs - Attributes/OptionAttribute.cs - Attributes/ValueListAttribute.cs - Data/CopyrightInfo.cs - Data/HelpText.cs - Exceptions/IncompatibleTypesException.cs * Source code formatting follows my internal coding standards; very similar to Mono's one (see log record of 2007-07-10). * ValueListAttribute.cs Updated. Two public members 'Type ValueListAttribute.ConcreteType { get; }' and 'IList ValueListAttribute.GetReference(object)'are now marked internal. 2007-10-04 Giacomo Stelluti Scala * HelpOptionAttributeFixture.cs Updated. Tests added. * ParserFixture.cs Updated. Tests added. * HelpText.cs Updated. Now display help for HelpOptionAttribute too. * OptionAttribute.cs Updated. HelpText moved to BaseOptionAttribute. * BaseOptionAttribute.cs Updated. BaseOptionAttribute now includes HelpText property. * HelpOptionAttribute.cs Updated. Changed HelpOptionAttribute.Required { get; } to return false and don't raise exception. * ReflectionUtil.cs Updated. Added ReflectionUtil.RetrieveMethodAttributeOnly<>() method. 2007-08-13 Giacomo Stelluti Scala * Copyright notice included in #region/#endregion markers. * Files grouped in directories. * ReflectionUtilFixture.cs Added. * PairT.cs Added. * ReflectionUtil.cs Added. * OptionInfo.cs Updated. Used ReflectionUtil in OptionInfo.CreateMap(Type). * BaseOptionAttribute.cs Added. New base class for attribute types that models options. * OptionAttribute.cs Updated. Removed OptionAttribute.FromField(FieldInfo), it's no longer needed. * ValueListAttribute.cs Updated. Used ReflectionUtil in ValueListAttribute.GetField(object, out Type). * IncompatibleTypesException.cs Updated. Changed constructors from public to internal. * CopyrightInfoFixture.cs Added. * CopyrightInfo.cs Added. New public helper class for format copyright notice. * HelpText.cs Added. New public helper class for format help text. * HelpOptionAttributeFixture.cs Added. Tests for new help management feature. * HelpOptionAttribute.cs Added. New attribute for manage user help request from command line. * Validator.cs Added. Validates methods arguments and throws exceptions. * Parser.cs Updated. Added overload of ParseArguments for manage user help request Paser.ParseArguments(string[], object, TextWriter). * ArgumentParser.cs Updated. Added helper methods CompareShort/CompareLong(string, string). * CharEnumeratorEx.cs Updated. * StringEnumeratorEx.cs Updated. * SampleApp/Program.cs Updated. 2007-07-20 Giacomo Stelluti Scala * ValueListAttributeFixture.cs Added. * ValueListAttribute.cs Added. * IncompatibleTypesException.cs Added. * OptionInfo.cs Update. Removed duplicate method call in OptionInfo.CreateMap(Type). Added thread safety when modifying options instance with OptionInfo.SetValue(string/bool, options). * ValueContainer.cs Dropped. ValueContainer abstract class replaced by ValueList[Attribute]. * Parser.cs Updated. Used ValueListAttribute, removed ValueContainer. Added thread safety when modifying values of options instance with IList.Add(string). * Tests/ParserFixture.cs Updated. * IPartialParser.cs Dropped. * ArgumentParser.cs. Added. Replaces IPartialParser and Parser.CreateParser(string). 2007-07-10 Giacomo Stelluti Scala * Source files formatted following the Mono Coding Guidelines (http://www.mono-project.com/Coding_Guidelines). * Parser.cs Parser.IParser renamed to Parser.IPartialParser. Parser.ParseResult renamed to Parser.ParserState. Parser.IsInputValue() moved to ParserUtil (new class). Parser.Parser(Type) constructor made private (ref. #BUG0001). Parser class nested types moved to root namespace and marked internal. * IPartialParser.cs LongOptionParser.cs OptionGroupParser.cs OptionInfo.cs OptionMap.cs ParserState.cs ParserUtil.cs Created. * Tests/MockObjects.cs Dropped. Mock types made private and nested in ParserFixture class. * Tests/ParserFixture.cs Updated. Introduced test for #BUG0001. * Tests/OptionMapFixture.cs Added. * OptionMap.cs (old nested type Parser.OptionMap) Refactored using generics. * IPartialParser.cs (old nested type Parser.IParser) Updated. Changed method signature. 2007-06-30 Giacomo Stelluti Scala * Project moved from www.gotdotnet.com to www.codeplex.com. * Compiled for MS .NET Version 2.0 and Mono Profile 2.0. * Enumerator types refactored. * Test code refactored and extended. 2006-03-30 Giacomo Stelluti Scala * Interface IValueContainer changed to abstract class. * Minor bug fix (ref. #BUG0000): illegal short option assignment using tokens is now detected, ILLEGAL FORM: "-x=10" or "-x:10" LEGAL FORM: "-x10" or "-x 10". 2005-05-31 Giacomo Stelluti Scala * New design. 2005-05-05 Giacomo Stelluti Scala * Initial Release.