stratux-types 0.0.6 → 0.0.7
raw patch · 4 files changed
+176/−39 lines, 4 filesdep ~base
Dependency ranges changed: base
Files
- changelog.md +4/−0
- src/Data/Aviation/Stratux/Types/EmitterCategory.hs +95/−21
- src/Data/Aviation/Stratux/Types/TargetType.hs +76/−17
- stratux-types.cabal +1/−1
changelog.md view
@@ -1,3 +1,7 @@+0.0.7++* Fix bug with ConstrainedClassMethods in type-classes.+ 0.0.6 * Create `SettingsSet` data type.
src/Data/Aviation/Stratux/Types/EmitterCategory.hs view
@@ -4,18 +4,18 @@ module Data.Aviation.Stratux.Types.EmitterCategory( EmitterCategory(..) , AsEmitterCategory(..)-, AsEmitterCategoryNum(..) ) where -import Control.Category(Category(id)) import Control.Lens(Prism', prism', makeClassyPrisms, (^?), ( # )) import Control.Monad(mzero, Monad(return)) import Data.Aeson(FromJSON(parseJSON), ToJSON(toJSON), Value(Number), withScientific) import Data.Eq(Eq)+import Data.Int(Int) import Data.Maybe(Maybe(Just, Nothing)) import Data.Ord(Ord) import Data.Scientific(Scientific)-import Prelude(Show, Num)+import Data.Word(Word)+import Prelude(Show, Num, Integer, Float, Double) -- $setup -- >>> :set -XOverloadedStrings@@ -32,40 +32,114 @@ | Large -- 75000-300000lb | HighVortexLarge -- B757 | Heavy -- > 300000lb- | HighPerformance -- >5G accel @ > 400KIAS+ | HighPerformance -- >5G accel ^ > 400KIAS | Rotorcraft deriving (Eq, Ord, Show) makeClassyPrisms ''EmitterCategory -class AsEmitterCategoryNum a where- _EmitterCategoryNum ::- (Num a, Eq a) =>- Prism'- a- EmitterCategory+-- |+--+-- >>> _EmitterCategory # NoEmitterCategory :: Scientific+-- 0.0+--+-- >>> _EmitterCategory # Light :: Scientific+-- 1.0+--+-- >>> _EmitterCategory # HighVortexLarge :: Scientific+-- 4.0+--+-- >>> _EmitterCategory # Rotorcraft :: Scientific+-- 7.0+instance AsEmitterCategory Scientific where+ _EmitterCategory =+ emitterCategoryNum -instance AsEmitterCategoryNum EmitterCategory where- _EmitterCategoryNum =- id+-- |+--+-- >>> _EmitterCategory # NoEmitterCategory :: Int+-- 0+--+-- >>> _EmitterCategory # Light :: Int+-- 1+--+-- >>> _EmitterCategory # HighVortexLarge :: Int+-- 4+--+-- >>> _EmitterCategory # Rotorcraft :: Int+-- 7+instance AsEmitterCategory Int where+ _EmitterCategory =+ emitterCategoryNum -- | ----- >>> _EmitterCategoryNum # NoEmitterCategory :: Scientific+-- >>> _EmitterCategory # NoEmitterCategory :: Integer+-- 0+--+-- >>> _EmitterCategory # Light :: Integer+-- 1+--+-- >>> _EmitterCategory # HighVortexLarge :: Integer+-- 4+--+-- >>> _EmitterCategory # Rotorcraft :: Integer+-- 7+instance AsEmitterCategory Integer where+ _EmitterCategory =+ emitterCategoryNum++-- |+--+-- >>> _EmitterCategory # NoEmitterCategory :: Float -- 0.0 ----- >>> _EmitterCategoryNum # Light :: Scientific+-- >>> _EmitterCategory # Light :: Float -- 1.0 ----- >>> _EmitterCategoryNum # HighVortexLarge :: Scientific+-- >>> _EmitterCategory # HighVortexLarge :: Float -- 4.0 ----- >>> _EmitterCategoryNum # Rotorcraft :: Scientific+-- >>> _EmitterCategory # Rotorcraft :: Float -- 7.0-instance AsEmitterCategoryNum Scientific where- _EmitterCategoryNum =+instance AsEmitterCategory Float where+ _EmitterCategory = emitterCategoryNum +-- |+--+-- >>> _EmitterCategory # NoEmitterCategory :: Double+-- 0.0+--+-- >>> _EmitterCategory # Light :: Double+-- 1.0+--+-- >>> _EmitterCategory # HighVortexLarge :: Double+-- 4.0+--+-- >>> _EmitterCategory # Rotorcraft :: Double+-- 7.0+instance AsEmitterCategory Double where+ _EmitterCategory =+ emitterCategoryNum++-- |+--+-- >>> _EmitterCategory # NoEmitterCategory :: Word+-- 0+--+-- >>> _EmitterCategory # Light :: Word+-- 1+--+-- >>> _EmitterCategory # HighVortexLarge :: Word+-- 4+--+-- >>> _EmitterCategory # Rotorcraft :: Word+-- 7+instance AsEmitterCategory Word where+ _EmitterCategory =+ emitterCategoryNum+ emitterCategoryNum :: (Num a, Eq a) => Prism'@@ -125,7 +199,7 @@ -- Just Rotorcraft instance FromJSON EmitterCategory where parseJSON =- withScientific "EmitterCategory" (\n -> case n ^? _EmitterCategoryNum of+ withScientific "EmitterCategory" (\n -> case n ^? _EmitterCategory of Nothing -> mzero Just t ->@@ -145,4 +219,4 @@ -- "7" instance ToJSON EmitterCategory where toJSON c =- Number (_EmitterCategoryNum # c)+ Number (_EmitterCategory # c)
src/Data/Aviation/Stratux/Types/TargetType.hs view
@@ -4,18 +4,18 @@ module Data.Aviation.Stratux.Types.TargetType( TargetType(..) , AsTargetType(..)-, AsTargetTypeNum(..) ) where -import Control.Category(Category(id)) import Control.Lens(makeClassyPrisms, Prism', prism', (^?), ( # )) import Control.Monad(Monad(return), mzero) import Data.Aeson(FromJSON(parseJSON), ToJSON(toJSON), Value(Number), withScientific) import Data.Eq(Eq)+import Data.Int(Int) import Data.Maybe import Data.Ord(Ord) import Data.Scientific(Scientific)-import Prelude(Num, Show)+import Data.Word(Word)+import Prelude(Num, Show, Integer, Float, Double) -- $setup -- >>> :set -XOverloadedStrings@@ -34,29 +34,88 @@ makeClassyPrisms ''TargetType -class AsTargetTypeNum a where- _TargetTypeNum ::- (Num a, Eq a) =>- Prism'- a- TargetType+-- |+--+-- >>> _TargetType # ModeS :: Scientific+-- 0.0+--+-- >>> _TargetType # Adsb :: Scientific+-- 1.0+--+-- >>> _TargetType # Tisb :: Scientific+-- 4.0+instance AsTargetType Scientific where+ _TargetType =+ targetTypeNum -instance AsTargetTypeNum TargetType where- _TargetTypeNum =- id+-- |+--+-- >>> _TargetType # ModeS :: Int+-- 0+--+-- >>> _TargetType # Adsb :: Int+-- 1+--+-- >>> _TargetType # Tisb :: Int+-- 4+instance AsTargetType Int where+ _TargetType =+ targetTypeNum -- | ----- >>> _TargetTypeNum # ModeS :: Scientific+-- >>> _TargetType # ModeS :: Integer+-- 0+--+-- >>> _TargetType # Adsb :: Integer+-- 1+--+-- >>> _TargetType # Tisb :: Integer+-- 4+instance AsTargetType Integer where+ _TargetType =+ targetTypeNum++-- |+--+-- >>> _TargetType # ModeS :: Float -- 0.0 ----- >>> _TargetTypeNum # Adsb :: Scientific+-- >>> _TargetType # Adsb :: Float -- 1.0 ----- >>> _TargetTypeNum # Tisb :: Scientific+-- >>> _TargetType # Tisb :: Float -- 4.0-instance AsTargetTypeNum Scientific where- _TargetTypeNum =+instance AsTargetType Float where+ _TargetType =+ targetTypeNum++-- |+--+-- >>> _TargetType # ModeS :: Double+-- 0.0+--+-- >>> _TargetType # Adsb :: Double+-- 1.0+--+-- >>> _TargetType # Tisb :: Double+-- 4.0+instance AsTargetType Double where+ _TargetType =+ targetTypeNum++-- |+--+-- >>> _TargetType # ModeS :: Word+-- 0+--+-- >>> _TargetType # Adsb :: Word+-- 1+--+-- >>> _TargetType # Tisb :: Word+-- 4+instance AsTargetType Word where+ _TargetType = targetTypeNum targetTypeNum ::
stratux-types.cabal view
@@ -1,5 +1,5 @@ name: stratux-types-version: 0.0.6+version: 0.0.7 license: BSD3 license-file: LICENCE author: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>