lhe 0.1.1 → 0.2
raw patch · 3 files changed
+71/−71 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Text.LHE: Event :: [Double] -> [[Double]] -> Event
- Text.LHE: RawEvent :: [Double] -> [[Double]] -> RawEvent
- Text.LHE: data Event
- Text.LHE: data RawEvent
- Text.LHE: instance Eq Event
- Text.LHE: instance Eq Init
- Text.LHE: instance Eq RawEvent
- Text.LHE: instance Read Event
- Text.LHE: instance Read Init
- Text.LHE: instance Read RawEvent
- Text.LHE: instance Show Event
- Text.LHE: instance Show Init
- Text.LHE: instance Show RawEvent
- Text.LHE: parseEventFile :: String -> IO [Event]
- Text.LHE: parseEvents :: String -> String -> [Event]
- Text.LHE: parseRawEventFile :: String -> IO [RawEvent]
- Text.LHE: parseRawEvents :: String -> String -> [RawEvent]
- Text.LHE: version :: String
+ Data.LHE: Event :: [Double] -> [[Double]] -> Event
+ Data.LHE: RawEvent :: [Double] -> [[Double]] -> RawEvent
+ Data.LHE: data Event
+ Data.LHE: data RawEvent
+ Data.LHE: instance Eq Event
+ Data.LHE: instance Eq Init
+ Data.LHE: instance Eq RawEvent
+ Data.LHE: instance Read Event
+ Data.LHE: instance Read Init
+ Data.LHE: instance Read RawEvent
+ Data.LHE: instance Show Event
+ Data.LHE: instance Show Init
+ Data.LHE: instance Show RawEvent
+ Data.LHE: parseEventFile :: String -> IO [Event]
+ Data.LHE: parseEvents :: String -> String -> [Event]
+ Data.LHE: parseRawEventFile :: String -> IO [RawEvent]
+ Data.LHE: parseRawEvents :: String -> String -> [RawEvent]
+ Data.LHE: version :: String
Files
- Data/LHE.hs +68/−0
- Text/LHE.hs +0/−68
- lhe.cabal +3/−3
+ Data/LHE.hs view
@@ -0,0 +1,68 @@+{-|++This module provides a pure haskell implementation of a parser and writer for+the Les-Houches event file format. (Note that the writer doesn't actually exist+yet.)++-}+module Data.LHE (+ -- |The major and minor parts of this version of lhe.+ version,++ parseEventFile,+ parseEvents,++ parseRawEventFile,+ parseRawEvents,++ Event(..),+ RawEvent(..),+) where++import Text.XML.HaXml.Parse (xmlParse)+import Text.XML.HaXml.Types (Document(..), Element(..), Content(..), QName(..))++data Init = Init+ deriving (Eq, Show, Read)++data Event = Event [Double] [[Double]]+ deriving (Eq, Show, Read)++data RawEvent = RawEvent [Double] [[Double]]+ deriving (Eq, Show, Read)++version :: String+version = "0.1.1"++parseEventFile :: String -> IO [Event]+parseEventFile fname = do+ readFile fname >>= return . parseEvents fname++parseEvents :: String -> String -> [Event]+parseEvents fname dat =+ let re = parseRawEvents fname dat in+ []++parseRawEventFile :: String -> IO [RawEvent]+parseRawEventFile fname = do+ readFile fname >>= return . parseRawEvents fname++parseRawEvents :: String -> String -> [RawEvent]+parseRawEvents fname dat =+ let Document _ _ (Elem eName _ eList) _ = xmlParse fname dat in+ map (getRawEvent . getElem) $ filter isEvent eList+ where+ isEvent (CElem (Elem (N "event") _ _) _) = True+ isEvent _ = False+ isCString (CString _ _ _) = True+ isCString _ = False+ parseLine = map parseDouble . words+ getElem (CElem (Elem _ _ c) _) = head $ filter isCString c+ getRawEvent (CString _ eStr _) =+ let eLines = filter (\x -> length x > 2) $ lines eStr in+ RawEvent (parseLine $ head eLines) (map parseLine $ tail eLines)+ getRawEvent _ = RawEvent [] []++parseDouble :: String -> Double+parseDouble = read . reverse . dropWhile (=='.') . reverse+
− Text/LHE.hs
@@ -1,68 +0,0 @@-{-|--This module provides a pure haskell implementation of a parser and writer for-the Les-Houches event file format. (Note that the writer doesn't actually exist-yet.)---}-module Text.LHE (- -- |The major and minor parts of this version of lhe.- version,-- parseEventFile,- parseEvents,-- parseRawEventFile,- parseRawEvents,-- Event(..),- RawEvent(..),-) where--import Text.XML.HaXml.Parse (xmlParse)-import Text.XML.HaXml.Types (Document(..), Element(..), Content(..), QName(..))--data Init = Init- deriving (Eq, Show, Read)--data Event = Event [Double] [[Double]]- deriving (Eq, Show, Read)--data RawEvent = RawEvent [Double] [[Double]]- deriving (Eq, Show, Read)--version :: String-version = "0.1.1"--parseEventFile :: String -> IO [Event]-parseEventFile fname = do- readFile fname >>= return . parseEvents fname--parseEvents :: String -> String -> [Event]-parseEvents fname dat =- let re = parseRawEvents fname dat in- []--parseRawEventFile :: String -> IO [RawEvent]-parseRawEventFile fname = do- readFile fname >>= return . parseRawEvents fname--parseRawEvents :: String -> String -> [RawEvent]-parseRawEvents fname dat =- let Document _ _ (Elem eName _ eList) _ = xmlParse fname dat in- map (getRawEvent . getElem) $ filter isEvent eList- where- isEvent (CElem (Elem (N "event") _ _) _) = True- isEvent _ = False- isCString (CString _ _ _) = True- isCString _ = False- parseLine = map parseDouble . words- getElem (CElem (Elem _ _ c) _) = head $ filter isCString c- getRawEvent (CString _ eStr _) =- let eLines = filter (\x -> length x > 2) $ lines eStr in- RawEvent (parseLine $ head eLines) (map parseLine $ tail eLines)- getRawEvent _ = RawEvent [] []--parseDouble :: String -> Double-parseDouble = read . reverse . dropWhile (=='.') . reverse-
lhe.cabal view
@@ -6,7 +6,7 @@ -- The package version. See the Haskell package versioning policy -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for -- standards guiding when and how versions should be incremented.-Version: 0.1.1+Version: 0.2 -- A short (one-line) description of the package. Synopsis: Parse for Les-Houches event files@@ -30,7 +30,7 @@ -- A copyright notice. -- Copyright: -Category: Text+Category: Physics Build-type: Simple @@ -44,7 +44,7 @@ Library -- Modules exported by the library.- Exposed-modules: Text.LHE+ Exposed-modules: Data.LHE -- Packages needed in order to build this package. Build-depends: haskell2010 >= 1.0 , HaXml >= 1.22