module Bio.PDB.EventParser.ParseTER(parseTER)
where
import Prelude hiding(String)
import qualified Data.ByteString.Char8 as BS
import Bio.PDB.EventParser.PDBEvents
import Bio.PDB.EventParser.PDBParsingAbstractions
terFields = [(6, mKeyword "record header" "TER "),
(11, mInt "atom serial number" ),
(17, mSpc 6 ),
(20, mStr "residue name" ),
(21, mSpc 1 ),
(22, mChr "chain identifier" ),
(26, mInt "residue number" ),
(27, dChr "insertion code" ' ')]
parseTER :: (Monad m) => String -> Int -> m [PDBEvent]
parseTER line line_no = return $ if null errs
then [result]
else errs
where
(fields, errs) = parseFields terFields line line_no
[fRec, fNum, _, fResName, _, fChain, fResId, fInsCode] = fields
IFInt num = fNum
IFStr resname = fResName
IFChar chain = fChain
IFInt resid = fResId
IFChar insCode = fInsCode
result = TER num resname chain resid insCode