Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5cce1fc042 | ||
|
|
859f1d189e | ||
|
|
9959c36a42 | ||
|
|
dbacbb10ad | ||
|
|
d736766981 | ||
|
|
de08373d2d |
@@ -1,5 +1,12 @@
|
||||
# yore
|
||||
|
||||
[fz.beany.club](https://fz.beany.club) shows the [Freiburger Zeitung](https://www.ub.uni-freiburg.de/?id=117) (an important Freiburg im Breisgau newspaper going back to 1784) from exactly 100 years ago.
|
||||
It is feature-poor on purpose: You can browse a daily issue during your coffee break and that is basically it.
|
||||
|
||||
|  |  |
|
||||
| --- | --- |
|
||||
| October 5th, 1925 | September 15th, 1926 |
|
||||
|
||||
## Development
|
||||
|
||||
`flake.nix` defines a development shell that has everything you'll need. To enter, run
|
||||
@@ -47,5 +54,4 @@ By setting `$BASE_DIR` you can persist the database for later runs.
|
||||
- [x] Test leap second handling in the `time` package
|
||||
- [x] Fix container shutdown delay
|
||||
- [ ] Fix `responseFile` always returning 200
|
||||
- [ ] use queue to sync logging of indexer and main thread
|
||||
- [x] Vendor PDF.js for consistent cross-platform PDF rendering
|
||||
|
||||
+2
-3
@@ -65,7 +65,6 @@ import Yore.Time (addYears, getCurrentDay, getSecondsUntilMidnight)
|
||||
import Data.Fixed (Pico)
|
||||
import Data.Time.Clock.POSIX (getPOSIXTime)
|
||||
import qualified Envy
|
||||
import System.IO (BufferMode (..), hSetBuffering, stdout)
|
||||
import qualified Yore.DB as DB
|
||||
import qualified Yore.Log as Log
|
||||
|
||||
@@ -83,7 +82,7 @@ deriving instance Show Config
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
hSetBuffering stdout NoBuffering
|
||||
Log.setup
|
||||
|
||||
cfg <-
|
||||
Envy.load @ConfigT >>= \case
|
||||
@@ -244,7 +243,7 @@ instance MimeRender HTML RootModel where
|
||||
H.iframe ! A.src (H.toValue url) ! A.class_ "content" $ mempty
|
||||
where
|
||||
url :: String
|
||||
url = printf "/static/pdfjs-5.7.284-dist/web/viewer.html?file=/api/today/issue/%d/fz.pdf" issue
|
||||
url = printf "/static/pdfjs-5.7.284-dist/web/viewer.html?file=/api/today/issue/%d/fz.pdf#zoom=page-width" issue
|
||||
|
||||
(y, m, d) = toGregorian dateThen
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 152 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 190 KiB |
+9
-2
@@ -1,11 +1,18 @@
|
||||
module Yore.Log (Yore.Log.error, info) where
|
||||
module Yore.Log (Yore.Log.error, info, setup) where
|
||||
|
||||
import Control.Monad.IO.Class (MonadIO (..))
|
||||
import Data.Time (ZonedTime, getZonedTime)
|
||||
import Data.Time.Format (defaultTimeLocale, formatTime)
|
||||
import GHC.Stack (HasCallStack, SrcLoc (..), callStack, getCallStack)
|
||||
import System.IO (BufferMode (..), hSetBuffering, stdout)
|
||||
import Text.Printf (printf)
|
||||
|
||||
import qualified Data.Text as Text
|
||||
import qualified Data.Text.IO as TextIO
|
||||
|
||||
setup :: IO ()
|
||||
setup = hSetBuffering stdout LineBuffering
|
||||
|
||||
info :: (HasCallStack, MonadIO m) => String -> m ()
|
||||
info = doLog "INF"
|
||||
|
||||
@@ -16,7 +23,7 @@ doLog :: (HasCallStack, MonadIO m) => String -> String -> m ()
|
||||
doLog level msg = liftIO $ do
|
||||
now <- getZonedTime
|
||||
let location = getLocation $ getCallStack callStack
|
||||
printf "(%s) (%s) (%s) %s\n" (iso8601Show now) level location msg
|
||||
TextIO.putStrLn $ Text.pack $ printf "(%s) (%s) (%s) %s" (iso8601Show now) level location msg
|
||||
where
|
||||
getLocation :: [(String, SrcLoc)] -> String
|
||||
-- First entry is always a function from this module, skip it
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
cabal-version: 3.4
|
||||
|
||||
name: yore
|
||||
version: 0.0.10
|
||||
version: 0.0.12
|
||||
author: Paul Brinkmeier
|
||||
maintainer: hallo@pbrinkmeier.de
|
||||
copyright: 2023 Paul Brinkmeier
|
||||
|
||||
Reference in New Issue
Block a user