From maechler at stat.math.ethz.ch  Sat Sep 13 15:25:19 2008
From: maechler at stat.math.ethz.ch (maechler at stat.math.ethz.ch)
Date: Sat, 13 Sep 2008 15:25:19 +0200 (CEST)
Subject: [Rd] write.dcf does not quote as Debian would like it to
	(PR#12816)
Message-ID: <20080913132519.5D423282EF48@mail.pubhealth.ku.dk>

>>>>> "chb" == blundellc  <blundellc at gmail.com>
>>>>>     on Fri, 12 Sep 2008 22:10:14 +0200 (CEST) writes:

    chb> Full_Name: charles blundell
    chb> Version: 2.7.0
    chb> OS: Debian GNU/Linux
    chb> Submission from: (NULL) (217.37.73.202)


    chb> The Debian Policy Manual says concerning lines in a
    chb> Description field: * Those containing a space, a full
    chb> stop and some more characters. These are for future
    chb> expansion. Do not use them.  (section 5.6.13,
    chb> http://www.debian.org/doc/debian-policy/ch-controlfields.html)

    chb> But for example:
    >> write.dcf(list(Description = 'there was a fat goat .haha'),indent=1,width=10)
    chb> Description:
    chb>  there
    chb>  was a
    chb>  fat goat
    chb>  .haha

    chb> A simple quoting scheme is to add a space in front of such full stops:
    chb> --- src/library/base/R/dcf.R.orig       2008-09-12 20:42:37.000000000 +0100
    chb> +++ src/library/base/R/dcf.R    2008-09-12 20:54:16.000000000 +0100
    chb> @@ -133,7 +133,7 @@
    chb> ## * We have to handle multiple fields per record.

    chb> escape_paragraphs <- function(s)
    chb> -        gsub("\n[[:space:]]*\n", "\n .\n ", s)
    chb> +        gsub("\n \\.([^\n])","\n  .\\1", gsub("\n[[:space:]]*\n", "\n .\n ",
    chb> s))

    chb> if(!is.data.frame(x))
    chb> x <- as.data.frame(x, stringsAsFactors = FALSE)


    chb> As so:
    >> write.dcf(list(Description = 'there was a fat goat .haha'),indent=1,width=10)
    chb> Description:
    chb>  there
    chb>  was a
    chb>  fat goat
    chb>   .haha

    chb> Doing this makes life easier for cran2deb as we can
    chb> generate valid Debian control files using write.dcf.

That sounds a good enough reason to make the change, notably
since I cannot see a case (in other uses of write.dcf())
where this would be undesirable.

I'm going to test this quickly and will most probably add it to
R-devel (R.2.8.0 to be).

Martin Maechler, ETH Zurich



[Rd] write.dcf does not quote as Debian would like it to (PR#12816)
maechler at stat.math.ethz.ch