diff options
author | Jed Barber <jjbarber@y7mail.com> | 2012-05-14 22:13:30 +1000 |
---|---|---|
committer | Jed Barber <jjbarber@y7mail.com> | 2012-05-14 22:13:30 +1000 |
commit | 8e9f71bbec90d74390cae13db6f091bc5609f79e (patch) | |
tree | 838cf32c9742151d095c0903cfe2e34f9bdea52e /Parse.hs | |
parent | ca22154af94bb260c812af4e11441b5a79790575 (diff) |
Moved a number of article format parsing functions to a separate file
Diffstat (limited to 'Parse.hs')
-rw-r--r-- | Parse.hs | 45 |
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] |