Compare commits
No commits in common. "97c345774462aa428843e1d5d21078616c1fd797" and "cb6a9766085efa2ec7da6cdb018562956786f78e" have entirely different histories.
97c3457744
...
cb6a976608
5 changed files with 25 additions and 84 deletions
2
Makefile
2
Makefile
|
@ -38,7 +38,7 @@ $(BUILDDIR)/%.html: $(PAGESDIR)/%.md $(TEMPLATE) $(LANGFILTER) $(LAANTAS_SCRIPT)
|
||||||
@echo "[pandoc] $<"
|
@echo "[pandoc] $<"
|
||||||
mkdir -p $(dir $@)
|
mkdir -p $(dir $@)
|
||||||
mkdir -p $(basename $@)
|
mkdir -p $(basename $@)
|
||||||
LAANTAS_SCRIPT="$(LAANTAS_SCRIPT)" LANG_COLOR="hsl(340deg, 50%, 35%)" \
|
LAANTAS_SCRIPT="$(LAANTAS_SCRIPT)" \
|
||||||
DIRNAME="$(basename $@)" \
|
DIRNAME="$(basename $@)" \
|
||||||
FILENAME="$@" \
|
FILENAME="$@" \
|
||||||
pandoc -s --toc --template $(TEMPLATE) -o $@ $< \
|
pandoc -s --toc --template $(TEMPLATE) -o $@ $< \
|
||||||
|
|
|
@ -2,7 +2,6 @@ module LaantasImage
|
||||||
(Image (..), splitImage, splitImage', makeImage)
|
(Image (..), splitImage, splitImage', makeImage)
|
||||||
where
|
where
|
||||||
|
|
||||||
import Lang
|
|
||||||
import Text.Pandoc.Definition hiding (Image)
|
import Text.Pandoc.Definition hiding (Image)
|
||||||
import qualified Text.Pandoc.Definition as Pandoc
|
import qualified Text.Pandoc.Definition as Pandoc
|
||||||
import Data.Bifunctor
|
import Data.Bifunctor
|
||||||
|
@ -27,22 +26,22 @@ data Image =
|
||||||
showText :: Bool
|
showText :: Bool
|
||||||
} deriving (Eq, Show)
|
} deriving (Eq, Show)
|
||||||
|
|
||||||
splitImage :: Vars => Text -> Maybe Image
|
splitImage :: Text -> Maybe Image
|
||||||
splitImage (Text.uncons -> Just (c, txt))
|
splitImage (Text.uncons -> Just (c, txt))
|
||||||
| c == '!' = Just $ splitImage' txt
|
| c == '!' = Just $ splitImage' txt
|
||||||
| c == '#' = Just $ (splitImage' txt) {showText = False}
|
| c == '#' = Just $ (splitImage' txt) {showText = False}
|
||||||
splitImage _ = Nothing
|
splitImage _ = Nothing
|
||||||
|
|
||||||
splitImage' :: Vars => Text -> Image
|
splitImage' :: Text -> Image
|
||||||
splitImage' txt₀ =
|
splitImage' txt₀ =
|
||||||
case imageOpts txt₀ of
|
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 "file" (\f i -> i {file = makeFile f})
|
||||||
& withOpt opts "size" (\s i -> i {size = readt s})
|
& withOpt opts "size" (\s i -> i {size = readt s})
|
||||||
& withOpt opts "stroke" (\k i -> i {stroke = readt k})
|
& withOpt opts "stroke" (\k i -> i {stroke = readt k})
|
||||||
& withOpt opts "width" (\w i -> i {width = readt w})
|
& withOpt opts "width" (\w i -> i {width = readt w})
|
||||||
& withOpt opts "color" (\c i -> i {color = c})
|
& withOpt opts "color" (\c i -> i {color = c})
|
||||||
Nothing -> defaultImage txt₀ ?defColor
|
Nothing -> defaultImage txt₀
|
||||||
where readt x = read $ Text.unpack x
|
where readt x = read $ Text.unpack x
|
||||||
|
|
||||||
withOpt :: Ord k => Map k v -> k -> (v -> a -> a) -> (a -> a)
|
withOpt :: Ord k => Map k v -> k -> (v -> a -> a) -> (a -> a)
|
||||||
|
@ -51,8 +50,8 @@ withOpt m k f =
|
||||||
Just v -> f v
|
Just v -> f v
|
||||||
Nothing -> id
|
Nothing -> id
|
||||||
|
|
||||||
defaultImage :: Text -> Text -> Image
|
defaultImage :: Text -> Image
|
||||||
defaultImage txt color =
|
defaultImage txt =
|
||||||
Image {
|
Image {
|
||||||
text = Text.filter notPunc txt,
|
text = Text.filter notPunc txt,
|
||||||
title = toTitle txt,
|
title = toTitle txt,
|
||||||
|
@ -60,7 +59,7 @@ defaultImage txt color =
|
||||||
size = 20,
|
size = 20,
|
||||||
stroke = 0.75,
|
stroke = 0.75,
|
||||||
width = 600,
|
width = 600,
|
||||||
color = color,
|
color = "hsl(340deg, 50%, 35%)",
|
||||||
showText = True
|
showText = True
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,28 +4,16 @@ import Text.Pandoc.Definition
|
||||||
import Data.Char (toLower)
|
import Data.Char (toLower)
|
||||||
import qualified Data.Text as Text
|
import qualified Data.Text as Text
|
||||||
import System.IO
|
import System.IO
|
||||||
import Data.Text (Text)
|
|
||||||
|
|
||||||
data Lang = Lántas deriving (Eq, Show)
|
data Lang = Lántas deriving (Eq, Show)
|
||||||
|
|
||||||
type Vars = (?lang :: Maybe Lang, ?defColor :: Text)
|
type Vars = (?lang :: Maybe Lang)
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
toLang :: Maybe MetaValue -> IO (Maybe Lang)
|
toLang :: Maybe MetaValue -> IO (Maybe Lang)
|
||||||
toLang m = do
|
toLang (Just (MetaInlines [Str s])) = toLang (Just (MetaString s)) -- ugh
|
||||||
mres <- fmap (Text.map toLower) <$> toText m
|
toLang (Just (MetaString (Text.map toLower -> s)))
|
||||||
case mres of
|
| s == "lántas" || s == "laantas" = pure $ Just Lántas
|
||||||
Just res -> do
|
toLang Nothing = pure Nothing
|
||||||
if res `elem` ["laantas", "lántas"] then
|
toLang (Just ℓ) = do
|
||||||
pure $ Just Lántas
|
hPutStrLn stderr $ "[WARN] unknown language: " <> show ℓ
|
||||||
else do
|
pure Nothing
|
||||||
hPutStrLn stderr $ "[WARN] unknown language: " <> show res
|
|
||||||
pure Nothing
|
|
||||||
Nothing -> pure Nothing
|
|
||||||
|
|
|
@ -9,22 +9,17 @@ import Text.Pandoc.Definition
|
||||||
import Text.Pandoc.JSON
|
import Text.Pandoc.JSON
|
||||||
import Text.Pandoc.Walk
|
import Text.Pandoc.Walk
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
import Data.Map (Map)
|
|
||||||
import qualified Data.Map as Map
|
import qualified Data.Map as Map
|
||||||
import Data.Text (Text)
|
|
||||||
import qualified Data.Text as Text
|
import qualified Data.Text as Text
|
||||||
import Control.Applicative
|
import Control.Applicative
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
import System.Environment
|
|
||||||
|
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = toJSONFilter filter where
|
main = toJSONFilter filter where
|
||||||
filter p@(Pandoc (Meta m) _) = do
|
filter p@(Pandoc (Meta m) _) = do
|
||||||
lang <- toLang $ Map.lookup "conlang" m
|
lang' <- toLang $ Map.lookup "conlang" m
|
||||||
defColor <- getDefColor m
|
let ?lang = lang'
|
||||||
let ?lang = lang
|
|
||||||
let ?defColor = defColor
|
|
||||||
fmap (walk makeEbnf .
|
fmap (walk makeEbnf .
|
||||||
walk makeQuotes .
|
walk makeQuotes .
|
||||||
walk (concatMap makeBlocks) .
|
walk (concatMap makeBlocks) .
|
||||||
|
@ -32,14 +27,6 @@ main = toJSONFilter filter where
|
||||||
walkM spans =<<
|
walkM spans =<<
|
||||||
walkM (fmap concat . traverse glosses) p
|
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 :: Eq a => a -> [a] -> Maybe [a]
|
||||||
pluck _ [] = Nothing
|
pluck _ [] = Nothing
|
||||||
|
|
|
@ -195,9 +195,7 @@ ustai:
|
||||||
- t: {v: i}
|
- t: {v: i}
|
||||||
d: sing
|
d: sing
|
||||||
- t: n
|
- t: n
|
||||||
d:
|
d: song
|
||||||
- song
|
|
||||||
- ustail: (also) magic
|
|
||||||
|
|
||||||
purai:
|
purai:
|
||||||
p: ˈpu.ɾaj
|
p: ˈpu.ɾaj
|
||||||
|
@ -313,9 +311,7 @@ gimimli:
|
||||||
sá:
|
sá:
|
||||||
p: ˈsaː
|
p: ˈsaː
|
||||||
t: adv
|
t: adv
|
||||||
d:
|
d: now
|
||||||
- now
|
|
||||||
- sá sá: these days
|
|
||||||
n: usually fronted in sentence
|
n: usually fronted in sentence
|
||||||
|
|
||||||
gimimƶu:
|
gimimƶu:
|
||||||
|
@ -480,7 +476,6 @@ júli:
|
||||||
p: ˈjuː.li
|
p: ˈjuː.li
|
||||||
t: {v: t}
|
t: {v: t}
|
||||||
d:
|
d:
|
||||||
- use (with direct object)
|
|
||||||
- put (with lative cases)
|
- put (with lative cases)
|
||||||
- take (with ablative cases)
|
- take (with ablative cases)
|
||||||
|
|
||||||
|
@ -1499,8 +1494,8 @@ ki:
|
||||||
- kisa: low
|
- kisa: low
|
||||||
- kisas: downwards
|
- kisas: downwards
|
||||||
|
|
||||||
gulai:
|
nuasga:
|
||||||
p: ˈgu.lai
|
p: ˈnuəs.ɡa
|
||||||
t: {v: i}
|
t: {v: i}
|
||||||
d: jump
|
d: jump
|
||||||
|
|
||||||
|
@ -1691,9 +1686,7 @@ nis:
|
||||||
siha:
|
siha:
|
||||||
p: ˈsi.xa
|
p: ˈsi.xa
|
||||||
t: {v: t}
|
t: {v: t}
|
||||||
d:
|
d: remember
|
||||||
- remember
|
|
||||||
- be careful with
|
|
||||||
|
|
||||||
siham:
|
siham:
|
||||||
t: n
|
t: n
|
||||||
|
@ -2048,13 +2041,7 @@ aga:
|
||||||
tisu:
|
tisu:
|
||||||
t: {v: aux}
|
t: {v: aux}
|
||||||
d: if...then
|
d: if...then
|
||||||
n:
|
n: see the grammar for details (when i write them)
|
||||||
- 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
|
|
||||||
|
|
||||||
duguwa:
|
duguwa:
|
||||||
t: {v: t}
|
t: {v: t}
|
||||||
|
@ -2074,10 +2061,7 @@ duguwa:
|
||||||
igis:
|
igis:
|
||||||
p: ˈiɡ.is
|
p: ˈiɡ.is
|
||||||
t: n
|
t: n
|
||||||
d:
|
d: ice
|
||||||
- ice
|
|
||||||
- crystal (also kut igis)
|
|
||||||
see: kus
|
|
||||||
|
|
||||||
igisi:
|
igisi:
|
||||||
p: ˈi.ɡi.si
|
p: ˈi.ɡi.si
|
||||||
|
@ -2100,20 +2084,3 @@ susuru:
|
||||||
t: {v: i}
|
t: {v: i}
|
||||||
d: be deep
|
d: be deep
|
||||||
n: not a noun, unlike most adjectives. who knows why
|
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]
|
|
||||||
|
|
Loading…
Reference in a new issue