summaryrefslogtreecommitdiff
path: root/Parse.hs
diff options
context:
space:
mode:
authorJed Barber <jjbarber@y7mail.com>2012-05-14 22:13:30 +1000
committerJed Barber <jjbarber@y7mail.com>2012-05-14 22:13:30 +1000
commit8e9f71bbec90d74390cae13db6f091bc5609f79e (patch)
tree838cf32c9742151d095c0903cfe2e34f9bdea52e /Parse.hs
parentca22154af94bb260c812af4e11441b5a79790575 (diff)
Moved a number of article format parsing functions to a separate file
Diffstat (limited to 'Parse.hs')
-rw-r--r--Parse.hs45
1 files changed, 45 insertions, 0 deletions
diff --git a/Parse.hs b/Parse.hs
new file mode 100644
index 0000000..769a883
--- /dev/null
+++ b/Parse.hs
@@ -0,0 +1,45 @@
+import Control.Monad( liftM )
+import qualified Data.Char as Char
+
+
+getLines :: FilePath -> IO [String]
+getLines = liftM lines . readFile
+
+
+stripReturn :: String -> String
+stripReturn s = if (last s == '\r') then init s else s
+
+
+removeEscChars :: String -> String
+removeEscChars [] = []
+removeEscChars (x:[]) = [x]
+removeEscChars x = if (head x == '\\')
+ then (x!!1) : (removeEscChars . (drop 2) $ x)
+ else (head x) : (removeEscChars . tail $ x)
+
+
+removeQuotes :: String -> String
+removeQuotes = init . tail
+
+
+separateBy :: String -> Char -> [String]
+separateBy char list =
+ let f = (\x -> if (x == char)
+ then ' '
+ else x)
+ in words . (map f) $ list
+
+
+isComment :: String -> Bool
+isComment = (==) '#' . head
+
+
+isNumber :: String -> Bool
+isNumber ('0':[]) = True
+isNumber ('-':ns)
+ | (ns /= [] && head ns /= '0') = isNumber ns
+isNumber n = all (Char.isNumber) n
+
+
+isName :: String -> Bool
+isName s = all ((==) '"') [head s, last s]