lowercase = map toLower
--- The application currently has two modes. The default, Regex, will
+-- The application currently has four modes. The default, Regex, will
-- compute a regular expression matching the input CIDRs. Reduce, on
-- the other hand, will combine any redundant/adjacent CIDR blocks
--- into one.
-data Mode = Regex | Reduce
+-- into one. Dupe will show you what would be removed by Reduce, and
+-- Diff will show both additions and deletions in a diff-like format.
+data Mode = Regex | Reduce | Dupe | Diff
-- A record containing values for all available options.
-- The usage header
usage :: String
-usage = "Usage: hath [-h] [-i FILE]"
+usage = "Usage: hath [regexed|reduced|duped|diffed] [-h] [-i FILE]"
-- The usage header, and all available flags (as generated by GetOpt)
else do
-- Some non-option was given, but were any of them modes?
case (lowercase (non_options !! 0)) of
- "regex" -> return Regex
- "reduce" -> return Reduce
- _ -> return Regex
+ "regex" -> return Regex
+ "regexed" -> return Regex
+ "reduce" -> return Reduce
+ "reduced" -> return Reduce
+ "dupe" -> return Dupe
+ "duped" -> return Dupe
+ "diff" -> return Diff
+ "diffed" -> return Diff
+ _ -> return Regex