-- |

module Biobase.GFF3.Export where
import Biobase.GFF3.Types
import qualified Data.ByteString.Lazy.Char8 as B
import qualified Data.Vector as V
import Data.List

instance Show GFF3 where
  show (GFF3 _Entries _Sequence)
    | not (null _Entries) = header ++ entriesString
    | otherwise = header
    where header = "##gff-version 3\n"
          entriesString =  concatMap show _Entries

instance Show GFF3Entry where
  show (GFF3Entry _gff3Seqid _gff3Source _gff3Type _gff3Start _gff3End _gff3Score _gff3Strand _gff3Phase _gff3Attributes) =
    (B.unpack _gff3Seqid) ++ "\t" ++ (B.unpack _gff3Source) ++ "\t" ++ (B.unpack _gff3Type) ++ "\t" ++ show _gff3Start ++ "\t" ++ show _gff3End ++ "\t" ++ (B.unpack _gff3Score) ++ "\t" ++ [_gff3Strand] ++  "\t" ++ (B.unpack _gff3Phase) ++ "\t" ++ (intercalate ";" (V.toList (V.map B.unpack _gff3Attributes))) ++ "\n"