binsm-0.1.1: Maps.hs
module Maps where
import Data.Int
import Data.Maybe
import Numeric
import Text.Parsec
data Part = Part
{ start :: Int64
, end :: Int64
, name :: String
} deriving Show
rh = fst . head . readHex
dmesgLine = do
string "0x"
st <- many1 hexDigit
string "-0x"
en <- many1 hexDigit
string " : \""
name <- many $ noneOf "\""
string "\""
newline
return $ Just $ Part (rh st) (rh en) name
emptyLine = newline >> pure Nothing
dmesg :: String -> [Part]
dmesg s = catMaybes $ either (error . show) id $ parse (many1 (dmesgLine <|> emptyLine)) "" s