packages feed

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"