From e91778493204c29d875975b81a52074419bbbfa9 Mon Sep 17 00:00:00 2001 From: Mohamed Abdelnour Date: Sat, 29 May 2021 05:44:22 +0200 Subject: [PATCH] Add Literate Haskell syntax test file --- .../highlighted/Literate Haskell/Main.lhs | 47 +++++++++++++++++++ .../source/Literate Haskell/Main.lhs | 47 +++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 tests/syntax-tests/highlighted/Literate Haskell/Main.lhs create mode 100644 tests/syntax-tests/source/Literate Haskell/Main.lhs diff --git a/tests/syntax-tests/highlighted/Literate Haskell/Main.lhs b/tests/syntax-tests/highlighted/Literate Haskell/Main.lhs new file mode 100644 index 00000000..a32aab33 --- /dev/null +++ b/tests/syntax-tests/highlighted/Literate Haskell/Main.lhs @@ -0,0 +1,47 @@ +\documentclass{article} + +\begin{document} + +\section*{Introduction} + +Text outside code environments should follow TeX/LaTeX highlighting. + +The code environment delimiters themselves should be highlighted. + +Text inside code environments should follow regular Haskell highlighting. + +\begin{code} +import Data.List +import System.Environment +import Text.Printf + +twoSumN :: Int -> [Int] -> [Int] +twoSumN _ [] = [] +twoSumN n (x : xs) | (n - x) `elem` xs = [x, n - x] + | otherwise = twoSumN n xs + +threeSumN :: Int -> [Int] -> [Int] +threeSumN _ [] = [] +threeSumN n (x : xs) | null partial = threeSumN n xs + | otherwise = x : partial + where partial = twoSumN (n - x) xs +\end{code} + +Text in-between code environments. +% LaTeX comment. + +\begin{code} +output :: String -> IO () +output path = do + input <- sort . map read . filter (not . null) . lines <$> readFile path + printf "File: %s\n" path + printf " Part 1: %d\n" . product . twoSumN 2020 $ input + printf " Part 2: %d\n" . product . threeSumN 2020 $ input + +-- Haskell comment inside code environment. + +main :: IO () +main = getArgs >>= mapM_ output +\end{code} + +\end{document} diff --git a/tests/syntax-tests/source/Literate Haskell/Main.lhs b/tests/syntax-tests/source/Literate Haskell/Main.lhs new file mode 100644 index 00000000..e71756a5 --- /dev/null +++ b/tests/syntax-tests/source/Literate Haskell/Main.lhs @@ -0,0 +1,47 @@ +\documentclass{article} + +\begin{document} + +\section*{Introduction} + +Text outside code environments should follow TeX/LaTeX highlighting. + +The code environment delimiters themselves should be highlighted. + +Text inside code environments should follow regular Haskell highlighting. + +\begin{code} +import Data.List +import System.Environment +import Text.Printf + +twoSumN :: Int -> [Int] -> [Int] +twoSumN _ [] = [] +twoSumN n (x : xs) | (n - x) `elem` xs = [x, n - x] + | otherwise = twoSumN n xs + +threeSumN :: Int -> [Int] -> [Int] +threeSumN _ [] = [] +threeSumN n (x : xs) | null partial = threeSumN n xs + | otherwise = x : partial + where partial = twoSumN (n - x) xs +\end{code} + +Text in-between code environments. +% LaTeX comment. + +\begin{code} +output :: String -> IO () +output path = do + input <- sort . map read . filter (not . null) . lines <$> readFile path + printf "File: %s\n" path + printf " Part 1: %d\n" . product . twoSumN 2020 $ input + printf " Part 2: %d\n" . product . threeSumN 2020 $ input + +-- Haskell comment inside code environment. + +main :: IO () +main = getArgs >>= mapM_ output +\end{code} + +\end{document}