@@ -179,25 +179,37 @@ doOpt (k',v) = do
179179 "template" ->
180180 parseYAML v >>= \x -> return (\o -> o{ optTemplate = unpack <$> x })
181181 "variables" ->
182− parseYAML v >>= \x -> return (\o -> o{ optVariables = x })
182+ parseYAML v >>= \x -> return (\o -> o{ optVariables =
183+ optVariables o <> x })
183184 "metadata" ->
184− parseYAML v >>= \x -> return (\o -> o{ optMetadata = contextToMeta x })
185+ parseYAML v >>= \x -> return (\o -> o{ optMetadata = optMetadata o <>
186+ contextToMeta x })
185187 "metadata-files" ->
186188 (parseYAML v >>= \x ->
187− return (\o -> o{ optMetadataFiles = map unpack x }))
189+ return (\o -> o{ optMetadataFiles =
190+ optMetadataFiles o <>
191+ map unpack x }))
188192 "metadata-file" -> -- allow either a list or a single value
189− (parseYAML v >>= \x -> return (\o -> o{ optMetadataFiles = map unpack x }))
193+ (parseYAML v >>= \x -> return (\o -> o{ optMetadataFiles =
194+ optMetadataFiles o <>
195+ map unpack x }))
190196 <|>
191197 (parseYAML v >>= \x ->
192− return (\o -> o{ optMetadataFiles = [unpack x] }))
198+ return (\o -> o{ optMetadataFiles =
199+ optMetadataFiles o <>[unpack x] }))
193200 "output-file" ->
194201 parseYAML v >>= \x -> return (\o -> o{ optOutputFile = unpack <$> x })
195202 "input-files" ->
196− parseYAML v >>= \x -> return (\o -> o{ optInputFiles = map unpack x })
203+ parseYAML v >>= \x -> return (\o -> o{ optInputFiles = optInputFiles o <>
204+ map unpack x })
197205 "input-file" -> -- allow either a list or a single value
198− (parseYAML v >>= \x -> return (\o -> o{ optInputFiles = map unpack x }))
206+ (parseYAML v >>= \x -> return (\o -> o{ optInputFiles =
207+ optInputFiles o <>
208+ map unpack x }))
199209 <|>
200− (parseYAML v >>= \x -> return (\o -> o{ optInputFiles = [unpack x] }))
210+ (parseYAML v >>= \x -> return (\o -> o{ optInputFiles =
211+ optInputFiles o <>
212+ [unpack x] }))
201213 "number-sections" ->
202214 parseYAML v >>= \x -> return (\o -> o{ optNumberSections = x })
203215 "number-offset" ->
@@ -214,13 +226,16 @@ doOpt (k',v) = do
214226 parseYAML v >>= \x -> return (\o -> o{ optHighlightStyle = x })
215227 "syntax-definition" ->
216228 (parseYAML v >>= \x ->
217− return (\o -> o{ optSyntaxDefinitions = map unpack x }))
229+ return (\o -> o{ optSyntaxDefinitions =
230+ optSyntaxDefinitions o <> map unpack x }))
218231 <|>
219232 (parseYAML v >>= \x ->
220− return (\o -> o{ optSyntaxDefinitions = [unpack x] }))
233+ return (\o -> o{ optSyntaxDefinitions =
234+ optSyntaxDefinitions o <> [unpack x] }))
221235 "syntax-definitions" ->
222236 parseYAML v >>= \x ->
223− return (\o -> o{ optSyntaxDefinitions = map unpack x })
237+ return (\o -> o{ optSyntaxDefinitions =
238+ optSyntaxDefinitions o <> map unpack x })
224239 "top-level-division" ->
225240 parseYAML v >>= \x -> return (\o -> o{ optTopLevelDivision = x })
226241 "html-math-method" ->
@@ -238,7 +253,8 @@ doOpt (k',v) = do
238253 parseYAML v >>= \x ->
239254 return (\o -> o{ optEpubMetadata = unpack <$> x })
240255 "epub-fonts" ->
241− parseYAML v >>= \x -> return (\o -> o{ optEpubFonts = map unpack x })
256+ parseYAML v >>= \x -> return (\o -> o{ optEpubFonts = optEpubFonts o <>
257+ map unpack x })
242258 "epub-chapter-level" ->
243259 parseYAML v >>= \x -> return (\o -> o{ optEpubChapterLevel = x })
244260 "epub-cover-image" ->
@@ -269,7 +285,7 @@ doOpt (k',v) = do
269285 "columns" ->
270286 parseYAML v >>= \x -> return (\o -> o{ optColumns = x })
271287 "filters" ->
272− parseYAML v >>= \x -> return (\o -> o{ optFilters = x })
288+ parseYAML v >>= \x -> return (\o -> o{ optFilters = optFilters o <> x })
273289 "email-obfuscation" ->
274290 parseYAML v >>= \x -> return (\o -> o{ optEmailObfuscation = x })
275291 "identifier-prefix" ->
@@ -316,29 +332,37 @@ doOpt (k',v) = do
316332 "title-prefix" ->
317333 parseYAML v >>= \x -> return (\o -> o{ optTitlePrefix = x })
318334 "css" ->
319− (parseYAML v >>= \x -> return (\o -> o{ optCss = map unpack x }))
335+ (parseYAML v >>= \x -> return (\o -> o{ optCss = optCss o <>
336+ map unpack x }))
320337 <|>
321− (parseYAML v >>= \x -> return (\o -> o{ optCss = [unpack x] }))
338+ (parseYAML v >>= \x -> return (\o -> o{ optCss = optCss o <>
339+ [unpack x] }))
322340 "ipynb-output" ->
323341 parseYAML v >>= \x -> return (\o -> o{ optIpynbOutput = x })
324342 "include-before-body" ->
325343 (parseYAML v >>= \x ->
326− return (\o -> o{ optIncludeBeforeBody = map unpack x }))
344+ return (\o -> o{ optIncludeBeforeBody =
345+ optIncludeBeforeBody o <> map unpack x }))
327346 <|>
328347 (parseYAML v >>= \x ->
329− return (\o -> o{ optIncludeBeforeBody = [unpack x] }))
348+ return (\o -> o{ optIncludeBeforeBody =
349+ optIncludeBeforeBody o <> [unpack x] }))
330350 "include-after-body" ->
331351 (parseYAML v >>= \x ->
332− return (\o -> o{ optIncludeAfterBody = map unpack x }))
352+ return (\o -> o{ optIncludeAfterBody =
353+ optIncludeAfterBody o <> map unpack x }))
333354 <|>
334355 (parseYAML v >>= \x ->
335− return (\o -> o{ optIncludeAfterBody = [unpack x] }))
356+ return (\o -> o{ optIncludeAfterBody =
357+ optIncludeAfterBody o <> [unpack x] }))
336358 "include-in-header" ->
337359 (parseYAML v >>= \x ->
338− return (\o -> o{ optIncludeInHeader = map unpack x }))
360+ return (\o -> o{ optIncludeInHeader =
361+ optIncludeInHeader o <> map unpack x }))
339362 <|>
340363 (parseYAML v >>= \x ->
341− return (\o -> o{ optIncludeInHeader = [unpack x] }))
364+ return (\o -> o{ optIncludeInHeader =
365+ optIncludeInHeader o <> [unpack x] }))
342366 "resource-path" ->
343367 parseYAML v >>= \x ->
344368 return (\o -> o{ optResourcePath = map unpack x })