mirror of https://github.com/voidlizard/hbs2
wip, play with skylighting
This commit is contained in:
parent
662d4d0a56
commit
7881981460
|
@ -946,6 +946,10 @@ executable test-playground
|
||||||
, unordered-containers
|
, unordered-containers
|
||||||
, resourcet
|
, resourcet
|
||||||
, text-icu >= 0.8.0.3
|
, text-icu >= 0.8.0.3
|
||||||
|
, skylighting-core
|
||||||
|
, skylighting
|
||||||
|
, skylighting-lucid
|
||||||
|
, text
|
||||||
|
|
||||||
|
|
||||||
executable test-pipe-mess
|
executable test-pipe-mess
|
||||||
|
|
|
@ -15,6 +15,16 @@ import Control.Monad.Trans.Cont
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
import UnliftIO
|
import UnliftIO
|
||||||
|
|
||||||
|
import Skylighting.Core
|
||||||
|
import Skylighting.Types
|
||||||
|
import Skylighting.Syntax
|
||||||
|
import Skylighting.Tokenizer
|
||||||
|
|
||||||
|
import Skylighting
|
||||||
|
import Data.Text (Text)
|
||||||
|
import Data.Text qualified as Text
|
||||||
|
import qualified Data.Text.IO as Text
|
||||||
|
|
||||||
-- желаемое поведение: добавить в новую версию A какое-нибудь поле так,
|
-- желаемое поведение: добавить в новую версию A какое-нибудь поле так,
|
||||||
-- что бы предыдущие записи продолжали десериализоваться без этого поля,
|
-- что бы предыдущие записи продолжали десериализоваться без этого поля,
|
||||||
-- а новое поле было бы пустым, если его нет -- в новой версии.
|
-- а новое поле было бы пустым, если его нет -- в новой версии.
|
||||||
|
@ -104,9 +114,39 @@ testCont = do
|
||||||
|
|
||||||
liftIO $ print i
|
liftIO $ print i
|
||||||
|
|
||||||
|
-- Функция для вывода токенов
|
||||||
|
printTokens :: [SourceLine] -> IO ()
|
||||||
|
printTokens = mapM_ printSourceLine
|
||||||
|
|
||||||
|
-- Вспомогательная функция для печати одной строки токенов
|
||||||
|
printSourceLine :: SourceLine -> IO ()
|
||||||
|
printSourceLine = mapM_ (putStrLn . show . tokenToText)
|
||||||
|
|
||||||
|
-- Преобразование токена в текст
|
||||||
|
tokenToText :: Token -> Text.Text
|
||||||
|
tokenToText (_,t) = t
|
||||||
|
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = do
|
main = do
|
||||||
|
let syntaxMap = defaultSyntaxMap
|
||||||
|
let maybeSyntax = lookupSyntax "haskell" syntaxMap
|
||||||
|
case maybeSyntax of
|
||||||
|
Nothing -> putStrLn "Синтаксис для Haskell не найден."
|
||||||
|
Just syntax -> do
|
||||||
|
-- Чтение кода из stdin или файла
|
||||||
|
code <- Text.getContents
|
||||||
|
-- Конфигурация токенизатора
|
||||||
|
let config = TokenizerConfig { traceOutput = False, syntaxMap = syntaxMap }
|
||||||
|
-- Токенизация кода
|
||||||
|
case tokenize config syntax code of
|
||||||
|
Left err -> putStrLn $ "Ошибка токенизации: " ++ show err
|
||||||
|
Right tokens -> do
|
||||||
|
mapM_ print tokens
|
||||||
|
|
||||||
|
|
||||||
|
main' :: IO ()
|
||||||
|
main' = do
|
||||||
print "1"
|
print "1"
|
||||||
let a1 = serialise (A0 22) & deserialiseOrFail @A1
|
let a1 = serialise (A0 22) & deserialiseOrFail @A1
|
||||||
let a2 = serialise (A11 22) & deserialiseOrFail @A0
|
let a2 = serialise (A11 22) & deserialiseOrFail @A0
|
||||||
|
@ -126,6 +166,5 @@ main = do
|
||||||
print $ a1 <&> set a1Str (Just "JOPAKITA")
|
print $ a1 <&> set a1Str (Just "JOPAKITA")
|
||||||
print $ a4 <&> set a1Str (Just "JOPAKITA")
|
print $ a4 <&> set a1Str (Just "JOPAKITA")
|
||||||
|
|
||||||
pure ()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue