Compare commits

..

No commits in common. "97c345774462aa428843e1d5d21078616c1fd797" and "cb6a9766085efa2ec7da6cdb018562956786f78e" have entirely different histories.

5 changed files with 25 additions and 84 deletions

View file

@ -38,7 +38,7 @@ $(BUILDDIR)/%.html: $(PAGESDIR)/%.md $(TEMPLATE) $(LANGFILTER) $(LAANTAS_SCRIPT)
@echo "[pandoc] $<"
mkdir -p $(dir $@)
mkdir -p $(basename $@)
LAANTAS_SCRIPT="$(LAANTAS_SCRIPT)" LANG_COLOR="hsl(340deg, 50%, 35%)" \
LAANTAS_SCRIPT="$(LAANTAS_SCRIPT)" \
DIRNAME="$(basename $@)" \
FILENAME="$@" \
pandoc -s --toc --template $(TEMPLATE) -o $@ $< \

View file

@ -2,7 +2,6 @@ module LaantasImage
(Image (..), splitImage, splitImage', makeImage)
where
import Lang
import Text.Pandoc.Definition hiding (Image)
import qualified Text.Pandoc.Definition as Pandoc
import Data.Bifunctor
@ -27,22 +26,22 @@ data Image =
showText :: Bool
} deriving (Eq, Show)
splitImage :: Vars => Text -> Maybe Image
splitImage :: Text -> Maybe Image
splitImage (Text.uncons -> Just (c, txt))
| c == '!' = Just $ splitImage' txt
| c == '#' = Just $ (splitImage' txt) {showText = False}
splitImage _ = Nothing
splitImage' :: Vars => Text -> Image
splitImage' :: Text -> Image
splitImage' txt =
case imageOpts txt of
Just (txt, opts) -> defaultImage txt ?defColor
Just (txt, opts) -> defaultImage txt
& withOpt opts "file" (\f i -> i {file = makeFile f})
& withOpt opts "size" (\s i -> i {size = readt s})
& withOpt opts "stroke" (\k i -> i {stroke = readt k})
& withOpt opts "width" (\w i -> i {width = readt w})
& withOpt opts "color" (\c i -> i {color = c})
Nothing -> defaultImage txt ?defColor
Nothing -> defaultImage txt
where readt x = read $ Text.unpack x
withOpt :: Ord k => Map k v -> k -> (v -> a -> a) -> (a -> a)
@ -51,8 +50,8 @@ withOpt m k f =
Just v -> f v
Nothing -> id
defaultImage :: Text -> Text -> Image
defaultImage txt color =
defaultImage :: Text -> Image
defaultImage txt =
Image {
text = Text.filter notPunc txt,
title = toTitle txt,
@ -60,7 +59,7 @@ defaultImage txt color =
size = 20,
stroke = 0.75,
width = 600,
color = color,
color = "hsl(340deg, 50%, 35%)",
showText = True
}

View file

@ -4,28 +4,16 @@ import Text.Pandoc.Definition
import Data.Char (toLower)
import qualified Data.Text as Text
import System.IO
import Data.Text (Text)
data Lang = Lántas deriving (Eq, Show)
type Vars = (?lang :: Maybe Lang, ?defColor :: Text)
toText :: Maybe MetaValue -> IO (Maybe Text)
toText (Just (MetaInlines [Str s])) = toText (Just (MetaString s)) -- ugh
toText (Just (MetaString s)) = pure $ Just s
toText Nothing = pure Nothing
toText (Just ) = do
hPutStrLn stderr $ "[WARN] expected a string, got: " <> show
pure Nothing
type Vars = (?lang :: Maybe Lang)
toLang :: Maybe MetaValue -> IO (Maybe Lang)
toLang m = do
mres <- fmap (Text.map toLower) <$> toText m
case mres of
Just res -> do
if res `elem` ["laantas", "lántas"] then
pure $ Just Lántas
else do
hPutStrLn stderr $ "[WARN] unknown language: " <> show res
pure Nothing
Nothing -> pure Nothing
toLang (Just (MetaInlines [Str s])) = toLang (Just (MetaString s)) -- ugh
toLang (Just (MetaString (Text.map toLower -> s)))
| s == "lántas" || s == "laantas" = pure $ Just Lántas
toLang Nothing = pure Nothing
toLang (Just ) = do
hPutStrLn stderr $ "[WARN] unknown language: " <> show
pure Nothing

View file

@ -9,22 +9,17 @@ import Text.Pandoc.Definition
import Text.Pandoc.JSON
import Text.Pandoc.Walk
import Data.Maybe
import Data.Map (Map)
import qualified Data.Map as Map
import Data.Text (Text)
import qualified Data.Text as Text
import Control.Applicative
import Control.Monad
import System.Environment
main :: IO ()
main = toJSONFilter filter where
filter p@(Pandoc (Meta m) _) = do
lang <- toLang $ Map.lookup "conlang" m
defColor <- getDefColor m
let ?lang = lang
let ?defColor = defColor
lang' <- toLang $ Map.lookup "conlang" m
let ?lang = lang'
fmap (walk makeEbnf .
walk makeQuotes .
walk (concatMap makeBlocks) .
@ -32,14 +27,6 @@ main = toJSONFilter filter where
walkM spans =<<
walkM (fmap concat . traverse glosses) p
getDefColor :: Map Text MetaValue -> IO Text
getDefColor m = do
res <- toText $ Map.lookup "lang-color" m
case res of
Just col -> pure col
Nothing -> do
env <- lookupEnv "LANG_COLOR"
pure $ maybe "black" Text.pack env
pluck :: Eq a => a -> [a] -> Maybe [a]
pluck _ [] = Nothing

View file

@ -195,9 +195,7 @@ ustai:
- t: {v: i}
d: sing
- t: n
d:
- song
- ustail: (also) magic
d: song
purai:
p: ˈpu.ɾaj
@ -313,9 +311,7 @@ gimimli:
sá:
p: ˈsaː
t: adv
d:
- now
- sá sá: these days
d: now
n: usually fronted in sentence
gimimƶu:
@ -480,7 +476,6 @@ júli:
p: ˈjuː.li
t: {v: t}
d:
- use (with direct object)
- put (with lative cases)
- take (with ablative cases)
@ -1499,8 +1494,8 @@ ki:
- kisa: low
- kisas: downwards
gulai:
p: ˈgu.lai
nuasga:
p: ˈnuəs.ɡa
t: {v: i}
d: jump
@ -1691,9 +1686,7 @@ nis:
siha:
p: ˈsi.xa
t: {v: t}
d:
- remember
- be careful with
d: remember
siham:
t: n
@ -2048,13 +2041,7 @@ aga:
tisu:
t: {v: aux}
d: if...then
n:
- see the grammar for details (when i write them)
- if-clause nominalised in in-abl
- then-clause is main, with tisu as aux verb
e:
o: bairunagulinḿ ákkínam tisu
t: if i see you i will scream
n: see the grammar for details (when i write them)
duguwa:
t: {v: t}
@ -2074,10 +2061,7 @@ duguwa:
igis:
p: ˈiɡ.is
t: n
d:
- ice
- crystal (also kut igis)
see: kus
d: ice
igisi:
p: ˈi.ɡi.si
@ -2100,20 +2084,3 @@ susuru:
t: {v: i}
d: be deep
n: not a noun, unlike most adjectives. who knows why
patta:
p: ˈpat.ta
t: n
d: door
šil:
p: ʃil
t: n
d:
- layer
- floor (level in building)
kus:
p: kus
t: n
d: [stone, rock]