neuron-0.4.0.0: src/app/Neuron/Zettelkasten/Connection.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Neuron.Zettelkasten.Connection where
import Data.Aeson (ToJSON)
import Relude
-- | Represent the connection between zettels
data Connection
= -- | A folgezettel points to a zettel that is conceptually a *part* of the
-- parent zettel.
Folgezettel
| -- | Any other ordinary connection (eg: "See also")
OrdinaryConnection
deriving (Eq, Ord, Show, Enum, Bounded, Generic, ToJSON)
instance Semigroup Connection where
-- A folgezettel link trumps all other kinds in that zettel.
Folgezettel <> _ = Folgezettel
_ <> Folgezettel = Folgezettel
OrdinaryConnection <> OrdinaryConnection = OrdinaryConnection