On Mon, 2 Oct 2006, David Roundy wrote:
Usually this means that we've got some mixed up (and human-unfriendly) code
organization going on, and the code will benefit in readability from
adjusting the modules. In this case, get_long_option really belongs in
DarcsArguments, which defines the relevant data types. I also notice, that
get_long_option seems to be buggy in its treatment of options that have
more than one synonymous long option. I'm not sure that we use any such
options, but it looks to me like get_long_option is potentially buggy.
This is another danger of "blindly" exporting functions that aren't
currently exported at all: they might be bugless in their current use, but
misbehave under different usages. Ideally, exported functions shouldn't
behave like this, since they should be designed to be resistant to misuse
(either in that their name unambiguously defines their meaning, or even
better if their type can unambiguously define the meaning).
When you say this one is buggy, do you mean that if it received a OptDescr
DarcsFlag that had two or more long option strings (let's say it was
constructed with ["foo", "bar"]), it would construct a string like this:
"--foo--bar"
If modified like below, it would create comma-separated, human-friendly
strings from flags with any number of long opts:
get_long_option :: OptDescr DarcsFlag -> String
get_long_option (Option _ [] _ _) = ""
get_long_option (Option _ l _ _) = get_long_option' l where
get_long_option' [x] = x
get_long_option' (x:y:[]) = x ++ " or " ++ y
get_long_option' (x:xs) = x ++ ", " ++ get_long_option' xs
Output would be like this:
[] --> ""
["foo"] --> "--foo"
["foo", "bar"] --> "--foo or --bar"
["foo", "bar", "baz"] --> "--foo, --bar or --baz"
... commas from here on out ...
..or maybe I should leave it alone and find something else to do. :)
--
.~. Dino Morelli
/V\ email: [EMAIL PROTECTED]
/( )\ irc: dwm
^^-^^ preferred distro: Debian GNU/Linux http://www.debian.org
_______________________________________________
darcs-devel mailing list
[email protected]
http://www.abridgegame.org/cgi-bin/mailman/listinfo/darcs-devel