Hello community,

here is the log from the commit of package ghc-cmdargs for openSUSE:Factory 
checked in at 2016-02-23 16:57:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-cmdargs (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-cmdargs.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-cmdargs"

Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-cmdargs/ghc-cmdargs.changes  2015-05-26 
12:36:28.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-cmdargs.new/ghc-cmdargs.changes     
2016-02-23 16:59:28.000000000 +0100
@@ -1,0 +2,8 @@
+Wed Feb 17 09:07:19 UTC 2016 - [email protected]
+
+- update to 0.10.14
+* ensure correct line breaks in HTML help output
+* preserve manual \n in help messages
+* reformat the README
+
+-------------------------------------------------------------------

Old:
----
  cmdargs-0.10.13.tar.gz

New:
----
  cmdargs-0.10.14.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-cmdargs.spec ++++++
--- /var/tmp/diff_new_pack.n0D68n/_old  2016-02-23 16:59:29.000000000 +0100
+++ /var/tmp/diff_new_pack.n0D68n/_new  2016-02-23 16:59:29.000000000 +0100
@@ -20,7 +20,7 @@
 # no useful debuginfo for Haskell packages without C sources
 %global debug_package %{nil}
 Name:           ghc-cmdargs
-Version:        0.10.13
+Version:        0.10.14
 Release:        0
 Summary:        Command line argument processing
 License:        BSD-3-Clause

++++++ cmdargs-0.10.13.tar.gz -> cmdargs-0.10.14.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cmdargs-0.10.13/CHANGES.txt 
new/cmdargs-0.10.14/CHANGES.txt
--- old/cmdargs-0.10.13/CHANGES.txt     2015-05-22 17:09:08.000000000 +0200
+++ new/cmdargs-0.10.14/CHANGES.txt     2016-02-16 12:21:26.000000000 +0100
@@ -1,5 +1,9 @@
 Changelog for CmdArgs
 
+0.10.14
+    #39, ensure correct line breaks in HTML help output
+    #18, preserve manual \n in help messages
+    #25, reformat the README
 0.10.13
     #24, support Ratio in some places
 0.10.12
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cmdargs-0.10.13/LICENSE new/cmdargs-0.10.14/LICENSE
--- old/cmdargs-0.10.13/LICENSE 2015-05-22 17:09:08.000000000 +0200
+++ new/cmdargs-0.10.14/LICENSE 2016-02-16 12:21:26.000000000 +0100
@@ -1,4 +1,4 @@
-Copyright Neil Mitchell 2009-2015.
+Copyright Neil Mitchell 2009-2016.
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cmdargs-0.10.13/README.md 
new/cmdargs-0.10.14/README.md
--- old/cmdargs-0.10.13/README.md       2015-05-22 17:09:08.000000000 +0200
+++ new/cmdargs-0.10.14/README.md       2016-02-16 12:21:26.000000000 +0100
@@ -1,67 +1,54 @@
 # CmdArgs: Easy Command Line Processing [![Hackage 
version](https://img.shields.io/hackage/v/cmdargs.svg?style=flat)](https://hackage.haskell.org/package/cmdargs)
 [![Build 
Status](https://img.shields.io/travis/ndmitchell/cmdargs.svg?style=flat)](https://travis-ci.org/ndmitchell/cmdargs)
 
-<p>
-       CmdArgs is a Haskell library for defining command line parsers. The two 
features that make it a better choice than the standard <a 
href="http://haskell.org/ghc/docs/latest/html/libraries/base/System-Console-GetOpt.html";>getopt
 library</a> are:
-</p>
-<ol>
-       <li>It's very concise to use. The HLint command line handling is three 
times shorter with CmdArgs.</li>
-       <li>It supports programs with multiple modes, such as <a 
href="http://darcs.net";>darcs</a> or <a 
href="http://haskell.org/cabal/";>Cabal</a>.</li>
-</ol>
-<p>
-       A very simple example of a command line processor is:
-</p>
-<pre>
-data Sample = Sample {hello :: String} deriving (Show, Data, Typeable)
-
-sample = Sample{hello = def &amp;= help "World argument" &amp;= opt "world"}
-         &amp;= summary "Sample v1"
-
-main = print =&lt;&lt; cmdArgs sample
-</pre>
-<p>
-       Despite being very concise, this processor is already fairly well 
featured:
-</p>
-<pre>
-$ runhaskell Sample.hs --hello=world
-Sample {hello = "world"}
-
-$ runhaskell Sample.hs --help
-Sample v1, (C) Neil Mitchell 2009
-
-sample [FLAG]
-
-  -? --help[=FORMAT]  Show usage information (optional format)
-  -V --version        Show version information
-  -v --verbose        Higher verbosity
-  -q --quiet          Lower verbosity
-  -h --hello=VALUE    World argument (default=world)
-</pre>
-
-<h2>User Manual</h2>
-
-<p>
-       The rest of this document explains how to write the "hello world" of 
command line processors, then how to extend it with features into a complex 
command line processor. Finally this document gives three samples, which the 
<tt>cmdargs</tt> program can run. The three samples are:
-</p>
-<ol>
-    <li><tt>hlint</tt> - the <a 
href="http://community.haskell.org/~ndm/hlint/";>HLint</a> program.</li>
-    <li><tt>diffy</tt> - a program to compare the differences between 
directories.</li>
-    <li><tt>maker</tt> - a make style program.</li>
-</ol>
-<p>
-       For each example you are encouraged to look at it's source (see the <a 
href="http://community.haskell.org/~ndm/darcs/hlint";>darcs repo</a>, or the 
bottom of this document) and run it (try <tt>cmdargs hlint --help</tt>). The 
HLint program is fairly standard in terms of it's argument processing, and 
previously used the <a 
href="http://haskell.org/ghc/docs/latest/html/libraries/base/System-Console-GetOpt.html";>System.Console.GetOpt</a>
 library. Using GetOpt required 90 lines and a reasonable amount of 
duplication. Using CmdArgs the code requires 30 lines, and the logic is much 
simpler.
-</p>
-<h3>Acknowledgements</h3>
-<p>
-       Thanks to Kevin Quick for substantial patches, and additional code 
contributions from Sebastian Fischer and Daniel Schoepe.
-</p>
-
-
-<h2>Hello World Example</h2>
-<p>
-       The following code defines a complete command line argument processor:
-</p>
+CmdArgs is a Haskell library for defining command line parsers. The two 
features that make it a better choice than the standard [getopt 
library](http://haskell.org/ghc/docs/latest/html/libraries/base/System-Console-GetOpt.html)
 are:
+
+* It's very concise to use. The HLint command line handling is three times 
shorter with CmdArgs.
+* It supports programs with multiple modes, such as [darcs](http://darcs.net) 
or [Cabal](http://haskell.org/cabal/).
+
+A very simple example of a command line processor is:
+
+    data Sample = Sample {hello :: String} deriving (Show, Data, Typeable)
+    
+    sample = Sample{hello = def &= help "World argument" &= opt "world"}
+             &= summary "Sample v1"
+    
+    main = print =<< cmdArgs sample
+
+Despite being very concise, this processor is already fairly well featured:
+
+    $ runhaskell Sample.hs --hello=world
+    Sample {hello = "world"}
+    
+    $ runhaskell Sample.hs --help
+    Sample v1, (C) Neil Mitchell 2009
+    
+    sample [FLAG]
+    
+      -? --help[=FORMAT]  Show usage information (optional format)
+      -V --version        Show version information
+      -v --verbose        Higher verbosity
+      -q --quiet          Lower verbosity
+      -h --hello=VALUE    World argument (default=world)
+
+## User Manual
+
+The rest of this document explains how to write the "hello world" of command 
line processors, then how to extend it with features into a complex command 
line processor. Finally this document gives three samples, which the `cmdargs` 
program can run. The three samples are:
+
+* `hlint` - the [HLint](https://github.com/ndmitchell/hlint#readme) program.
+* `diffy` - a program to compare the differences between directories.
+* `maker` - a make style program.
+
+For each example you are encouraged to look at it's source (in the 
[repo](https://github.com/ndmitchell/cmdargs/tree/master/System/Console/CmdArgs/Test/Implicit))
 and run it (try `cmdargs hlint --help`). The HLint program is fairly standard 
in terms of it's argument processing, and previously used the 
[System.Console.GetOpt](http://haskell.org/ghc/docs/latest/html/libraries/base/System-Console-GetOpt.html)
 library. Using GetOpt required 90 lines and a reasonable amount of 
duplication. Using CmdArgs the code requires 30 lines, and the logic is much 
simpler.
+
+**Acknowledgements** Thanks to Kevin Quick for substantial patches, and 
additional code contributions from Sebastian Fischer and Daniel Schoepe.
+
+
+## Hello World Example
+
+The following code defines a complete command line argument processor:
 
     {-# LANGUAGE DeriveDataTypeable #-}
+    {-# OPTIONS_GHC -fno-cse #-}
     module Sample where
     import System.Console.CmdArgs
     
@@ -72,65 +59,51 @@
     
     main = print =<< cmdArgs sample
 
-<p>
-       To use the CmdArgs library there are three steps:
-</p>
-<ol>
-       <li>Define a record data type (<tt>Sample</tt>) that contains a field 
for each argument. This type needs to have instances for <tt>Show</tt>, 
<tt>Data</tt> and <tt>Typeable</tt>.</li>
-       <li>Give a value of that type (<tt>sample</tt>) with default values 
(<tt>def</tt> is a default value of any type, but I could also have written 
<tt>""</tt>). This value is turned into a command line by calling the 
<tt>cmdArgs</tt> function.</li>
-</ol>
-<p>
-       Now we have a reasonably functional command line argument processor. 
Some sample interactions are:
-</p>
-<pre>
-$ runhaskell Sample.hs --hello=world
-Sample {hello = "world"}
-
-$ runhaskell Sample.hs --version
-The sample program
-
-$ runhaskell Sample.hs --help
-The sample program
-
-sample [OPTIONS]
-
-  -? --help        Display help message
-  -V --version     Print version information
-  -h --hello=ITEM
-</pre>
-<p>
-       CmdArgs uses defaults to automatically infer a command line parser for 
a value, and provides annotations to override any of the the defaults. CmdArgs 
automatically supports <tt>--help</tt> and <tt>--version</tt> flags, and 
optionally supports verbosity flags.
-</p>
-
-<h2>Specifying Attributes</h2>
-<p>
-       In order to control the behaviour we can add attributes. For example to 
add an attribute specifying the help text for the <tt>--hello</tt> argument we 
can write:
-</p>
-<pre>
-sample = Sample{hello = def &= help "Who to say hello to"}
-</pre>
-<p>
-       We can add additional attributes, for example to specify the type of 
the value expected by hello:
-</p>
-<pre>
-sample = Sample {hello = def &= help "Who to say hello to" &= typ "WORLD"}
-</pre>
-<p>
-       Now when running <tt>--help</tt> the final line is:
-</p>
-<pre>
-  -h --hello=WORLD  Who to say hello to
-</pre>
-<p>
-       There are many more attributes, detailed in the <a 
href="http://hackage.haskell.org/packages/archive/cmdargs/latest/doc/html/System-Console-CmdArgs.html#2";>Haddock
 documentation</a>.
-</p>
-
-
-<h2>Multiple Modes</h2>
-<p>
-       To specify a program with multiple modes, similar to <a 
href="http://darcs.net/";>darcs</a>, we can supply a data type with multiple 
constructors, for example:
-</p>
+To use the CmdArgs library there are three steps:
+
+* Define a record data type (`Sample`) that contains a field for each 
argument. This type needs to have instances for `Show`, `Data` and `Typeable`.
+* Give a value of that type (`sample`) with default values (`def` is a default 
value of any type, but I could also have written `""`). This value is turned 
into a command line by calling the `cmdArgs` function.
+* To ensure GHC evalutes attributes the right number of times we disable the 
CSE optimisation on this module.
+
+Now we have a reasonably functional command line argument processor. Some 
sample interactions are:
 
+    $ runhaskell Sample.hs --hello=world
+    Sample {hello = "world"}
+    
+    $ runhaskell Sample.hs --version
+    The sample program
+    
+    $ runhaskell Sample.hs --help
+    The sample program
+    
+    sample [OPTIONS]
+    
+      -? --help        Display help message
+      -V --version     Print version information
+      -h --hello=ITEM
+
+CmdArgs uses defaults to automatically infer a command line parser for a 
value, and provides annotations to override any of the the defaults. CmdArgs 
automatically supports `--help` and `--version` flags, and optionally supports 
verbosity flags.
+
+## Specifying Attributes
+
+In order to control the behaviour we can add attributes. For example to add an 
attribute specifying the help text for the `--hello` argument we can write:
+
+    sample = Sample{hello = def &= help "Who to say hello to"}
+
+We can add additional attributes, for example to specify the type of the value 
expected by hello:
+
+    sample = Sample {hello = def &= help "Who to say hello to" &= typ "WORLD"}
+
+Now when running `--help` the final line is:
+
+      -h --hello=WORLD  Who to say hello to
+
+There are many more attributes, detailed in the [Haddock 
documentation](http://hackage.haskell.org/packages/archive/cmdargs/latest/doc/html/System-Console-CmdArgs.html#2).
+
+
+## Multiple Modes
+
+To specify a program with multiple modes, similar to 
[darcs](http://darcs.net/), we can supply a data type with multiple 
constructors, for example:
     
     data Sample = Hello {whom :: String}
                 | Goodbye
@@ -141,103 +114,96 @@
     
     main = print =<< cmdArgs (modes [hello,goodbye])
 
-<p>
-       Compared to the first example, we now have multiple constructors, and a 
sample value for each constructor is passed to <tt>cmdArgs</tt>. Some sample 
interactions with this command line are:
-</p>
-<pre>
-$ runhaskell Sample.hs hello --whom=world
-Hello {whom = "world"}
-
-$ runhaskell Sample.hs goodbye
-Goodbye
-
-$ runhaskell Sample.hs --help
-The sample program
-
-sample [OPTIONS]
-
- Common flags
-  -? --help       Display help message
-  -V --version    Print version information
-
-sample hello [OPTIONS]
-
-  -w --whom=ITEM
-
-sample goodbye [OPTIONS]
-</pre>
-<p>
-       As before, the behaviour can be customised using attributes.
-</p>
-
-<h2>Larger Examples</h2>
-
-<p>
-       For each of the following examples we first explain the purpose of the 
program, then give the source code, and finally the output of 
<tt>--help=HTML</tt>. The programs are intended to show sample uses of CmdArgs, 
and are available to experiment with through <tt>cmdargs <i>progname</i></tt>.
-</p>
-
-<h3>HLint</h3>
-
-<p>
-       The <a href="http://community.haskell.org/~ndm/hlint/";>HLint</a> 
program analyses a list of files, using various options to control the 
analysis. The command line processing is simple, but a few interesting points 
are:
-</p>
-<ul>
-       <li>The <tt>--report</tt> flag can be used to output a report in a 
standard location, but giving the flag a value changes where the file is 
output.</li>
-       <li>The <tt>color</tt> field is assigned two flag aliases, 
<tt>--colour</tt> and <tt>-c</tt>. Assigning the <tt>-c</tt> short flag 
explicitly stops either of the CPP fields using it.</li>
-       <li>The <tt>show_</tt> field would clash with <tt>show</tt> if given 
the expected name, but CmdArgs automatically strips the trailing 
underscore.</li>
-       <li>The <tt>cpp_define</tt> field has an underscore in it's name, which 
is transformed into a hyphen for the flag name.</li>
-</ul>
-
-<!-- BEGIN code hlint -->
-<pre>
-{-# LANGUAGE DeriveDataTypeable #-}
-module HLint where
-import System.Console.CmdArgs
-
-data HLint = HLint
-    {report :: [FilePath]
-    ,hint :: [FilePath]
-    ,color :: Bool
-    ,ignore_ :: [String]
-    ,show_ :: Bool
-    ,extension :: [String]
-    ,language :: [String]
-    ,utf8 :: Bool
-    ,encoding :: String
-    ,find :: [FilePath]
-    ,test_ :: Bool
-    ,datadir :: [FilePath]
-    ,cpp_define :: [String]
-    ,cpp_include :: [FilePath]
-    ,files :: [FilePath]
-    }
-    deriving (Data,Typeable,Show,Eq)
-
-hlint = HLint
-    {report = def &= opt "report.html" &= typFile &= help "Generate a report 
in HTML"
-    ,hint = def &= typFile &= help "Hint/ignore file to use"
-    ,color = def &= name "c" &= name "colour" &= help "Color the output 
(requires ANSI terminal)"
-    ,ignore_ = def &= typ "MESSAGE" &= help "Ignore a particular hint"
-    ,show_ = def &= help "Show all ignored ideas"
-    ,extension = def &= typ "EXT" &= help "File extensions to search (defaults 
to hs and lhs)"
-    ,language = def &= name "X" &= typ "LANG" &= help "Language extension 
(Arrows, NoCPP)"
-    ,utf8 = def &= help "Use UTF-8 text encoding"
-    ,encoding = def &= typ "ENC" &= help "Choose the text encoding"
-    ,find = def &= typFile &= help "Find hints in a Haskell file"
-    ,test_ = def &= help "Run in test mode"
-    ,datadir = def &= typDir &= help "Override the data directory"
-    ,cpp_define = def &= typ "NAME[=VALUE]" &= help "CPP #define"
-    ,cpp_include = def &= typDir &= help "CPP include path"
-    ,files = def &= args &= typ "FILES/DIRS"
-    } &=
-    verbosity &=
-    help "Suggest improvements to Haskell source code" &=
-    summary "HLint v0.0.0, (C) Neil Mitchell" &=
-    details ["Hlint gives hints on how to improve Haskell code",""
-            ,"To check all Haskell files in 'src' and generate a report 
type:","  hlint src --report"]
+Compared to the first example, we now have multiple constructors, and a sample 
value for each constructor is passed to `cmdArgs`. Some sample interactions 
with this command line are:
+
+    $ runhaskell Sample.hs hello --whom=world
+    Hello {whom = "world"}
+    
+    $ runhaskell Sample.hs goodbye
+    Goodbye
+    
+    $ runhaskell Sample.hs --help
+    The sample program
+    
+    sample [OPTIONS]
+    
+     Common flags
+      -? --help       Display help message
+      -V --version    Print version information
+    
+    sample hello [OPTIONS]
+    
+      -w --whom=ITEM
+    
+    sample goodbye [OPTIONS]
+
+As before, the behaviour can be customised using attributes.
+
 
-mode = cmdArgsMode hlint
-</pre>
+## Larger Examples
+
+For each of the following examples we first explain the purpose of the 
program, then give the source code, and finally the output of `--help`. The 
programs are intended to show sample uses of CmdArgs, and are available to 
experiment with through `cmdargs progname`.
+
+### HLint
+
+The [HLint](https://github.com/ndmitchell/hlint#readme) program analyses a 
list of files, using various options to control the analysis. The command line 
processing is simple, but a few interesting points are:
+
+* The `--report` flag can be used to output a report in a standard location, 
but giving the flag a value changes where the file is output.
+* The `color` field is assigned two flag aliases, `--colour` and `-c`. 
Assigning the `-c` short flag explicitly stops either of the CPP fields using 
it.
+* The `show_` field would clash with `show` if given the expected name, but 
CmdArgs automatically strips the trailing underscore.
+* The `cpp_define` field has an underscore in it's name, which is transformed 
into a hyphen for the flag name.
+
+The code is:
+
+    {-# LANGUAGE DeriveDataTypeable #-}
+    module HLint where
+    import System.Console.CmdArgs
+    
+    data HLint = HLint
+        {report :: [FilePath]
+        ,hint :: [FilePath]
+        ,color :: Bool
+        ,ignore_ :: [String]
+        ,show_ :: Bool
+        ,extension :: [String]
+        ,language :: [String]
+        ,utf8 :: Bool
+        ,encoding :: String
+        ,find :: [FilePath]
+        ,test_ :: Bool
+        ,datadir :: [FilePath]
+        ,cpp_define :: [String]
+        ,cpp_include :: [FilePath]
+        ,files :: [FilePath]
+        }
+        deriving (Data,Typeable,Show,Eq)
+    
+    hlint = HLint
+        {report = def &= opt "report.html" &= typFile &= help "Generate a 
report in HTML"
+        ,hint = def &= typFile &= help "Hint/ignore file to use"
+        ,color = def &= name "c" &= name "colour" &= help "Color the output 
(requires ANSI terminal)"
+        ,ignore_ = def &= typ "MESSAGE" &= help "Ignore a particular hint"
+        ,show_ = def &= help "Show all ignored ideas"
+        ,extension = def &= typ "EXT" &= help "File extensions to search 
(defaults to hs and lhs)"
+        ,language = def &= name "X" &= typ "LANG" &= help "Language extension 
(Arrows, NoCPP)"
+        ,utf8 = def &= help "Use UTF-8 text encoding"
+        ,encoding = def &= typ "ENC" &= help "Choose the text encoding"
+        ,find = def &= typFile &= help "Find hints in a Haskell file"
+        ,test_ = def &= help "Run in test mode"
+        ,datadir = def &= typDir &= help "Override the data directory"
+        ,cpp_define = def &= typ "NAME[=VALUE]" &= help "CPP #define"
+        ,cpp_include = def &= typDir &= help "CPP include path"
+        ,files = def &= args &= typ "FILES/DIRS"
+        } &=
+        verbosity &=
+        help "Suggest improvements to Haskell source code" &=
+        summary "HLint v0.0.0, (C) Neil Mitchell" &=
+        details ["Hlint gives hints on how to improve Haskell code",""
+                ,"To check all Haskell files in 'src' and generate a report 
type:","  hlint src --report"]
+    
+    mode = cmdArgsMode hlint
+
+Produces the `--help` output:
 
     HLint v0.0.0, (C) Neil Mitchell
     
@@ -245,138 +211,132 @@
     Suggest improvements to Haskell source code
     
     Common flags:
-      -r --report[=FILE]               Generate a report in HTML
-      -h --hint=FILE               Hint/ignore file to use
-      -c --colour --color              Color the output (requires ANSI 
terminal)
-      -i --ignore=MESSAGE              Ignore a particular hint
+      -r --report[=FILE]            Generate a report in HTML
+      -h --hint=FILE                Hint/ignore file to use
+      -c --colour --color            Color the output (requires ANSI terminal)
+      -i --ignore=MESSAGE            Ignore a particular hint
       -s --show                     Show all ignored ideas
          --extension=EXT            File extensions to search (defaults to hs 
and lhs)
-      -X --language=LANG               Language extension (Arrows, NoCPP)
-      -u --utf8                            Use UTF-8 text encoding
-         --encoding=ENC                    Choose the text encoding
-      -f --find=FILE               Find hints in a Haskell file
-      -t --test                            Run in test mode
-      -d --datadir=DIR             Override the data directory
+      -X --language=LANG            Language extension (Arrows, NoCPP)
+      -u --utf8                        Use UTF-8 text encoding
+         --encoding=ENC                Choose the text encoding
+      -f --find=FILE                Find hints in a Haskell file
+      -t --test                        Run in test mode
+      -d --datadir=DIR                Override the data directory
          --cpp-define=NAME[=VALUE]  CPP #define
-         --cpp-include=DIR             CPP include path
-      -? --help                            Display help message
-      -V --version                     Print version information
-      -v --verbose                     Loud verbosity
-      -q --quiet                       Quiet verbosity
+         --cpp-include=DIR            CPP include path
+      -? --help                        Display help message
+      -V --version                    Print version information
+      -v --verbose                    Loud verbosity
+      -q --quiet                    Quiet verbosity
     
     Hlint gives hints on how to improve Haskell code
     
     To check all Haskell files in 'src' and generate a report type:
       hlint src --report
-       
+    
+
+### Diffy
+
+The Diffy sample is a based on the idea of creating directory listings and 
comparing them. The tool can operate in two separate modes, `create` or `diff`. 
This sample is fictional, but the ideas are drawn from a real program. A few 
notable features:
+
+* There are multiple modes of execution, creating and diffing.
+* The diff mode takes exactly two arguments, the old file and the new file.
+* Default values are given for the `out` field, which are different in both 
modes.
+
+The code is:
+
+    {-# LANGUAGE DeriveDataTypeable #-}
+    module Diffy where
+    import System.Console.CmdArgs
+    
+    data Diffy = Create {src :: Maybe FilePath, out :: FilePath}
+               | Diff {old :: FilePath, new :: FilePath, out :: FilePath}
+                 deriving (Data,Typeable,Show,Eq)
+    
+    outFlags x = x &= help "Output file" &= typFile
+    
+    create = Create
+        {src = def &= help "Source directory" &= typDir
+        ,out = outFlags "ls.txt"
+        } &= help "Create a fingerprint"
+    
+    diff = Diff
+        {old = def &= typ "OLDFILE" &= argPos 0
+        ,new = def &= typ "NEWFILE" &= argPos 1
+        ,out = outFlags "diff.txt"
+        } &= help "Perform a diff"
+    
+    mode = cmdArgsMode $ modes [create,diff] &= help "Create and compare 
differences" &= program "diffy" &= summary "Diffy v1.0"
+
+And `--help` produces:
+
+    Diffy v1.0
+     
+    diffy [COMMAND] ... [OPTIONS]
+      Create and compare differences
+     
+    Common flags:
+      -o --out=FILE     Output file
+      -? --help         Display help message
+      -V --version     Print version information
+     
+    diffy create [OPTIONS]
+      Create a fingerprint
+     
+      -s  --src=DIR  Source directory
+     
+    diffy diff [OPTIONS] OLDFILE NEWFILE
+      Perform a diff
+
+### Maker
+
+The Maker sample is based around a build system, where we can either build a 
project, clean the temporary files, or run a test. Some interesting features 
are:
+
+* The build mode is the default, so `maker` on it's own will be interpreted as 
a build command.
+* The build method is an enumeration.
+* The `threads` field is in two of the constructors, but not all three. It is 
given the short flag `-j`, rather than the default `-t`.
+
+The code is:
+
+    {-# LANGUAGE DeriveDataTypeable #-}
+    module Maker where
+    import System.Console.CmdArgs
+    
+    data Method = Debug | Release | Profile
+                  deriving (Data,Typeable,Show,Eq)
+    
+    data Maker
+        = Wipe
+        | Test {threads :: Int, extra :: [String]}
+        | Build {threads :: Int, method :: Method, files :: [FilePath]}
+          deriving (Data,Typeable,Show,Eq)
+    
+    threadsMsg x = x &= help "Number of threads to use" &= name "j" &= typ 
"NUM"
+    
+    wipe = Wipe &= help "Clean all build objects"
+    
+    test_ = Test
+        {threads = threadsMsg def
+        ,extra = def &= typ "ANY" &= args
+        } &= help "Run the test suite"
+    
+    build = Build
+        {threads = threadsMsg def
+        ,method = enum
+            [Release &= help "Release build"
+            ,Debug &= help "Debug build"
+            ,Profile &= help "Profile build"]
+        ,files = def &= args
+        } &= help "Build the project" &= auto
+    
+    mode = cmdArgsMode $ modes [build,wipe,test_]
+         &= help "Build helper program"
+         &= program "maker"
+         &= summary "Maker v1.0\nMake it"
 
-<h3>Diffy</h3>
+And `--help` produces:
 
-<p>
-       The Diffy sample is a based on the idea of creating directory listings 
and comparing them. The tool can operate in two separate modes, <tt>create</tt> 
or <tt>diff</tt>. This sample is fictional, but the ideas are drawn from a real 
program. A few notable features:
-</p>
-<ul>
-       <li>There are multiple modes of execution, creating and diffing.</li>
-       <li>The diff mode takes exactly two arguments, the old file and the new 
file.</li>
-       <li>Default values are given for the <tt>out</tt> field, which are 
different in both modes.</li>
-</ul>
-
-<!-- BEGIN code diffy -->
-<pre>
-{-# LANGUAGE DeriveDataTypeable #-}
-module Diffy where
-import System.Console.CmdArgs
-
-data Diffy = Create {src :: Maybe FilePath, out :: FilePath}
-           | Diff {old :: FilePath, new :: FilePath, out :: FilePath}
-             deriving (Data,Typeable,Show,Eq)
-
-outFlags x = x &= help "Output file" &= typFile
-
-create = Create
-    {src = def &= help "Source directory" &= typDir
-    ,out = outFlags "ls.txt"
-    } &= help "Create a fingerprint"
-
-diff = Diff
-    {old = def &= typ "OLDFILE" &= argPos 0
-    ,new = def &= typ "NEWFILE" &= argPos 1
-    ,out = outFlags "diff.txt"
-    } &= help "Perform a diff"
-
-mode = cmdArgsMode $ modes [create,diff] &= help "Create and compare 
differences" &= program "diffy" &= summary "Diffy v1.0"
-</pre>
-<!-- END -->
-<!-- BEGIN help diffy -->
-       Diffy v1.0
-        
-       diffy [COMMAND] ... [OPTIONS]
-         Create and compare differences
-        
-       Common flags:
-         -o --out=FILE  Output file
-         -? --help          Display help message
-         -V --version   Print version information
-        
-       diffy create [OPTIONS]
-         Create a fingerprint
-        
-         -s  --src=DIR  Source directory
-        
-       diffy diff [OPTIONS] OLDFILE NEWFILE
-         Perform a diff
-
-<!-- END -->
-
-<h3>Maker</h3>
-
-<p>
-       The Maker sample is based around a build system, where we can either 
build a project, clean the temporary files, or run a test. Some interesting 
features are:
-</p>
-<ul>
-       <li>The build mode is the default, so <tt>maker</tt> on it's own will 
be interpretted as a build command.</li>
-       <li>The build method is an enumeration.</li>
-       <li>The <tt>threads</tt> field is in two of the constructors, but not 
all three. It is given the short flag <tt>-j</tt>, rather than the default 
<tt>-t</tt>.</li>
-</ul>
-
-
-<!-- BEGIN code maker -->
-<pre>
-{-# LANGUAGE DeriveDataTypeable #-}
-module Maker where
-import System.Console.CmdArgs
-
-data Method = Debug | Release | Profile
-              deriving (Data,Typeable,Show,Eq)
-
-data Maker
-    = Wipe
-    | Test {threads :: Int, extra :: [String]}
-    | Build {threads :: Int, method :: Method, files :: [FilePath]}
-      deriving (Data,Typeable,Show,Eq)
-
-threadsMsg x = x &= help "Number of threads to use" &= name "j" &= typ "NUM"
-
-wipe = Wipe &= help "Clean all build objects"
-
-test_ = Test
-    {threads = threadsMsg def
-    ,extra = def &= typ "ANY" &= args
-    } &= help "Run the test suite"
-
-build = Build
-    {threads = threadsMsg def
-    ,method = enum
-        [Release &= help "Release build"
-        ,Debug &= help "Debug build"
-        ,Profile &= help "Profile build"]
-    ,files = def &= args
-    } &= help "Build the project" &= auto
-
-mode = cmdArgsMode $ modes [build,wipe,test_] &= help "Build helper program" 
&= program "maker" &= summary "Maker v1.0\nMake it"
-</pre>
-<!-- END -->
-<!-- BEGIN help maker -->
     Maker v1.0
       Make it
      
@@ -402,4 +362,3 @@
       Run the test suite
      
       -j --threads=NUM  Number of threads to use
-<!-- END -->
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cmdargs-0.10.13/System/Console/CmdArgs/Test/Implicit/Tests.hs 
new/cmdargs-0.10.14/System/Console/CmdArgs/Test/Implicit/Tests.hs
--- old/cmdargs-0.10.13/System/Console/CmdArgs/Test/Implicit/Tests.hs   
2015-05-22 17:09:08.000000000 +0200
+++ new/cmdargs-0.10.14/System/Console/CmdArgs/Test/Implicit/Tests.hs   
2016-02-16 12:21:26.000000000 +0100
@@ -266,12 +266,12 @@
 data Test15 = Test15 {test15a :: Bool} deriving (Eq,Show,Data,Typeable)
 
 mode15 = cmdArgsMode $ Test15 (False &= name "help")
-         &= helpArg [groupname "GROUP", name "h", name "nohelp", explicit, 
help "whatever"] &= versionArg [ignore]
+         &= helpArg [groupname "GROUP", name "h", name "nohelp", explicit, 
help "whatever\nstuff"] &= versionArg [ignore]
          &= verbosityArgs [ignore] [explicit,name "silent"]
 
 $(cmdArgsQuote [d|
     mode15_ = cmdArgsMode# $ Test15 (False &=# name "help")
-              &=# helpArg [groupname "GROUP", name "h", name "nohelp", 
explicit, help "whatever"] &=# versionArg [ignore]
+              &=# helpArg [groupname "GROUP", name "h", name "nohelp", 
explicit, help "whatever\nstuff"] &=# versionArg [ignore]
               &=# verbosityArgs [ignore] [explicit,name "silent"]
     |])
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cmdargs-0.10.13/System/Console/CmdArgs/Text.hs 
new/cmdargs-0.10.14/System/Console/CmdArgs/Text.hs
--- old/cmdargs-0.10.13/System/Console/CmdArgs/Text.hs  2015-05-22 
17:09:08.000000000 +0200
+++ new/cmdargs-0.10.14/System/Console/CmdArgs/Text.hs  2016-02-16 
12:21:26.000000000 +0100
@@ -107,7 +107,7 @@
 
 -- | Split the text into strips of no-more than the given width
 wrap :: Int -> String -> [String]
-wrap width = combine . split
+wrap width = concatMap (combine . split) . lines
     where
         split :: String -> [(String,Int)] -- string, amount of space after
         split "" = []
@@ -131,18 +131,24 @@
     map f xs ++
     ["</table>"]
     where
-        cols = maximum [length x | Cols x <- xs]
+        maxCols = maximum [length x | Cols x <- xs]
 
-        f (Line x) = tr $ td cols x
-        f (Cols xs) = tr $ concatMap (td 1) (init xs) ++ td (cols + 1 - length 
xs) (last xs)
+        f (Line x) = tr $ td maxCols x
+        f (Cols xs) = tr $ concatMap (td 1) (init xs) ++ td (maxCols + 1 - 
length xs) (last xs)
 
         tr x = "<tr>" ++ x ++ "</tr>"
         td cols x = "<td" ++ (if cols == 1 then "" else " colspan='" ++ show 
cols ++ "'")
-                          ++ (if a /= "" then " style='padding-left:" ++ show 
(length a) ++ "ex;'" else "") ++
+                          ++ (if null styles then "" else " style='" ++ 
unwords styles ++ "'") ++
                      ">" ++ if null b then "&nbsp;" else concatMap esc b ++ 
"</td>"
             where (a,b) = span isSpace x
+                  -- if the first letter of the contents is '-', assume this 
is a flag
+                  -- and be aware that HTML might try to line-break it, see #39
+                  isFlag = take 1 b == "-"
+                  styles = [ "padding-left:" ++ show (length a) ++ "ex;" | a 
/= "" ]
+                        ++ [ "white-space:nowrap;" | isFlag ]
 
         esc '&' = "&amp;"
         esc '>' = "&gt;"
         esc '<' = "&lt;"
+        esc '\n' = "<br />"
         esc x = [x]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cmdargs-0.10.13/cmdargs.cabal 
new/cmdargs-0.10.14/cmdargs.cabal
--- old/cmdargs-0.10.13/cmdargs.cabal   2015-05-22 17:09:08.000000000 +0200
+++ new/cmdargs-0.10.14/cmdargs.cabal   2016-02-16 12:21:26.000000000 +0100
@@ -1,13 +1,13 @@
 cabal-version:      >= 1.6
 build-type:         Simple
 name:               cmdargs
-version:            0.10.13
+version:            0.10.14
 license:            BSD3
 license-file:       LICENSE
 category:           Console
 author:             Neil Mitchell <[email protected]>
 maintainer:         Neil Mitchell <[email protected]>
-copyright:          Neil Mitchell 2009-2015
+copyright:          Neil Mitchell 2009-2016
 synopsis:           Command line argument processing
 description:
     This library provides an easy way to define command line parsers. Most 
users
@@ -29,11 +29,11 @@
     For a general reference on what command line flags are commonly used,
     see <http://www.faqs.org/docs/artu/ch10s05.html>.
 bug-reports:        https://github.com/ndmitchell/cmdargs/issues
-homepage:           http://community.haskell.org/~ndm/cmdargs/
-extra-source-files:
+homepage:           https://github.com/ndmitchell/cmdargs#readme
+extra-doc-files:
     README.md
     CHANGES.txt
-tested-with:        GHC==7.10.1, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2, GHC==7.2.2
+tested-with:        GHC==8.0.1, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
 
 source-repository head
     type:     git


Reply via email to