@@ -72,9 +72,15 @@ stripPandoc p =
72
72
Left _ -> [Null ]
73
73
Right (Pandoc _ blocks) -> blocks
74
74
75
- getContent :: String -> IO [Block ]
76
- getContent file = do
75
+ setEncodingToUTF8 :: IO Handle -> Bool -> IO ()
76
+ setEncodingToUTF8 handle useUTF8
77
+ | useUTF8 = join $ fmap (`hSetEncoding` utf8) handle
78
+ | not useUTF8 = return ()
79
+
80
+ getContent :: String -> Bool -> IO [Block ]
81
+ getContent file useUTF8 = do
77
82
let handle = openFile file ReadMode
83
+ setEncodingToUTF8 handle useUTF8
78
84
! contents <- fmap hGetContents handle
79
85
fmap hClose handle
80
86
let p = fmap (readMarkdown def) contents
@@ -85,14 +91,15 @@ getProcessableFileList list = do
85
91
let f = lines list
86
92
filter (\ x -> not $ " #" `isPrefixOf` x) f
87
93
88
- processFiles :: [String ] -> IO [Block ]
89
- processFiles toProcess =
90
- fmap concat (mapM getContent toProcess)
94
+ processFiles :: [String ] -> Bool -> IO [Block ]
95
+ processFiles toProcess useUTF8 =
96
+ fmap concat (mapM ( ` getContent` useUTF8) toProcess)
91
97
92
- simpleInclude :: String -> IO [Block ]
93
- simpleInclude list = do
98
+ simpleInclude :: String -> [ String ] -> IO [Block ]
99
+ simpleInclude list classes = do
94
100
let toProcess = getProcessableFileList list
95
- processFiles toProcess
101
+ let useUTF8 = " utf8" `elem` classes
102
+ processFiles toProcess useUTF8
96
103
97
104
doInclude :: Block -> IO [Block ]
98
105
doInclude (CodeBlock (_, classes, _) list)
@@ -102,7 +109,7 @@ doInclude (CodeBlock (_, classes, _) list)
102
109
let newclasses = filter (\ x -> " include" `isPrefixOf` x || " code" `isPrefixOf` x) classes
103
110
let blocks = fmap (B. codeBlockWith (" " , newclasses, [] )) content
104
111
fmap B. toList blocks
105
- | " include" `elem` classes = simpleInclude list
112
+ | " include" `elem` classes = simpleInclude list classes
106
113
doInclude x = return [x]
107
114
108
115
main :: IO ()
0 commit comments