octane-0.7.0: library/Octane/Parser/Garage.hs
module Octane.Parser.Garage where
import Data.Function ((&))
import qualified Data.Bimap as Bimap
import qualified Data.Maybe as Maybe
import qualified Data.Text as Text
import qualified Octane.Data as Data
type Body = Text.Text
type Decal = Text.Text
type Wheels = Text.Text
type RocketTrail = Text.Text
type Antenna = Text.Text
type Topper = Text.Text
type Finish = Text.Text
getDefaultItem :: String -> Int -> Text.Text
getDefaultItem itemType itemId =
["Unknown", itemType, show itemId] & unwords & Text.pack
getItem :: Bimap.Bimap Int Text.Text -> String -> Int -> Text.Text
getItem items itemType itemId = items
& Bimap.lookup itemId
& Maybe.fromMaybe (getDefaultItem itemType itemId)
getBody :: Int -> Body
getBody = getItem Data.bodies "body"
getDecal :: Int -> Decal
getDecal = getItem Data.decals "decal"
getWheels :: Int -> Wheels
getWheels = getItem Data.wheels "wheels"
getRocketTrail :: Int -> RocketTrail
getRocketTrail = getItem Data.rocketTrails "rocket trail"
getAntenna :: Int -> Antenna
getAntenna = getItem Data.antennas "antenna"
getTopper :: Int -> Topper
getTopper = getItem Data.toppers "topper"
getFinish :: Int -> Finish
getFinish = getItem Data.finishes "finish"