]> gitweb.michael.orlitzky.com - hath.git/commitdiff
Separate a few functions out in to a ListUtils module.
authorMichael Orlitzky <michael@orlitzky.com>
Fri, 2 Apr 2010 04:37:10 +0000 (00:37 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Fri, 2 Apr 2010 04:37:10 +0000 (00:37 -0400)
src/ListUtils.hs [new file with mode: 0644]
src/hath.hs

diff --git a/src/ListUtils.hs b/src/ListUtils.hs
new file mode 100644 (file)
index 0000000..5ec9120
--- /dev/null
@@ -0,0 +1,37 @@
+module ListUtils
+( pad_left_to,
+  pad_right_to,
+  splitWith
+) where
+
+
+-- Stolen from ByteString. Splits a list at each element satisfying
+-- the predicate p.
+splitWith :: (a -> Bool) -> [a] -> [[a]]
+splitWith p xs =
+    ys : case zs of
+           []   -> []
+           _:ws -> splitWith p ws
+    where (ys,zs) = break p xs
+
+
+-- Pads a list (on the left) to length len by prepending pad_elem.
+pad_left_to :: Int -> a -> [a] -> [a]
+pad_left_to len pad_elem xs =
+     if (length xs) >= len then
+         xs
+     else
+         (replicate padcount pad_elem) ++ xs
+         where
+           padcount = len - (length xs)
+
+
+-- Pads a list (on the right) to length len by appending pad_elem.
+pad_right_to :: Int -> a -> [a] -> [a]
+pad_right_to len pad_elem xs =
+     if (length xs) >= len then
+         xs
+     else
+         xs ++ (replicate padcount pad_elem)
+         where
+           padcount = len - (length xs)
index 7b406a8ce9f3332a182d9ff087a9b8ec9011d19d..669ed4f7aff847d6b25505f786056fd66783160c 100644 (file)
@@ -4,16 +4,7 @@ import qualified Numeric as N
 import System.Exit (exitFailure)
 import Text.Regex.Posix
 
-
--- Stolen from ByteString. Splits a list at each element satisfying
--- the predicate p.
-splitWith :: (a -> Bool) -> [a] -> [[a]]
-splitWith p xs =
-    ys : case zs of
-           []   -> []
-           _:ws -> splitWith p ws
-    where (ys,zs) = break p xs
-
+import ListUtils
 
 -- Takes an IP address in CIDR notation, and returns a list of its
 -- octets (converted to Int).
@@ -27,28 +18,6 @@ maskbits :: String -> Int
 maskbits cidr = read ((splitWith (`elem` "/") cidr) !! 1)
 
 
--- Pads a list (on the left) to length len by prepending pad_elem.
-pad_left_to :: Int -> a -> [a] -> [a]
-pad_left_to len pad_elem xs =
-     if (length xs) >= len then
-         xs
-     else
-         (replicate padcount pad_elem) ++ xs
-         where
-           padcount = len - (length xs)
-
-
--- Pads a list (on the right) to length len by appending pad_elem.
-pad_right_to :: Int -> a -> [a] -> [a]
-pad_right_to len pad_elem xs =
-     if (length xs) >= len then
-         xs
-     else
-         xs ++ (replicate padcount pad_elem)
-         where
-           padcount = len - (length xs)
-
-
 -- Takes an Int, and returns its base-two representation as a String.
 base_two :: Int -> String
 base_two n = N.showIntAtBase 2 DC.intToDigit n ""