Shuffle things around and create a demo
This commit is contained in:
parent
caafd820b6
commit
b73c4cfd1b
5
FeedMonad-demo/CHANGELOG.md
Normal file
5
FeedMonad-demo/CHANGELOG.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Revision history for FeedMonad-demo
|
||||||
|
|
||||||
|
## 0.1.0.0 -- YYYY-mm-dd
|
||||||
|
|
||||||
|
* First version. Released on an unsuspecting world.
|
38
FeedMonad-demo/FeedMonad-demo.cabal
Normal file
38
FeedMonad-demo/FeedMonad-demo.cabal
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
cabal-version: 2.4
|
||||||
|
name: FeedMonad-demo
|
||||||
|
version: 0.1.0.0
|
||||||
|
|
||||||
|
-- A short (one-line) description of the package.
|
||||||
|
-- synopsis:
|
||||||
|
|
||||||
|
-- A longer description of the package.
|
||||||
|
-- description:
|
||||||
|
|
||||||
|
-- A URL where users can report bugs.
|
||||||
|
-- bug-reports:
|
||||||
|
|
||||||
|
-- The license under which the package is released.
|
||||||
|
-- license:
|
||||||
|
author: Mats Rauhala
|
||||||
|
maintainer: mats.rauhala@iki.fi
|
||||||
|
|
||||||
|
-- A copyright notice.
|
||||||
|
-- copyright:
|
||||||
|
-- category:
|
||||||
|
extra-source-files: CHANGELOG.md
|
||||||
|
|
||||||
|
executable FeedMonad-demo
|
||||||
|
main-is: Main.hs
|
||||||
|
|
||||||
|
-- Modules included in this executable, other than Main.
|
||||||
|
-- other-modules:
|
||||||
|
|
||||||
|
-- LANGUAGE extensions used by modules in this package.
|
||||||
|
-- other-extensions:
|
||||||
|
build-depends:
|
||||||
|
base ^>=4.14.3.0,
|
||||||
|
FeedMonad,
|
||||||
|
containers
|
||||||
|
|
||||||
|
hs-source-dirs: app
|
||||||
|
default-language: Haskell2010
|
9
FeedMonad-demo/app/Main.hs
Normal file
9
FeedMonad-demo/app/Main.hs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
module Main where
|
||||||
|
|
||||||
|
import FeedMonad
|
||||||
|
import Data.Category
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = do
|
||||||
|
defaultMain defaultConfig{feeds = [ Category "News" [] ]}
|
11
FeedMonad-demo/default.nix
Normal file
11
FeedMonad-demo/default.nix
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{ mkDerivation, base, FeedMonad, lib }:
|
||||||
|
mkDerivation {
|
||||||
|
pname = "FeedMonad-demo";
|
||||||
|
version = "0.1.0.0";
|
||||||
|
src = ./.;
|
||||||
|
isLibrary = false;
|
||||||
|
isExecutable = true;
|
||||||
|
executableHaskellDepends = [ base FeedMonad ];
|
||||||
|
license = "unknown";
|
||||||
|
hydraPlatforms = lib.platforms.none;
|
||||||
|
}
|
4
FeedMonad-demo/src/MyLib.hs
Normal file
4
FeedMonad-demo/src/MyLib.hs
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
module MyLib (someFunc) where
|
||||||
|
|
||||||
|
someFunc :: IO ()
|
||||||
|
someFunc = putStrLn "someFunc"
|
@ -28,6 +28,7 @@ library
|
|||||||
Data.Entry
|
Data.Entry
|
||||||
Middleware
|
Middleware
|
||||||
Paths_FeedMonad
|
Paths_FeedMonad
|
||||||
|
Data.Category
|
||||||
|
|
||||||
-- Modules included in this library but not exported.
|
-- Modules included in this library but not exported.
|
||||||
-- other-modules:
|
-- other-modules:
|
||||||
@ -50,18 +51,3 @@ library
|
|||||||
hs-source-dirs: src
|
hs-source-dirs: src
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
ghc-options: -Wall
|
ghc-options: -Wall
|
||||||
|
|
||||||
executable FeedMonad
|
|
||||||
main-is: Main.hs
|
|
||||||
|
|
||||||
-- Modules included in this executable, other than Main.
|
|
||||||
-- other-modules:
|
|
||||||
|
|
||||||
-- LANGUAGE extensions used by modules in this package.
|
|
||||||
-- other-extensions:
|
|
||||||
build-depends:
|
|
||||||
base ^>=4.14.3.0,
|
|
||||||
FeedMonad
|
|
||||||
|
|
||||||
hs-source-dirs: app
|
|
||||||
default-language: Haskell2010
|
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
module Main where
|
|
||||||
|
|
||||||
import FeedMonad (defaultMain, defaultConfig)
|
|
||||||
|
|
||||||
main :: IO ()
|
|
||||||
main =
|
|
||||||
defaultMain defaultConfig
|
|
15
FeedMonad/src/Data/Category.hs
Normal file
15
FeedMonad/src/Data/Category.hs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{-# LANGUAGE DeriveFunctor #-}
|
||||||
|
module Data.Category where
|
||||||
|
|
||||||
|
import Data.Text (Text)
|
||||||
|
|
||||||
|
data Category a
|
||||||
|
= Leaf a
|
||||||
|
| Category Text [Category a]
|
||||||
|
deriving (Show, Functor)
|
||||||
|
|
||||||
|
foldCategory :: (a -> b) -> (Text -> [b] -> b) -> Category a -> b
|
||||||
|
foldCategory fab f = go
|
||||||
|
where
|
||||||
|
go (Leaf a) = fab a
|
||||||
|
go (Category txt cats) = f txt (map go cats)
|
@ -1,17 +1,18 @@
|
|||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
{-# LANGUAGE DeriveFunctor #-}
|
||||||
module FeedMonad where
|
module FeedMonad where
|
||||||
|
|
||||||
import Data.Tree (Forest)
|
|
||||||
import Data.Text (Text)
|
import Data.Text (Text)
|
||||||
import Data.Entry (URL)
|
import Data.Entry (URL)
|
||||||
import Middleware (Middleware)
|
import Middleware (Middleware)
|
||||||
import Numeric.Natural (Natural)
|
import Numeric.Natural (Natural)
|
||||||
import Data.Foldable (for_)
|
import Data.Category (Category)
|
||||||
|
|
||||||
|
|
||||||
newtype Minutes = Minutes Natural
|
newtype Minutes = Minutes Natural
|
||||||
|
|
||||||
data FeedMonad = FeedMonad
|
data FeedMonad = FeedMonad
|
||||||
{ feeds :: Forest URL
|
{ feeds :: [Category URL]
|
||||||
-- ^ The forest of urls for the feeds. It's a forest because of the categories
|
-- ^ The forest of urls for the feeds. It's a forest because of the categories
|
||||||
, filters :: Middleware
|
, filters :: Middleware
|
||||||
-- ^ The middleware. Modifies the scoring, tags and content
|
-- ^ The middleware. Modifies the scoring, tags and content
|
||||||
|
1
cabal.project
Normal file
1
cabal.project
Normal file
@ -0,0 +1 @@
|
|||||||
|
packages: */*.cabal
|
@ -10,13 +10,14 @@ let
|
|||||||
};
|
};
|
||||||
easy-hls = callPackage easy-hls-src { ghcVersions = [ hp.ghc.version ]; };
|
easy-hls = callPackage easy-hls-src { ghcVersions = [ hp.ghc.version ]; };
|
||||||
hp = haskellPackages.extend (self: super: {
|
hp = haskellPackages.extend (self: super: {
|
||||||
FeedMonad = self.callPackage ./. {};
|
FeedMonad = self.callPackage ./FeedMonad {};
|
||||||
|
FeedMonad-demo = self.callPackage ./FeedMonad-demo {};
|
||||||
});
|
});
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
hp.shellFor {
|
hp.shellFor {
|
||||||
packages = h: [h.FeedMonad];
|
packages = h: [h.FeedMonad h.FeedMonad-demo];
|
||||||
withHoogle = true;
|
withHoogle = true;
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
entr
|
entr
|
Loading…
Reference in New Issue
Block a user