casr-logbook-meta (empty) → 0.0.1
raw patch · 24 files changed
+628/−0 lines, 24 filesdep +QuickCheckdep +basedep +casr-logbookbuild-type:Customsetup-changed
Dependencies added: QuickCheck, base, casr-logbook, directory, doctest, filepath, lens, template-haskell
Files
- LICENSE +27/−0
- Setup.lhs +44/−0
- casr-logbook-meta.cabal +94/−0
- changelog +4/−0
- src/Data/Aviation/Casr/Logbook/Meta.hs +22/−0
- src/Data/Aviation/Casr/Logbook/Meta/AircraftFlightExpense.hs +19/−0
- src/Data/Aviation/Casr/Logbook/Meta/AircraftFlightMeta.hs +26/−0
- src/Data/Aviation/Casr/Logbook/Meta/AircraftLandingExpense.hs +20/−0
- src/Data/Aviation/Casr/Logbook/Meta/AircraftUsageExpense.hs +20/−0
- src/Data/Aviation/Casr/Logbook/Meta/BriefingExpense.hs +20/−0
- src/Data/Aviation/Casr/Logbook/Meta/BriefingMeta.hs +22/−0
- src/Data/Aviation/Casr/Logbook/Meta/ExamExpense.hs +20/−0
- src/Data/Aviation/Casr/Logbook/Meta/ExamMeta.hs +22/−0
- src/Data/Aviation/Casr/Logbook/Meta/Image.hs +23/−0
- src/Data/Aviation/Casr/Logbook/Meta/ImageType.hs +18/−0
- src/Data/Aviation/Casr/Logbook/Meta/SimulatorFlightExpense.hs +20/−0
- src/Data/Aviation/Casr/Logbook/Meta/SimulatorFlightMeta.hs +22/−0
- src/Data/Aviation/Casr/Logbook/Meta/TrackLog.hs +23/−0
- src/Data/Aviation/Casr/Logbook/Meta/TrackLogType.hs +20/−0
- src/Data/Aviation/Casr/Logbook/Meta/TrackLogs.hs +22/−0
- src/Data/Aviation/Casr/Logbook/Meta/Video.hs +23/−0
- src/Data/Aviation/Casr/Logbook/Meta/VideoType.hs +44/−0
- src/Data/Aviation/Casr/Logbook/Meta/Visualisation.hs +21/−0
- test/doctests.hs +32/−0
+ LICENSE view
@@ -0,0 +1,27 @@+Copyright 2016 Tony Morris+All rights reserved.++Redistribution and use in source and binary forms, with or without modification,+are permitted provided that the following conditions are met:++1. Redistributions of source code must retain the above copyright notice, this+list of conditions, the following disclaimer and the following SHA-512 checksum.++2. Redistributions in binary form must reproduce the above copyright notice,+this list of conditions, the following disclaimer and the following SHA-512+checksum in the documentation and/or other materials provided with the+distribution.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.++THIS SOFTWARE IS PROVIDED WITH A SHA-512 CHECKSUM.+ecdfdf543fd166b13b76b11e0b010e00d693028771880ffd8f9252ae0b8ac42bddf8eb7a23c21c86a3b50039d642ad9eeb7e8a0e82f6a345f60feb4a54808362
+ Setup.lhs view
@@ -0,0 +1,44 @@+#!/usr/bin/env runhaskell+\begin{code}+{-# OPTIONS_GHC -Wall #-}+module Main (main) where++import Data.List ( nub )+import Data.Version ( showVersion )+import Distribution.Package ( PackageName(PackageName), PackageId, InstalledPackageId, packageVersion, packageName )+import Distribution.PackageDescription ( PackageDescription(), TestSuite(..) )+import Distribution.Simple ( defaultMainWithHooks, UserHooks(..), simpleUserHooks )+import Distribution.Simple.Utils ( rewriteFile, createDirectoryIfMissingVerbose )+import Distribution.Simple.BuildPaths ( autogenModulesDir )+import Distribution.Simple.Setup ( BuildFlags(buildVerbosity), fromFlag )+import Distribution.Simple.LocalBuildInfo ( withLibLBI, withTestLBI, LocalBuildInfo(), ComponentLocalBuildInfo(componentPackageDeps) )+import Distribution.Verbosity ( Verbosity )+import System.FilePath ( (</>) )++main :: IO ()+main = defaultMainWithHooks simpleUserHooks+ { buildHook = \pkg lbi hooks flags -> do+ generateBuildModule (fromFlag (buildVerbosity flags)) pkg lbi+ buildHook simpleUserHooks pkg lbi hooks flags+ }++generateBuildModule :: Verbosity -> PackageDescription -> LocalBuildInfo -> IO ()+generateBuildModule verbosity pkg lbi = do+ let dir = autogenModulesDir lbi+ createDirectoryIfMissingVerbose verbosity True dir+ withLibLBI pkg lbi $ \_ libcfg -> do+ withTestLBI pkg lbi $ \suite suitecfg -> do+ rewriteFile (dir </> "Build_" ++ testName suite ++ ".hs") $ unlines+ [ "module Build_" ++ testName suite ++ " where"+ , "deps :: [String]"+ , "deps = " ++ (show $ formatdeps (testDeps libcfg suitecfg))+ ]+ where+ formatdeps = map (formatone . snd)+ formatone p = case packageName p of+ PackageName n -> n ++ "-" ++ showVersion (packageVersion p)++testDeps :: ComponentLocalBuildInfo -> ComponentLocalBuildInfo -> [(InstalledPackageId, PackageId)]+testDeps xs ys = nub $ componentPackageDeps xs ++ componentPackageDeps ys++\end{code}
+ casr-logbook-meta.cabal view
@@ -0,0 +1,94 @@+name: casr-logbook-meta+version: 0.0.1+license: OtherLicense+license-file: LICENSE+author: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>+maintainer: Tony Morris+copyright: Copyright (C) 2016 Tony Morris+synopsis: Meta-information about entries in a CASR 61.345 logbook (casr-logbook)+category: Aviation+description: + <<https://i.imgur.com/p6LT40r.png>>+ .+ CASR 61.345 Pilot Personal Logbook Meta-information about entries+ .+ <<https://i.imgur.com/Lfhcmtg.png>>++homepage: https://github.com/tonymorris/casr-logbook-meta+bug-reports: https://github.com/tonymorris/casr-logbook-meta/issues+cabal-version: >= 1.10+build-type: Custom+extra-source-files: changelog++source-repository head+ type: git+ location: git@github.com:tonymorris/casr-logbook-meta.git++flag small_base+ description: Choose the new, split-up base package.++library+ default-language:+ Haskell2010++ build-depends:+ base < 5 && >= 4.8+ , casr-logbook >= 0.1.3 && < 0.2+ , lens >= 4.1 && < 5+ + ghc-options:+ -Wall++ default-extensions:+ NoImplicitPrelude++ hs-source-dirs:+ src++ exposed-modules:+ Data.Aviation.Casr.Logbook.Meta+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense+ Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta+ Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense+ Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense+ Data.Aviation.Casr.Logbook.Meta.BriefingExpense+ Data.Aviation.Casr.Logbook.Meta.BriefingMeta+ Data.Aviation.Casr.Logbook.Meta.ExamExpense+ Data.Aviation.Casr.Logbook.Meta.ExamMeta+ Data.Aviation.Casr.Logbook.Meta.Image+ Data.Aviation.Casr.Logbook.Meta.ImageType+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense+ Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta+ Data.Aviation.Casr.Logbook.Meta.TrackLog+ Data.Aviation.Casr.Logbook.Meta.TrackLogs+ Data.Aviation.Casr.Logbook.Meta.TrackLogType+ Data.Aviation.Casr.Logbook.Meta.Video+ Data.Aviation.Casr.Logbook.Meta.VideoType+ Data.Aviation.Casr.Logbook.Meta.Visualisation++++test-suite doctests+ type:+ exitcode-stdio-1.0++ main-is:+ doctests.hs++ default-language:+ Haskell2010++ build-depends:+ base < 5 && >= 3+ , doctest >= 0.9.7+ , filepath >= 1.3+ , directory >= 1.1+ , QuickCheck >= 2.0+ , template-haskell >= 2.8++ ghc-options:+ -Wall+ -threaded++ hs-source-dirs:+ test
+ changelog view
@@ -0,0 +1,4 @@+0.0.1++* Initial release+
+ src/Data/Aviation/Casr/Logbook/Meta.hs view
@@ -0,0 +1,22 @@+module Data.Aviation.Casr.Logbook.Meta (+ module A+) where++import Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense as A+import Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta as A+import Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense as A+import Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense as A+import Data.Aviation.Casr.Logbook.Meta.BriefingExpense as A+import Data.Aviation.Casr.Logbook.Meta.BriefingMeta as A+import Data.Aviation.Casr.Logbook.Meta.ExamExpense as A+import Data.Aviation.Casr.Logbook.Meta.ExamMeta as A+import Data.Aviation.Casr.Logbook.Meta.Image as A+import Data.Aviation.Casr.Logbook.Meta.ImageType as A+import Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense as A+import Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta as A+import Data.Aviation.Casr.Logbook.Meta.TrackLog as A+import Data.Aviation.Casr.Logbook.Meta.TrackLogs as A+import Data.Aviation.Casr.Logbook.Meta.TrackLogType as A+import Data.Aviation.Casr.Logbook.Meta.Video as A+import Data.Aviation.Casr.Logbook.Meta.VideoType as A+import Data.Aviation.Casr.Logbook.Meta.Visualisation as A
+ src/Data/Aviation/Casr/Logbook/Meta/AircraftFlightExpense.hs view
@@ -0,0 +1,19 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense(+ AircraftFlightExpense(ExpenseAircraftUsage, ExpenseAircraftLanding)+) where++import Control.Lens(makeClassyPrisms)+import Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense+import Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++data AircraftFlightExpense =+ ExpenseAircraftUsage AircraftUsageExpense+ | ExpenseAircraftLanding AircraftLandingExpense+ deriving (Eq, Ord, Show)++makeClassyPrisms ''AircraftFlightExpense
+ src/Data/Aviation/Casr/Logbook/Meta/AircraftFlightMeta.hs view
@@ -0,0 +1,26 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta(+ AircraftFlightMeta(AircraftFlightMeta)+) where++import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense+import Data.Aviation.Casr.Logbook.Meta.Image+import Data.Aviation.Casr.Logbook.Meta.TrackLog+import Data.Aviation.Casr.Logbook.Meta.Video+import Data.Aviation.Casr.Logbook.Meta.Visualisation+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++data AircraftFlightMeta =+ AircraftFlightMeta {+ _tracklogs :: [TrackLog]+ , _visualisations :: [Visualisation]+ , _images :: [Image]+ , _videos :: [Video]+ , _expenses :: [AircraftFlightExpense]+ } deriving (Eq, Ord, Show)++makeClassy '' AircraftFlightMeta
+ src/Data/Aviation/Casr/Logbook/Meta/AircraftLandingExpense.hs view
@@ -0,0 +1,20 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense(+ AircraftLandingExpense(AircraftLandingExpense)+) where++import Control.Lens(makeClassy)+import Data.Eq(Eq)+import Data.Int(Int)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data AircraftLandingExpense =+ AircraftLandingExpense {+ _aircraftlandingexpenseamount :: Int+ , _aircraftlandingexpensename :: String+ } deriving (Eq, Ord, Show)++makeClassy ''AircraftLandingExpense
+ src/Data/Aviation/Casr/Logbook/Meta/AircraftUsageExpense.hs view
@@ -0,0 +1,20 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense(+ AircraftUsageExpense(AircraftUsageExpense)+) where++import Control.Lens(makeClassy)+import Data.Eq(Eq)+import Data.Int(Int)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data AircraftUsageExpense =+ AircraftUsageExpense {+ _aircraftusageexpenseperhour :: Int+ , _aircraftusageexpensename :: String+ } deriving (Eq, Ord, Show)++makeClassy ''AircraftUsageExpense
+ src/Data/Aviation/Casr/Logbook/Meta/BriefingExpense.hs view
@@ -0,0 +1,20 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.BriefingExpense(+ BriefingExpense(BriefingExpense)+) where++import Control.Lens(makeClassy)+import Data.Eq(Eq)+import Data.Int(Int)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data BriefingExpense =+ BriefingExpense {+ _briefingexpenseperhour :: Int+ , _briefingexpensename :: String+ } deriving (Eq, Ord, Show)++makeClassy ''BriefingExpense
+ src/Data/Aviation/Casr/Logbook/Meta/BriefingMeta.hs view
@@ -0,0 +1,22 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FlexibleInstances #-}++module Data.Aviation.Casr.Logbook.Meta.BriefingMeta(+ BriefingMeta(BriefingMeta)+) where++import Control.Lens(makeClassy, makeWrapped)+import Data.Aviation.Casr.Logbook.Meta.BriefingExpense+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++newtype BriefingMeta =+ BriefingMeta+ [BriefingExpense]+ deriving (Eq, Ord, Show)++makeClassy ''BriefingMeta+makeWrapped ''BriefingMeta
+ src/Data/Aviation/Casr/Logbook/Meta/ExamExpense.hs view
@@ -0,0 +1,20 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.ExamExpense(+ ExamExpense(ExamExpense)+) where++import Control.Lens(makeClassy)+import Data.Eq(Eq)+import Data.Int(Int)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data ExamExpense =+ ExamExpense {+ _examexpenseamount :: Int+ , _examexpensename :: String+ } deriving (Eq, Ord, Show)++makeClassy ''ExamExpense
+ src/Data/Aviation/Casr/Logbook/Meta/ExamMeta.hs view
@@ -0,0 +1,22 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FlexibleInstances #-}++module Data.Aviation.Casr.Logbook.Meta.ExamMeta(+ ExamMeta(ExamMeta)+) where++import Control.Lens(makeClassy, makeWrapped)+import Data.Aviation.Casr.Logbook.Meta.ExamExpense+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++newtype ExamMeta =+ ExamMeta+ [ExamExpense]+ deriving (Eq, Ord, Show)++makeClassy ''ExamMeta+makeWrapped ''ExamMeta
+ src/Data/Aviation/Casr/Logbook/Meta/Image.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.Image(+ Image(Image)+) where++import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Meta.ImageType+import Data.Eq(Eq)+import Data.Maybe(Maybe)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data Image =+ Image {+ _imageuri :: String+ , _imagetype :: ImageType+ , _imagesource :: Maybe String+ , _imagename :: Maybe String+ } deriving (Eq, Ord, Show)+ +makeClassy ''Image
+ src/Data/Aviation/Casr/Logbook/Meta/ImageType.hs view
@@ -0,0 +1,18 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.ImageType(+ ImageType(Jpg, Png, Gif)+) where++import Control.Lens(makeClassyPrisms)+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++data ImageType =+ Jpg+ | Png+ | Gif+ deriving (Eq, Ord, Show)++makeClassyPrisms ''ImageType
+ src/Data/Aviation/Casr/Logbook/Meta/SimulatorFlightExpense.hs view
@@ -0,0 +1,20 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense(+ SimulatorFlightExpense(SimulatorFlightExpense)+) where++import Control.Lens(makeClassy)+import Data.Eq(Eq)+import Data.Int(Int)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data SimulatorFlightExpense =+ SimulatorFlightExpense {+ _simulatorflightexpenseperhour :: Int+ , _simulatorflightexpensename :: String+ } deriving (Eq, Ord, Show)++makeClassy ''SimulatorFlightExpense
+ src/Data/Aviation/Casr/Logbook/Meta/SimulatorFlightMeta.hs view
@@ -0,0 +1,22 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FlexibleInstances #-}++module Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta(+ SimulatorFlightMeta(SimulatorFlightMeta)+) where++import Control.Lens(makeClassy, makeWrapped)+import Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++newtype SimulatorFlightMeta =+ SimulatorFlightMeta+ [SimulatorFlightExpense]+ deriving (Eq, Ord, Show)++makeClassy ''SimulatorFlightMeta+makeWrapped ''SimulatorFlightMeta
+ src/Data/Aviation/Casr/Logbook/Meta/TrackLog.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.TrackLog(+ TrackLog(TrackLog)+) where++import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Meta.TrackLogType+import Data.Eq(Eq)+import Data.Maybe(Maybe)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data TrackLog =+ TrackLog {+ _trackloguri :: String+ , _tracklogtype :: TrackLogType+ , _tracklogsource :: Maybe String+ , _tracklogname :: Maybe String+ } deriving (Eq, Ord, Show)+ +makeClassy ''TrackLog
+ src/Data/Aviation/Casr/Logbook/Meta/TrackLogType.hs view
@@ -0,0 +1,20 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.TrackLogType(+ TrackLogType(Gpx, Kml, Kmz, ImageTrackLog)+) where++import Control.Lens(makeClassyPrisms)+import Data.Aviation.Casr.Logbook.Meta.ImageType+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++data TrackLogType =+ Gpx+ | Kml+ | Kmz+ | ImageTrackLog ImageType+ deriving (Eq, Ord, Show)++makeClassyPrisms ''TrackLogType
+ src/Data/Aviation/Casr/Logbook/Meta/TrackLogs.hs view
@@ -0,0 +1,22 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FlexibleInstances #-}++module Data.Aviation.Casr.Logbook.Meta.TrackLogs(+ TrackLogs(TrackLogs)+) where++import Control.Lens(makeClassy, makeWrapped)+import Data.Aviation.Casr.Logbook.Meta.TrackLog+import Data.Eq(Eq)+import Data.Ord(Ord)+import Prelude(Show)++newtype TrackLogs =+ TrackLogs+ [TrackLog]+ deriving (Eq, Ord, Show)++makeClassy ''TrackLogs+makeWrapped ''TrackLogs
+ src/Data/Aviation/Casr/Logbook/Meta/Video.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.Video(+ Video(Video)+) where++import Control.Lens(makeClassy)+import Data.Aviation.Casr.Logbook.Meta.VideoType+import Data.Eq(Eq)+import Data.Maybe(Maybe)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data Video =+ Video {+ _videouri :: String+ , _videotype :: VideoType+ , _videosource :: Maybe String+ , _videoname :: Maybe String+ } deriving (Eq, Ord, Show)++makeClassy ''Video
+ src/Data/Aviation/Casr/Logbook/Meta/VideoType.hs view
@@ -0,0 +1,44 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.VideoType(+ VideoType(YouTube, Vimeo, Bambuser)+, linkVideoType+, iframeVideoType+) where++import Control.Lens(makeClassyPrisms)+import Data.Eq(Eq)+import Data.List((++))+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data VideoType =+ YouTube+ | Vimeo+ | Bambuser+ deriving (Eq, Ord, Show)+ +makeClassyPrisms ''VideoType++linkVideoType ::+ VideoType+ -> String+ -> String+linkVideoType YouTube u =+ "https://www.youtube.com/watch?v=" ++ u+linkVideoType Vimeo u =+ "https://bambuser.com/v/" ++ u +linkVideoType Bambuser u =+ "https://vimeo.com/" ++ u++iframeVideoType ::+ VideoType+ -> String+ -> String+iframeVideoType YouTube u =+ "http://www.youtube.com/embed/" ++ u ++ "?autohide=1&cc_load_policy=1&color=white&controls=1&disablekb=0&fs=1&iv_load_policy=0&loop=0&modestbranding=1&rel=0&showinfo=0"+iframeVideoType Vimeo u =+ "https://player.vimeo.com/video/" ++ u+iframeVideoType Bambuser u =+ "https://embed.bambuser.com/broadcast/" ++ u ++ "?chat=1&mute=0"
+ src/Data/Aviation/Casr/Logbook/Meta/Visualisation.hs view
@@ -0,0 +1,21 @@+{-# LANGUAGE TemplateHaskell #-}++module Data.Aviation.Casr.Logbook.Meta.Visualisation(+ Visualisation(Doarama)+) where++import Control.Lens(makeClassy)+import Data.Eq(Eq)+import Data.Maybe(Maybe)+import Data.Ord(Ord)+import Data.String(String)+import Prelude(Show)++data Visualisation =+ Doarama {+ _doaramaid :: String+ , _oembedid :: String+ , _doaramaname :: Maybe String+ } deriving (Eq, Ord, Show)++makeClassy ''Visualisation
+ test/doctests.hs view
@@ -0,0 +1,32 @@+module Main where++import Build_doctests (deps)+import Control.Applicative+import Control.Monad+import Data.List+import System.Directory+import System.FilePath+import Test.DocTest++main ::+ IO ()+main =+ getSources >>= \sources -> doctest $+ "-isrc"+ : "-idist/build/autogen"+ : "-optP-include"+ : "-optPdist/build/autogen/cabal_macros.h"+ : "-hide-all-packages"+ : map ("-package="++) deps ++ sources++getSources :: IO [FilePath]+getSources = filter (isSuffixOf ".hs") <$> go "src"+ where+ go dir = do+ (dirs, files) <- getFilesAndDirectories dir+ (files ++) . concat <$> mapM go dirs++getFilesAndDirectories :: FilePath -> IO ([FilePath], [FilePath])+getFilesAndDirectories dir = do+ c <- map (dir </>) . filter (`notElem` ["..", "."]) <$> getDirectoryContents dir+ (,) <$> filterM doesDirectoryExist c <*> filterM doesFileExist c