module Biobase.GeneticCodes.Embedded where

import Control.Monad.Except
import Data.ByteString (ByteString)
import Data.FileEmbed

import Biobase.GeneticCodes.Import
import Biobase.GeneticCodes.Types

geneticCodesFile :: ByteString
geneticCodesFile :: ByteString
geneticCodesFile = $(makeRelativeToProject "sources/translation-tables" >>= embedFile)

geneticCodes :: [TranslationTable Char Char]
geneticCodes :: [TranslationTable Char Char]
geneticCodes = ([Char] -> [TranslationTable Char Char])
-> ([TranslationTable Char Char] -> [TranslationTable Char Char])
-> Either [Char] [TranslationTable Char Char]
-> [TranslationTable Char Char]
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either [Char] -> [TranslationTable Char Char]
forall a. HasCallStack => [Char] -> a
error [TranslationTable Char Char] -> [TranslationTable Char Char]
forall a. a -> a
id (Either [Char] [TranslationTable Char Char]
 -> [TranslationTable Char Char])
-> (Except [Char] [TranslationTable Char Char]
    -> Either [Char] [TranslationTable Char Char])
-> Except [Char] [TranslationTable Char Char]
-> [TranslationTable Char Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Except [Char] [TranslationTable Char Char]
-> Either [Char] [TranslationTable Char Char]
forall e a. Except e a -> Either e a
runExcept (Except [Char] [TranslationTable Char Char]
 -> [TranslationTable Char Char])
-> Except [Char] [TranslationTable Char Char]
-> [TranslationTable Char Char]
forall a b. (a -> b) -> a -> b
$ ByteString -> Except [Char] [TranslationTable Char Char]
forall (m :: * -> *).
MonadError [Char] m =>
ByteString -> m [TranslationTable Char Char]
fromByteString ByteString
geneticCodesFile