aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Readers/Docx/Parse.hs
AgeCommit message (Collapse)AuthorFilesLines
2016-10-12Basic support for images in ODT documentsHubert Plociniczak1-16/+4
Highly influenced by the docx support, refactored some code to avoid DRY.
2016-09-02Remove Text.Pandoc.Compat.ExceptJesse Rosenthal1-4/+1
2016-08-28Docx reader: update copyright.Jesse Rosenthal1-2/+2
2016-08-13Docx parser: Use xml convenience functionsJesse Rosenthal1-38/+27
The functions `isElem` and `elemName` (defined in Docx/Util.hs) make the code a lot cleaner than the original XML.Light functions, but they had been used inconsistently. This puts them in wherever applicable.
2016-06-23Docx reader: add simple comment functionality.Jesse Rosenthal1-1/+57
This adds simple track-changes comment parsing to the docx reader. It is turned on with `--track-changes=all`. All comments are converted to inlines, which can list some information. In the future a warning will be added for comments with formatting that seems like it will be excessively denatured. Note that comments can extend across blocks. For that reason there are two spans: `comment-start` and `comment-end`. `comment-start` will contain the comment. `comment-end` will always be empty. The two will be associated by a numeric id.
2016-04-15Docx Reader: parse `moveTo` and `moveFrom`Jesse Rosenthal1-2/+2
`moveTo` and `moveFrom` are track-changes tags that are used when a block of text is moved in the document. We now recognize these tags and treat them the same as `insert` and `delete`, respectively. So, `--track-changes=accept` will show the moved version, while `--track-changes=reject` will show the original version.
2016-03-18Docx reader: Handle alternate contentJesse Rosenthal1-14/+37
Some word functions -- especially graphics -- give various choices for content so there can be backwards compatibility. This follows the largely undocumented feature by working through the choices until we find one that works. Note that we had to split out the processing of child elems of runs into a separate function so we can recurse properly. Any processing of an element *within* a run (other than a plain run) should go into `childElemToRun`.
2016-03-16Docx reader: Don't make numbered heads into lists.Jesse Rosenthal1-6/+8
Word uses list numbering styles to number its headings. We only call something a numbered list if it does not also heave a heading style.
2016-03-12Docx Reader: Add state to the parser, for warningsJesse Rosenthal1-6/+19
In order to be able to collect warnings during parsing, we add a state monad transformer to the D monad. At the moment, this only includes a list of warning strings (nothing currently triggers them, however). We use StateT instead of WriterT to correspond more closely with the warnings behavior in T.P.Parsing.
2015-12-13Docx reader: image attributesmb211-6/+21
2015-11-23Docx Reader: Remove DummyListItem typeJesse Rosenthal1-10/+5
Change 5527465c introduced a `DummyListItem` type in Docx/Parse.hs. In retrospect, this seems like it mixes parsing and iterpretation excessively. What's *really* going on is that we have a list item without and associate level or numeric info. We can decide what to do what that in Docx.hs (treat it like a list paragraph), but the parser shouldn't make that decision. This commit makes what is going on a bit more explicit. `LevelInfo` is now a Maybe value in the `ListItem` type. If it's a Nothing, we treat it as a ListParagraph. If it's a Just, it's a normal list item.
2015-11-18Docx reader: Clean up commented-out functionJesse Rosenthal1-7/+0
A residue of a recent change was left around in the form of a commented-out function. Let's clean that up.
2015-11-18Docx reader: Handle dummy list items.Jesse Rosenthal1-6/+11
These come up when people create a list item and then delete the bullet. It doesn't refer to any real list item, and we used to ignore it. We handle it with a DummyListItem type, which, in Docx.hs, is turned into a normal paragraph with a "ListParagraph" class. If it follow another list item, it is folded as another paragraph into that item. If it doesn't, it's just its own (usually indented, and therefore block-quoted) paragraph.
2015-11-14Follow relationships correctly in foot/endnotes.Jesse Rosenthal1-27/+40
There are separate relationship (link) files for foot and endnotes. These had previously been grouped together which led to links not working correctly in notes. This should finally fix that.
2015-11-09Revert "Use -XNoImplicitPrelude and 'import Prelude' explicitly."John MacFarlane1-1/+0
This reverts commit c423dbb5a34c2d1195020e0f0ca3aae883d0749b.
2015-11-08Use -XNoImplicitPrelude and 'import Prelude' explicitly.John MacFarlane1-0/+1
This is needed for ghci to work with pandoc, given that we now use a custom prelude. Closes #2503.
2015-10-14Use custom Prelude to avoid compiler warnings.John MacFarlane1-1/+1
- The (non-exported) prelude is in prelude/Prelude.hs. - It exports Monoid and Applicative, like base 4.8 prelude, but works with older base versions. - It exports (<>) for mappend. - It hides 'catch' on older base versions. This allows us to remove many imports of Data.Monoid and Control.Applicative, and remove Text.Pandoc.Compat.Monoid. It should allow us to use -Wall again for ghc 7.10.
2015-10-04Docx Reader: Parse soft, no-break hyphen elementsOphir Lifshitz1-1/+3
2015-03-01Started moving StyleMap out of writer codeNikolay Yakimov1-20/+6
2015-02-19Docx reader: Allow numbering in the style file.Jesse Rosenthal1-21/+33
This allows inherited styles with numbering (lists). It works like this: 1. check to see if the style has numbering info. 2. if the paragraph has explicit numbering info in the doc that takes precedence. 3. if not we use the numbering info in the style, if it's there. 4. otherwise normal paragraph. We no longer assume it's not a numbering element if it doesn't have an explicit level---we just set that level to 1. (In the style files, the examples I've seen don't have that explicit level.)
2015-01-21Docx: Parse images in deprecated vml format.Jesse Rosenthal1-0/+10
Some older versions of word use vml (vector markup language) and put their images in a "v:imagedata" tag inside a "w:pict". We read those as we read the more modern "blip" inside a "w:drawing". Note that this does not mean the reader knows anything about vml. It just looks for a `v:imagdata`. It's possible that, with more complicated uses of images in vml, it won't do the right thing.
2014-11-13Account for external link URLs with anchorsCaleb McDaniel1-7/+10
Previously, if a URL had an anchor, such as http://johnmacfarlane.net/pandoc/README.html#synopsis the reader would incorrectly identify it as an internal link and return "#synopsis" for the link in output.
2014-10-25Docx reader: fix for Issue #1692 (i18n styles)Nikolay Yakimov1-29/+124
This patch builds paragraph styles tree, then checks if paragraph has style.styleId or style/name.val matching predetermined patterns. Works with "Heading#" (name.val="heading #") for headings and "Quote"|"BlockQuote"|"BlockQuotation" (name.val="Quote"|"Block Text") for block quotes.
2014-09-02Docx reader: Fix window path for image lookup.Jesse Rosenthal1-1/+1
Don't use os-sensitive "combine", since we always want the paths in our zip-archive to use forward-slashes.
2014-08-17Docx Parse: build a bottom-up style tree.Jesse Rosenthal1-6/+31
Two points here: (1) We're going bottom-up, from styles not based on anything, to avoid circular dependencies or any other sort of maliciousness/incompetence. And (2) each style points to its parent. That way, we don't need the whole tree to pass a style over to Docx.hs
2014-08-17Alias string and runStyle to CharStyle type.Jesse Rosenthal1-7/+10
2014-08-17Docx Style parser: Basic one now just takes a parent style.Jesse Rosenthal1-13/+15
This will make it easier to build the style map from the bottom up (to avoid any infinite references).
2014-08-17Parser: Framework for parsing styles.Jesse Rosenthal1-11/+44
We want to be able to read user-defined styles. Eventually we'll be able to figure out styles in terms of inheritance as well. The actual cascading will happen in the docx reader.
2014-08-17Docx reader: Change behavior of Super/SubscriptJesse Rosenthal1-12/+13
In docx, super- and subscript are attributes of Vertalign. It makes more sense to follow this, and have different possible values of Vertalign in runStyle. This is mainly a preparatory step for real style parsing, since it can distinguish between vertical align being explicitly turned off and it not being set. In addition, it makes parsing a bit clearer, and makes sure we don't do docx-impossible things like being simultaneously super and sub.
2014-08-12Docx reader: accept explicit "Italic" and "Bold" rStyles.Jesse Rosenthal1-13/+13
Note that "Italic" can be on, and, from the last commit, `<w:i>` can be present, but be turned off. In that case, the turned-off tag takes precedence. So, we have to distinguish between something being off and something not being there. Hence, isItalic, isBold, isStrike, and isSmallCaps have become Maybes.
2014-08-12Docx Reader: Fix font style parsing.Jesse Rosenthal1-12/+27
Before we just checked for the existence of a tag. Now, we make sure to check for its on/off value.
2014-08-11Add dropCap to paragraph style.Jesse Rosenthal1-2/+12
2014-08-11Docx Parse: Improved font recognition when specified in rFonts elementMatthew Pickering1-8/+27
2014-08-10Removed OMath module, depend on texmath >= 0.8.John MacFarlane1-1/+1
2014-08-09Docx Parse: Recognises code points in sym elements which are in the private ↵Matthew Pickering1-1/+4
range
2014-08-09Docx Reader: Added recognition of sym element in paragraphsMatthew Pickering1-0/+19
2014-08-08OMath parser: Change signature of exported function.Jesse Rosenthal1-3/+7
This changes the signature of the exported `readOMML` to `String -> Either String [Exp]`, so it can now, in theory, be slotted into TeXMath. It doesn't have any real error reporting yet, but that might make more sense once I put it in a branch, and understand how it works in the other readers. It also now reads strings that parse to either oMath or oMathPara elements. Note that the distinction is lost in the output. It's up to the caller to remember the display type.
2014-08-08OMath: Finish initial cleanup.Jesse Rosenthal1-14/+4
This gets rid of commented-out functions, cleans up whitespace errors, and exports and imports the correct functions.
2014-08-08OMath: Remove NamespacesJesse Rosenthal1-2/+2
We still need to test against prefixes, but this is only going to look at oMath fragments, so we're not going to be worried about looking up the real namespace.
2014-08-07Merge pull request #1494 from jkr/math-moduleJohn MacFarlane1-366/+7
Math module
2014-08-07Docx reader: Handle inline drawings.Jesse Rosenthal1-3/+15
Previous drawings that were under some other toplevel run (i.e., a hyperlink) wouldn't be properly handled. This should fix that.
2014-08-07Docx reader: Split math out into math module.Jesse Rosenthal1-366/+7
Could use some cleanup, but this is the first step for getting an OMML reader into TeXMath.
2014-08-06Add a note on how `mapD` works.Jesse Rosenthal1-0/+3
2014-08-06Docx reader: Use TeXMath to write mathJesse Rosenthal1-22/+125
The new version of TeXMath can translate from its type system into LaTeX. So instead of writing the LaTeX ourself, we write to the TeXMath `Exp` type, and let TeXMath do the rest.
2014-08-01Docx Parser: Produce endnotes.Jesse Rosenthal1-2/+2
The parser had been changing footnotes and endnotes into footnotes. This isn't a problem, because pandoc collapses them, but the parser should maintain as much of the docx structure as is collapsed, and let the toplevel reader worry about how to translate it into Pandoc. (This would be an issue when, as is planned, the docx parser spins off into its own module.) The output is the same, so no test change is required.
2014-07-30Docx reader: Make docx reader put image data in MediaBag.Jesse Rosenthal1-5/+5
Image data will not be put in a media bag map, which will be output along with the pandoc output.
2014-07-12Removed space at ends of lines in source.John MacFarlane1-24/+24
2014-07-12Docx Reader: Add a compatibility layer for Except.Jesse Rosenthal1-3/+3
mtl switched from ErrorT to ExceptT, but we're not sure which mtl we'll be dealing with. This should make errors work with both. The main difference (beside the name of the module and the monad transformer) is that Except doesn't require an instance of an Error Typeclass. So we define that for compatability. When we switch to a later mtl, using Control.Monad.Exception, we can just erase the instance declaration, and all should work fine.
2014-07-12Docx Reader: A nicer Docx type.Jesse Rosenthal1-685/+670
This modifies the Docx type in the parser to avoid all the extra files (Notes, numbering, etc). A reader monad keeps track of these, and applies them at the end. The reader monad is stacked with ErrorT to enable better error-handling than the old Maybes. (Note that the better error handling isn't really there yet, but it is now possible.) One long-term goal of these changes is to make it easier to write the Docx type. This should make it easier to develop a standalone docx package in the future.
2014-07-02Docx Reader: Parse omml equations.Jesse Rosenthal1-8/+336