aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Writers/FB2.hs
AgeCommit message (Collapse)AuthorFilesLines
2019-09-08Replace Element and makeHierarchical with makeSections.John MacFarlane1-17/+16
Text.Pandoc.Shared: + Remove `Element` type [API change] + Remove `makeHierarchicalize` [API change] + Add `makeSections` [API change] + Export `deLink` [API change] Now that we have Divs, we can use them to represent the structure of sections, and we don't need a special Element type. `makeSections` reorganizes a block list, adding Divs with class `section` around sections, and adding numbering if needed. This change also fixes some longstanding issues recognizing section structure when the document contains Divs. Closes #3057, see also #997. All writers have been changed to use `makeSections`. Note that in the process we have reverted the change c1d058aeb1c6a331a2cc22786ffaab17f7118ccd made in response to #5168, which I'm not completely sure was a good idea. Lua modules have also been adjusted accordingly. Existing lua filters that use `hierarchicalize` will need to be rewritten to use `make_sections`.
2019-05-15FB2 writer: do not wrap note references into <sup> and bracketsAlexander Krotov1-1/+1
Existing FB2 readers, such as FBReader, already display links with type="note" as a superscript.
2019-05-15hlint FB2 writerAlexander Krotov1-27/+22
2019-05-04FB2 writer: use genre metadata field (#5478)John1-1/+4
2019-03-01Remove license boilerplate.John MacFarlane1-20/+0
The haddock module header contains essentially the same information, so the boilerplate is redundant and just one more thing to get out of sync.
2019-02-22Add section identifiers support for FB2 writer (#5315)John1-35/+28
Closes #5229.
2019-02-04Add missing copyright notices and remove license boilerplate (#5112)Albert Krewinkel1-2/+2
Quite a few modules were missing copyright notices. This commit adds copyright notices everywhere via haddock module headers. The old license boilerplate comment is redundant with this and has been removed. Update copyright years to 2019. Closes #4592.
2018-09-04hlint some writersAlexander Krotov1-1/+1
2018-08-24FB2 writer: put coverpage element between title and date...John MacFarlane1-2/+3
...rather than in document-info element. Closes #4854.
2018-06-12FB2 writer: convert Plain to Para in annotationAlexander Krotov1-1/+6
Address #2424
2018-06-12FB2 writer: fix order of items in title-infoAlexander Krotov1-1/+1
Address issue #2424
2018-04-26Merge branch 'fb2-hrblankline' of https://github.com/labdsf/pandoc into ↵John MacFarlane1-7/+4
labdsf-fb2-hrblankline
2018-04-19FB2 writer: convert metadata value "abstract" to book annotationAlexander Krotov1-1/+4
2018-04-07FB2 writer: output links inline instead of producing notesAlexander Krotov1-19/+2
Previously all links were turned into footnotes with unclickable URLs inside.
2018-04-05FB2 writer: represent HorizontalRule as empty lineAlexander Krotov1-7/+4
HorizontalRule corresponds to <hr> element in the default output format, HTML. Current HTML standard defines <hr> element as "paragraph-level thematic break". In typography it is often represented by extra space or centered asterism ("⁂"), but since FB2 does not support text centering, empty line (similar to extra space) is the only solution. Line breaks, on the other hand, don't generate <empty-line /> anymore. Previously line breaks generated <empty-line /> element inside paragraph, which is not allowed. So, this commit addresses issue #2424 ("FB2 produced by pandoc doesn't validate"). FB2 does not have a way to represent line breaks inside paragraphs. They are replaced with LF character, which is not rendered by FB2 readers, but at least preserves some information.
2018-04-04FB2 writer: allow emphasis and notes in titlesAlexander Krotov1-6/+4
Only <p> and <empty-line /> are allowed in titles, but <p> has the same type as an ordinary paragraphs. Therefore, there is no need to remove emphasis from titles. Also, don't intersperse paragraph with empty lines.
2018-03-18Use NoImplicitPrelude and explicitly import Prelude.John MacFarlane1-0/+2
This seems to be necessary if we are to use our custom Prelude with ghci. Closes #4464.
2018-01-19hlint code improvements.John MacFarlane1-2/+1
2018-01-05Update copyright notices to include 2018Albert Krewinkel1-2/+2
2017-12-28FB2 writer: add cover image specified by "cover-image" metaAlexander Krotov1-1/+10
Fixes #4195
2017-11-01hlintAlexander Krotov1-1/+1
2017-11-01FB2 writer: Add "unrecognised" genre to <title-info>Alexander Krotov1-1/+2
XML schema requires at least one genre.
2017-11-01FB2 writer: remove <annotation> from <body>Alexander Krotov1-11/+2
<annotation> is not allowed inside <body> according to FictionBook2 XML schema. Besides that, the same information is already placed inside <description>. Related bug: #2424
2017-11-01Merge pull request #4008 from labdsf/fb2-bulletsJohn MacFarlane1-8/+4
FB2 writer: make bullet lists consistent with ordered lists
2017-10-31FB2 writer: write blocks outside of <p> in definitionsAlexander Krotov1-18/+2
2017-10-31FB2 writer: make bullet lists consistent with ordered listsAlexander Krotov1-8/+4
Previously bullet lists interacted in odd way with ordered lists. For example, bullet lists nested in ordered list had incorrect indentation. Besides that, indentation with spaces is not rendered by FBReader and fbless. To avoid this problem, bullet lists are indented by appending bullets to marker just the same way it is done for ordered lists.
2017-10-29hlint suggestions.John MacFarlane1-4/+4
2017-10-29Write FB2 lists without nesting blocks inside <p> (#4004)Alexander1-16/+32
According to FB2 XML schema <empty-line /> cannot be placed inside <p>. Linux FBReader can't display such paragraphs, e.g. any "loose" lists produced by pandoc prior to this commit. Besides that, FB2 writer placed <p> inside <p> when writing nested lists, this commit fixes the bug. Also this commit removes leading non-breaking space from ordered lists for consistency with bullet lists. Definition lists are not affected at all.
2017-10-27Automatic reformating by stylish-haskell.John MacFarlane1-5/+4
2017-10-11FB2 Writer: format LineBlock as poemAlexander Krotov1-2/+6
Previously writer produced one paragraph with <empty-line/> elements, which are not allowed inside <p> according to FB2 schema.
2017-10-09FB2 writer: replace concatMap with cMapAlexander Krotov1-10/+10
2017-10-09hlint FB2 writerAlexander Krotov1-50/+50
2017-09-30Removed writerSourceURL, add source URL to common state.John MacFarlane1-1/+1
Removed `writerSourceURL` from `WriterOptions` (API change). Added `stSourceURL` to `CommonState`. It is set automatically by `setInputFiles`. Text.Pandoc.Class now exports `setInputFiles`, `setOutputFile`. The type of `getInputFiles` has changed; it now returns `[FilePath]` instead of `Maybe [FilePath]`. Functions in Class that formerly took the source URL as a parameter now have one fewer parameter (`fetchItem`, `downloadOrRead`, `setMediaResource`, `fillMediaBag`). Removed `WriterOptions` parameter from `makeSelfContained` in `SelfContained`.
2017-06-20Removed redundant import.John MacFarlane1-1/+0
2017-06-20FB2 writer: don't fail with an error on interior headers (e.g. in list).John MacFarlane1-3/+5
Instead, omit them with an INFO message. Closes #3750.
2017-06-17Use Control.Monad.State.Strict throughout.John MacFarlane1-2/+2
This gives 20-30% speedup and reduction of memory usage in most of the writers.
2017-06-11Switched Writer types to use Text.John MacFarlane1-3/+4
* XML.toEntities: changed type to Text -> Text. * Shared.tabFilter -- fixed so it strips out CRs as before. * Modified writers to take Text. * Updated tests, benchmarks, trypandoc. [API change] Closes #3731.
2017-05-23Shared: Provide custom isURI that rejects unknown schemes [isURI]Albert Krewinkel1-2/+1
We also export the set of known `schemes`. The new function replaces the function of the same name from `Network.URI`, as the latter did not check whether a scheme is well-known. E.g. MediaWiki wikis frequently feature pages with names like `User:John`. These links were interpreted as URIs, thus turning internal links into global links. This is prevented by also checking whether the scheme of a URI is frequently used (i.e. is IANA registered or an otherwise well-known scheme). Fixes: #2713 Update set of well-known URIs from IANA list All official IANA schemes (as of 2017-05-22) are included in the set of known schemes. The four non-official schemes doi, isbn, javascript, and pmid are kept.
2017-05-13Update dates in copyright noticesAlbert Krewinkel1-2/+2
This follows the suggestions given by the FSF for GPL licensed software. <https://www.gnu.org/prep/maintain/html_node/Copyright-Notices.html>
2017-05-13Add haddock module description to FB2 writerAlbert Krewinkel1-1/+11
Copyright, maintainer etc. were missing in haddock docs for this module.
2017-05-02FB2 writer: Add support for "lang" metadata (#3625)Alexander Krotov1-2/+7
2017-03-04Stylish-haskell automatic formatting changes.John MacFarlane1-43/+43
2017-02-17FB2 writer: don't render RawBlock as code.John MacFarlane1-4/+7
2017-02-11Use new warnings throughout the code base.John MacFarlane1-6/+4
2017-01-25Revert "Added page breaks into Pandoc."John MacFarlane1-2/+0
This reverts commit f02a12aff638fa2339192231b8f601bffdfe3e14.
2017-01-25Text.Pandoc.Shared: Removed fetchItem, fetchItem'.John MacFarlane1-5/+13
Made changes where these are used, so that the version of fetchItem from PandocMonad can be used instead.
2017-01-25Fix rebasing errors.Jesse Rosenthal1-1/+1
2017-01-25Unify Errors.Jesse Rosenthal1-1/+2
2017-01-25Implement Errors in PandocMonadJesse Rosenthal1-2/+3
Errors can be thrown purely with `throwError`. At the moment there are only three kinds of errors: 1. PandocFileReadError FilePath (for problems reading a file from the filesystem) 2. PandocShouldNeverHappenError String (for stuff that should never happen but we need to pattern-match anyway) 3. PandocSomeError String (a grab bag of everything else) Of course, we need to subdivide the third item in this list.
2017-01-25Convert writers to use PandocMonad typeclass.Jesse Rosenthal1-30/+27
Instead of Free Monad with runIO