packages feed

stratux 0.0.1 → 0.0.2

raw patch · 7 files changed

+9/−563 lines, 7 filesdep +stratux-typesdep −aesondep −bytestringdep −lensdep ~base

Dependencies added: stratux-types

Dependencies removed: aeson, bytestring, lens, scientific, time

Dependency ranges changed: base

Files

changelog.md view
@@ -1,3 +1,7 @@+0.0.2++* Moved project to `stratux-types` which this one will depend on.+ 0.0.1 -Initial.+* Initial.
− src/Data/Aviation/Stratux/Types.hs
@@ -1,8 +0,0 @@-module Data.Aviation.Stratux.Types(-  module T-) where--import Data.Aviation.Stratux.Types.EmitterCategory as T-import Data.Aviation.Stratux.Types.IcaoAddr as T-import Data.Aviation.Stratux.Types.TargetType as T-import Data.Aviation.Stratux.Types.Traffic as T
− src/Data/Aviation/Stratux/Types/EmitterCategory.hs
@@ -1,147 +0,0 @@-{-# LANGUAGE TemplateHaskell #-}--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.Maybe(Maybe(Just, Nothing))-import Data.Ord(Ord)-import Data.Scientific(Scientific)-import Prelude(Show, Num)---- $setup--- >>> :set -XOverloadedStrings--- >>> import Control.Lens--- >>> import Data.Aeson(decode, encode)--- >>> import Data.Maybe(Maybe)--- >>> import Prelude---- https://i.imgur.com/cXYhzZM.png-data EmitterCategory = -- 0 to 7-  NoEmitterCategory-  | Light -- < 15500lb-  | Small -- 15500-75000lb-  | Large -- 75000-300000lb-  | HighVortexLarge -- B757-  | Heavy -- > 300000lb-  | HighPerformance -- >5G accel @ > 400KIAS-  | Rotorcraft-  deriving (Eq, Ord, Show)--makeClassyPrisms ''EmitterCategory--class AsEmitterCategoryNum a where-   _EmitterCategoryNum ::-    (Num a, Eq a) =>-    Prism'-      a-      EmitterCategory--instance AsEmitterCategoryNum EmitterCategory where-  _EmitterCategoryNum =-    id---- |------ >>> _EmitterCategoryNum # NoEmitterCategory :: Scientific--- 0.0------ >>> _EmitterCategoryNum # Light :: Scientific--- 1.0------ >>> _EmitterCategoryNum # HighVortexLarge :: Scientific--- 4.0------ >>> _EmitterCategoryNum # Rotorcraft :: Scientific--- 7.0-instance AsEmitterCategoryNum Scientific where-  _EmitterCategoryNum =-    emitterCategoryNum--emitterCategoryNum ::-  (Num a, Eq a) =>-  Prism'-    a-    EmitterCategory-emitterCategoryNum =-  prism'-    (\t ->  case t of-              NoEmitterCategory ->-                0-              Light ->-                1-              Small ->-                2-              Large ->-                3-              HighVortexLarge ->-                4-              Heavy ->-                5-              HighPerformance ->-                6-              Rotorcraft ->-                7) -    (\n ->  case n of-              0 ->-                Just NoEmitterCategory-              1 ->-                Just Light-              2 ->-                Just Small-              3 -> -                Just Large-              4 ->-                Just HighVortexLarge-              5 ->-                Just Heavy-              6 ->-                Just HighPerformance-              7 ->-                Just Rotorcraft-              _ ->-                Nothing)---- |------ >>> decode "0" :: Maybe EmitterCategory--- Just NoEmitterCategory------ >>> decode "1" :: Maybe EmitterCategory--- Just Light------ >>> decode "4" :: Maybe EmitterCategory--- Just HighVortexLarge------ >>> decode "7" :: Maybe EmitterCategory--- Just Rotorcraft-instance FromJSON EmitterCategory where-  parseJSON =-    withScientific "EmitterCategory" (\n -> case n ^? _EmitterCategoryNum of-      Nothing ->-        mzero-      Just t ->-        return t)--- |------ >>> encode NoEmitterCategory--- "0"------ >>> encode Light--- "1"------ >>> encode HighVortexLarge--- "4"------ >>> encode Rotorcraft--- "7"-instance ToJSON EmitterCategory where-  toJSON c =-    Number (_EmitterCategoryNum # c)
− src/Data/Aviation/Stratux/Types/IcaoAddr.hs
@@ -1,82 +0,0 @@-{-# LANGUAGE TemplateHaskell #-}--module Data.Aviation.Stratux.Types.IcaoAddr(-  IcaoAddr(..)-, HasIcaoAddr(..)-, HasWord8s(..)-) where--import Control.Applicative(Applicative((<*>)))-import Control.Category(Category(id))-import Control.Lens(makeClassy, Traversal')-import Control.Monad(Monad(return))-import Data.Aeson(FromJSON(parseJSON), ToJSON(toJSON), Value(Number), withScientific)-import Data.Bits(shiftR, shiftL, (.|.), (.&.))-import Data.Eq(Eq)-import Data.Functor((<$>))-import Data.Ord(Ord)-import Data.Word(Word8, Word)-import Prelude(floor, fromIntegral, Show, Num((*)))---- $setup--- >>> :set -XOverloadedStrings--- >>> import Control.Lens--- >>> import Data.Aeson(decode, encode)--- >>> import Data.Maybe(Maybe)--- >>> import Prelude--data IcaoAddr =-  IcaoAddr {-    _icaoAddrWord0 :: Word8-  , _icaoAddrWord1 :: Word8-  , _icaoAddrWord2 :: Word8-  } deriving (Eq, Ord, Show)--makeClassy ''IcaoAddr---- |------ >>> decode "8153826" :: Maybe IcaoAddr--- Just (IcaoAddr {_icaoAddrWord0 = 124, _icaoAddrWord1 = 106, _icaoAddrWord2 = 226})------ >>> decode "66051" :: Maybe IcaoAddr--- Just (IcaoAddr {_icaoAddrWord0 = 1, _icaoAddrWord1 = 2, _icaoAddrWord2 = 3})-instance FromJSON IcaoAddr where-  parseJSON =-    withScientific "IcaoAddr" (\i ->-      let r :: Word-          r = floor i-          w n = fromIntegral (shiftR r (n * 8) .&. 255)-      in return (IcaoAddr (w 2) (w 1) (w 0)))---- |------ >>> encode (IcaoAddr 1 2 3)--- "66051"------ >>> encode (IcaoAddr 124 106 226)--- "8153826"-instance ToJSON IcaoAddr where-  toJSON (IcaoAddr w0 w1 w2) =-    Number (fromIntegral (shiftL (shiftL (fromIntegral w0 :: Word) 8 .|. fromIntegral w1) 8 .|. fromIntegral w2)) ---- |------ >>> _Word8s %~ (+1) $ IcaoAddr 124 106 226--- IcaoAddr {_icaoAddrWord0 = 125, _icaoAddrWord1 = 107, _icaoAddrWord2 = 227}------ >>> _Word8s %~ (+1) $ IcaoAddr 1 2 3--- IcaoAddr {_icaoAddrWord0 = 2, _icaoAddrWord1 = 3, _icaoAddrWord2 = 4}-class HasWord8s a where-  _Word8s ::-    Traversal'-      a-      Word8--instance HasWord8s Word8 where-  _Word8s =-    id--instance HasWord8s IcaoAddr where-  _Word8s f (IcaoAddr w0 w1 w2) =-    IcaoAddr <$> f w0 <*> f w1 <*> f w2
− src/Data/Aviation/Stratux/Types/TargetType.hs
@@ -1,126 +0,0 @@-{-# LANGUAGE TemplateHaskell #-}--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.Maybe-import Data.Ord(Ord)-import Data.Scientific(Scientific)-import Prelude(Num, Show)---- $setup--- >>> :set -XOverloadedStrings--- >>> import Control.Lens--- >>> import Data.Aeson(decode, encode)--- >>> import Data.Maybe(Maybe)--- >>> import Prelude--data TargetType =-  ModeS-  | Adsb-  | Adsr-  | TisbS-  | Tisb-  deriving (Eq, Ord, Show)--makeClassyPrisms ''TargetType--class AsTargetTypeNum a where-   _TargetTypeNum ::-    (Num a, Eq a) =>-    Prism'-      a-      TargetType--instance AsTargetTypeNum TargetType where-  _TargetTypeNum =-    id---- |------ >>> _TargetTypeNum # ModeS :: Scientific--- 0.0------ >>> _TargetTypeNum # Adsb :: Scientific--- 1.0------ >>> _TargetTypeNum # Tisb :: Scientific--- 4.0-instance AsTargetTypeNum Scientific where-  _TargetTypeNum =-    targetTypeNum--targetTypeNum ::-  (Num a, Eq a) =>-  Prism'-    a-    TargetType-targetTypeNum =-  prism'-    (\t ->  case t of-              ModeS ->-                0-              Adsb ->-                1-              Adsr ->-                2-              TisbS ->-                3-              Tisb ->-                4) -    (\n ->  case n of-              0 ->-                Just ModeS-              1 ->-                Just Adsb-              2 ->-                Just Adsr-              3 -> -                Just TisbS-              4 ->-                Just Tisb-              _ ->-                Nothing)---- |------ >>> decode "0" :: Maybe TargetType--- Just ModeS------ >>> decode "1" :: Maybe TargetType--- Just Adsb------ >>> decode "4" :: Maybe TargetType--- Just Tisb------ >>> decode "5" :: Maybe TargetType--- Nothing-instance FromJSON TargetType where-  parseJSON =-    withScientific "TargetType" (\n -> case n ^? targetTypeNum of-      Nothing ->-        mzero-      Just t ->-        return t)---- |------ >>> encode ModeS--- "0"------ >>> encode Adsb--- "1"------ >>> encode Tisb--- "4"-instance ToJSON TargetType where-  toJSON c =-    Number (targetTypeNum # c)
− src/Data/Aviation/Stratux/Types/Traffic.hs
@@ -1,186 +0,0 @@-  {-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE OverloadedStrings #-}--module Data.Aviation.Stratux.Types.Traffic(-  Traffic(..)-, HasTraffic(..)-, HasUTCTimes(..)-) where--import Control.Applicative(Applicative((<*>)))-import Control.Category(Category((.), id))-import Control.Lens(makeClassy, lens, Traversal')-import Data.Aviation.Stratux.Types.EmitterCategory(EmitterCategory)-import Data.Aviation.Stratux.Types.IcaoAddr(IcaoAddr, HasIcaoAddr(icaoAddr), HasWord8s(_Word8s))-import Data.Aviation.Stratux.Types.TargetType(TargetType)-import Data.Aeson(FromJSON(parseJSON), ToJSON(toJSON), (.:), withObject, (.=), object)-import Data.Bool(Bool)-import Data.Eq(Eq)-import Data.Int(Int)-import Data.Functor((<$>))-import Data.Ord(Ord)-import Data.String(String)-import Data.Time(UTCTime)-import Prelude(Double, Show)---- $setup--- >>> :set -XOverloadedStrings--- >>> import Control.Lens--- >>> import Data.Aeson(decode, encode)--- >>> import Data.Maybe(Maybe)--- >>> import Prelude--- >>> import Data.Aviation.Stratux.Types.EmitterCategory--- >>> import Data.Aviation.Stratux.Types.IcaoAddr--- >>> import Data.Aviation.Stratux.Types.TargetType--- >>> import Data.Time----- https://i.imgur.com/nOqGbfr.png-data Traffic =-  Traffic {-    icaoAddrTraffic :: IcaoAddr-  , _tail :: String -- tail-  , _emitterCategory :: EmitterCategory-  , _onGround :: Bool -- on-ground-  , _addressType :: Int -- address type-  , _targetType :: TargetType-  , _signalLevel :: Double -- signal level-  , _positionValid :: Bool -- position valid-  , _latitude :: Double -- latitude-  , _longitude :: Double -- longitude-  , _altitude :: Int -- altitude-  , _gnssDiffFromBaroAlt :: Int -- GNSS altitude above WGS84 datum-  , _altIsGnss :: Bool -- AltIsGNSS,  Pressure alt = 0; GNSS alt = 1-  , _navigationIntegrityCategory :: Int -- Navigation Integrity Category.-  , _navigationAccuracyCategoryForPosition :: Int -- Navigation Accuracy Category for Position-  , _track :: Int -- Track degrees true-  , _speed :: Int -- speed (knots)-  , _speedValid :: Bool -- speed valid-  , _verticalVelocity :: Int -- Vertical velocity (feet/minute)-  , _timestamp :: UTCTime -- Timestamp-  , _age :: Double -- age-  , _lastSeen :: UTCTime -- last seen-  , _lastAltitude :: UTCTime -- last altitude-  , _lastGnssDiff :: UTCTime -- last GNSS diff-  , _lastGnssDiffAltitude :: Int -- last GNSS diff altitude-  , _lastSpeed :: UTCTime -- last speed-  , _lastSource :: Int -- last source-  , _extrapolatedPosition :: Bool -- extrapolated position-  , _bearing :: Double -- Bearing in degrees true to traffic from ownship, if it can be calculated.-  , _distanceToTrafficFromOwnship :: Double -- Distance to traffic from ownship, if it can be calculated.-  } deriving (Eq, Ord, Show)--makeClassy ''Traffic---- |------ >>> decode "{\"Icao_addr\":8153826,\"Tail\":\"SVY22\",\"Emitter_category\":1,\"OnGround\":false,\"Addr_type\":0,\"TargetType\":1,\"SignalLevel\":-30.920514783877277,\"Position_valid\":true,\"Lat\":-27.501154,\"Lng\":153.21422,\"Alt\":12500,\"GnssDiffFromBaroAlt\":650,\"AltIsGNSS\":false,\"NIC\":8,\"NACp\":9,\"Track\":89,\"Speed\":205,\"Speed_valid\":true,\"Vvel\":0,\"Timestamp\":\"2016-05-24T01:13:18.189Z\",\"Age\":40.8,\"Last_seen\":\"0001-01-01T03:30:38.2Z\",\"Last_alt\":\"0001-01-01T03:30:38.55Z\",\"Last_GnssDiff\":\"0001-01-01T03:30:36.75Z\",\"Last_GnssDiffAlt\":12500,\"Last_speed\":\"0001-01-01T03:30:36.75Z\",\"Last_source\":1,\"ExtrapolatedPosition\":false,\"Bearing\":0,\"Distance\":0}" :: Maybe Traffic--- Just (Traffic {icaoAddrTraffic = IcaoAddr {_icaoAddrWord0 = 124, _icaoAddrWord1 = 106, _icaoAddrWord2 = 226}, _tail = "SVY22", _emitterCategory = Light, _onGround = False, _addressType = 0, _targetType = Adsb, _signalLevel = -30.920514783877277, _positionValid = True, _latitude = -27.501154, _longitude = 153.21422, _altitude = 12500, _gnssDiffFromBaroAlt = 650, _altIsGnss = False, _navigationIntegrityCategory = 8, _navigationAccuracyCategoryForPosition = 9, _track = 89, _speed = 205, _speedValid = True, _verticalVelocity = 0, _timestamp = 2016-05-24 01:13:18.189 UTC, _age = 40.8, _lastSeen = 0001-01-01 03:30:38.2 UTC, _lastAltitude = 0001-01-01 03:30:38.55 UTC, _lastGnssDiff = 0001-01-01 03:30:36.75 UTC, _lastGnssDiffAltitude = 12500, _lastSpeed = 0001-01-01 03:30:36.75 UTC, _lastSource = 1, _extrapolatedPosition = False, _bearing = 0.0, _distanceToTrafficFromOwnship = 0.0})-instance FromJSON Traffic where-  parseJSON =-    withObject "Traffic" (\x -> -      Traffic <$>-        x .: "Icao_addr" <*>-        x .: "Tail" <*>-        x .: "Emitter_category" <*>-        x .: "OnGround" <*>-        x .: "Addr_type" <*>-        x .: "TargetType" <*>-        x .: "SignalLevel" <*>-        x .: "Position_valid" <*>-        x .: "Lat" <*>-        x .: "Lng" <*>-        x .: "Alt" <*>-        x .: "GnssDiffFromBaroAlt" <*>-        x .: "AltIsGNSS" <*>-        x .: "NIC" <*>-        x .: "NACp" <*>-        x .: "Track" <*>-        x .: "Speed" <*>-        x .: "Speed_valid" <*>-        x .: "Vvel" <*>-        x .: "Timestamp" <*>-        x .: "Age" <*>-        x .: "Last_seen" <*>-        x .: "Last_alt" <*>-        x .: "Last_GnssDiff" <*>-        x .: "Last_GnssDiffAlt" <*>-        x .: "Last_speed" <*>-        x .: "Last_source" <*>-        x .: "ExtrapolatedPosition" <*>-        x .: "Bearing" <*>-        x .: "Distance")---- |------ >>> toJSON (Traffic (IcaoAddr 124 106 226) "SVY22" Light False 0 Adsb (-30.920514783877277) True (-27.501154) 153.21422 12500 650 False 8 9 89 205 True 0 (UTCTime (fromGregorian 1 1 1) 3597) 40.8 (UTCTime (fromGregorian 1 1 1) 259) (UTCTime (fromGregorian 1 1 1) 23) (UTCTime (fromGregorian 1 1 1) 597) 12500 (UTCTime (fromGregorian 2016 5 24) 237) 1 False 0.0 0.0)--- Object (fromList [("OnGround",Bool False),("Bearing",Number 0.0),("ExtrapolatedPosition",Bool False),("NIC",Number 8.0),("Last_alt",String "0001-01-01T00:00:23Z"),("Track",Number 89.0),("Last_speed",String "2016-05-24T00:03:57Z"),("GnssDiffFromBaroAlt",Number 650.0),("Last_seen",String "0001-01-01T00:04:19Z"),("Icao_addr",Number 8153826.0),("SignalLevel",Number -30.920514783877277),("Distance",Number 0.0),("Age",Number 40.8),("Speed_valid",Bool True),("TargetType",Number 1.0),("Lat",Number -27.501154),("Vvel",Number 0.0),("NACp",Number 9.0),("Addr_type",Number 0.0),("Speed",Number 205.0),("AltIsGNSS",Bool False),("Lng",Number 153.21422),("Tail",String "SVY22"),("Last_GnssDiffAlt",Number 12500.0),("Position_valid",Bool True),("Last_source",Number 1.0),("Timestamp",String "0001-01-01T00:59:57Z"),("Last_GnssDiff",String "0001-01-01T00:09:57Z"),("Alt",Number 12500.0),("Emitter_category",Number 1.0)])-instance ToJSON Traffic where-  toJSON (Traffic icaoAddr_ tail_ emitterCategory_ onGround_ addressType_ targetType_ signalLevel_ positionValid_ latitude_ longitude_ altitude_ gnssDiffFromBaroAlt_ altIsGnss_ navigationIntegrityCategory_ navigationAccuracyCategoryForPosition_ track_ speed_ speedValid_ verticalVelocity_ timestamp_ age_ lastSeen_ lastAltitude_ lastGnssDiff_ lastGnssDiffAltitude_ lastSpeed_ lastSource_ extrapolatedPosition_ bearing_ distanceToTrafficFromOwnship_) =-    object [-      "Icao_addr" .= icaoAddr_-    , "Tail" .= tail_-    , "Emitter_category" .= emitterCategory_-    , "OnGround" .= onGround_-    , "Addr_type" .= addressType_-    , "TargetType" .= targetType_-    , "SignalLevel" .= signalLevel_-    , "Position_valid" .= positionValid_-    , "Lat" .= latitude_-    , "Lng" .= longitude_-    , "Alt" .= altitude_-    , "GnssDiffFromBaroAlt" .= gnssDiffFromBaroAlt_-    , "AltIsGNSS" .= altIsGnss_-    , "NIC" .= navigationIntegrityCategory_-    , "NACp" .= navigationAccuracyCategoryForPosition_-    , "Track" .= track_-    , "Speed" .= speed_-    , "Speed_valid" .= speedValid_-    , "Vvel" .= verticalVelocity_-    , "Timestamp" .= timestamp_-    , "Age" .= age_-    , "Last_seen" .= lastSeen_-    , "Last_alt" .= lastAltitude_-    , "Last_GnssDiff" .= lastGnssDiff_-    , "Last_GnssDiffAlt" .= lastGnssDiffAltitude_-    , "Last_speed" .= lastSpeed_-    , "Last_source" .= lastSource_-    , "ExtrapolatedPosition" .= extrapolatedPosition_-    , "Bearing" .= bearing_-    , "Distance" .= distanceToTrafficFromOwnship_-    ]--instance HasIcaoAddr Traffic where-  icaoAddr =-    lens-      (\(Traffic x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) -> x)-      (\(Traffic _ tail_ emitterCategory_ onGround_ addressType_ targetType_ signalLevel_ positionValid_ latitude_ longitude_ altitude_ gnssDiffFromBaroAlt_ altIsGnss_ navigationIntegrityCategory_ navigationAccuracyCategoryForPosition_ track_ speed_ speedValid_ verticalVelocity_ timestamp_ age_ lastSeen_ lastAltitude_ lastGnssDiff_ lastGnssDiffAltitude_ lastSpeed_ lastSource_ extrapolatedPosition_ bearing_ distanceToTrafficFromOwnship_) x -> Traffic x tail_ emitterCategory_ onGround_ addressType_ targetType_ signalLevel_ positionValid_ latitude_ longitude_ altitude_ gnssDiffFromBaroAlt_ altIsGnss_ navigationIntegrityCategory_ navigationAccuracyCategoryForPosition_ track_ speed_ speedValid_ verticalVelocity_ timestamp_ age_ lastSeen_ lastAltitude_ lastGnssDiff_ lastGnssDiffAltitude_ lastSpeed_ lastSource_ extrapolatedPosition_ bearing_ distanceToTrafficFromOwnship_)--instance HasWord8s Traffic where-  _Word8s =-    icaoAddr . _Word8s--class HasUTCTimes a where-  utcTimes ::-    Traversal' -      a-      UTCTime--instance HasUTCTimes UTCTime where-  utcTimes =-    id---- |------ >>> (utcTimes %~ addUTCTime 1) (UTCTime (fromGregorian 1 1 1) 600)--- 0001-01-01 00:10:01 UTC-instance HasUTCTimes Traffic where-  utcTimes f (Traffic icaoAddr_ tail_ emitterCategory_ onGround_ addressType_ targetType_ signalLevel_ positionValid_ latitude_ longitude_ altitude_ gnssDiffFromBaroAlt_ altIsGnss_ navigationIntegrityCategory_ navigationAccuracyCategoryForPosition_ track_ speed_ speedValid_ verticalVelocity_ timestamp_ age_ lastSeen_ lastAltitude_ lastGnssDiff_ lastGnssDiffAltitude_ lastSpeed_ lastSource_ extrapolatedPosition_ bearing_ distanceToTrafficFromOwnship_) =-    (\timestamp__ lastSeen__ lastAltitude__ lastGnssDiff__ lastSpeed__ -> -      Traffic icaoAddr_ tail_ emitterCategory_ onGround_ addressType_ targetType_ signalLevel_ positionValid_ latitude_ longitude_ altitude_ gnssDiffFromBaroAlt_ altIsGnss_ navigationIntegrityCategory_ navigationAccuracyCategoryForPosition_ track_ speed_ speedValid_ verticalVelocity_ timestamp__ age_ lastSeen__ lastAltitude__ lastGnssDiff__ lastGnssDiffAltitude_ lastSpeed__ lastSource_ extrapolatedPosition_ bearing_ distanceToTrafficFromOwnship_) <$>-      f timestamp_ <*>-      f lastSeen_ <*>-      f lastAltitude_ <*>-      f lastGnssDiff_ <*>-      f lastSpeed_-    
stratux.cabal view
@@ -1,5 +1,5 @@ name:               stratux-version:            0.0.1+version:            0.0.2 license:            BSD3 license-file:       LICENCE author:             Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>@@ -7,7 +7,7 @@ copyright:          Copyright (C) 2016 Tony Morris synopsis:           A library for stratux category:           Development-description:        A library for reading JSON output from stratux http://stratux.me/+description:        A library for stratux http://stratux.me/ homepage:           https://github.com/tonymorris/stratux bug-reports:        https://github.com/tonymorris/stratux/issues cabal-version:      >= 1.10@@ -27,11 +27,7 @@    build-depends:                       base < 5 && >= 3-                    , lens >= 4.0       -                    , aeson >= 0.11 -                    , time >= 1.4-                    , bytestring >= 0.10     -                    , scientific >= 0.3     +                    , stratux-types == 0.0.1    ghc-options:                     -Wall@@ -43,12 +39,7 @@                     src    exposed-modules:-                    Data.Aviation.Stratux-                    Data.Aviation.Stratux.Types-                    Data.Aviation.Stratux.Types.EmitterCategory-                    Data.Aviation.Stratux.Types.IcaoAddr-                    Data.Aviation.Stratux.Types.TargetType-                    Data.Aviation.Stratux.Types.Traffic+                    Data.Aviation.Stratux                      test-suite doctests   type: