{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}

-- | This modules exposes the overall "The Crash Course" course.
module Study.Courses.English.Grammar.Crash.Course (course) where

import Core
import Study.Courses.English.Grammar.Crash.Lessons
import Language.Lojban.Dictionaries (englishDictionary)
import Study.Framework.DocumentBuilders (buildDocumentFromMarkdownCode)
import qualified Text.Pandoc as P
import Data.FileEmbed (embedStringFile)

-- | Course style.
style :: CourseStyle
style :: CourseStyle
style = Maybe String -> Maybe String -> CourseStyle
CourseStyle Maybe String
color1 Maybe String
iconUrl where
    -- Color1
    color1 :: Maybe String
color1 = String -> Maybe String
forall a. a -> Maybe a
Just
        String
"hsl(0, 0%, 30%)"
    -- Icon url
    iconUrl :: Maybe String
iconUrl = String -> Maybe String
forall a. a -> Maybe a
Just
        -- Source: https://www.flaticon.com/free-icon/jigsaw_993723#term=jigsaw&page=1&position=3
        String
"https://image.flaticon.com/icons/svg/993/993723.svg"

-- | Course credits.
credits :: P.Pandoc
Right Pandoc
credits = Text -> Either PandocError Pandoc
buildDocumentFromMarkdownCode $(embedStringFile "resources/courses/english/grammar/crash/credits.md")

-- | Course: The Crash Course.
course :: Course
course :: Course
course = Text
-> Text
-> Text
-> Maybe Pandoc
-> Maybe Pandoc
-> CourseStyle
-> Dictionary
-> [Lesson]
-> Course
Course Text
"crash-course_eng" Text
title Text
shortDescription Maybe Pandoc
forall {a}. Maybe a
longDescription (Pandoc -> Maybe Pandoc
forall a. a -> Maybe a
Just Pandoc
credits) CourseStyle
style Dictionary
englishDictionary [Lesson]
lessons where
    title :: Text
title = Text
"The Crash Course (pre-alpha)"
    shortDescription :: Text
shortDescription = Text
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor."
    longDescription :: Maybe a
longDescription = Maybe a
forall {a}. Maybe a
Nothing
    lessons :: [Lesson]
lessons = [Lesson
lesson01, Lesson
lesson02, Lesson
lesson03]