aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Readers/Docx.hs
AgeCommit message (Collapse)AuthorFilesLines
2014-08-12Docx reader: accept explicit "Italic" and "Bold" rStyles.Jesse Rosenthal1-5/+18
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: Add "BlockQuotation" to divs list.Jesse Rosenthal1-1/+1
2014-08-12Docx reader: move combining logic to ReducibleJesse Rosenthal1-3/+1
Introduces a new function in Reducibles, concatR. The idea is that if we have two list of Reducibles (blocks or inlines), we can combine them and just perform the reduction on the joining parts (the last element of the first list, the first element of the second list). This is useful in cases where the two lists are already reduced, and we're only worried about the joining elements. This actually improves the efficiency a bit further, because concatR can be smart about empty lists.
2014-08-12Docx reader: Make dropcap combining more efficient.Jesse Rosenthal1-1/+3
Before, we had to run reduceList on the whole combined paragraph, which was redundant, and could take some time for long paragraphs. We only need to combine the drop cap with the first inline of the next paragraph.
2014-08-11Docx reader: combine inlines properly in dropcaps.Jesse Rosenthal1-1/+1
Make sure that adjacent inlines are combined properly in dropcaps. This updates the test results as well.
2014-08-11Docx reader: Use dropcap state.Jesse Rosenthal1-9/+17
If we get to a dropcap, we keep hold the inlines until the next paragraph, and combine it there.
2014-08-08OMath parser: Change signature of exported function.Jesse Rosenthal1-5/+4
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-07Merge pull request #1494 from jkr/math-moduleJohn MacFarlane1-219/+27
Math module
2014-08-07Docx reader: Handle inline drawings.Jesse Rosenthal1-0/+7
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-194/+7
Could use some cleanup, but this is the first step for getting an OMML reader into TeXMath.
2014-08-06Docx Reader: Added Default instances and removed withDStateMatthew Pickering1-28/+23
Signed-off-by: Jesse Rosenthal <jrosenthal@jhu.edu>
2014-08-06Get rid of unused docx variable.Jesse Rosenthal1-5/+3
Since changing the Docx type, this is no longer necessary. Thanks to Matthew Pickering for picking up on this.
2014-08-06Docx reader: remove now-unnecessary state variable.Jesse Rosenthal1-4/+2
This also introduces a `defaultDState` value.
2014-08-06Docx reader: Use TeXMath to write mathJesse Rosenthal1-155/+190
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-04Use `stripPrefix` where appropriate.Artyom Kazak1-7/+7
2014-07-31Docx Reader: Single underlines are "emph"Jesse Rosenthal1-1/+2
All other underlines are ignored.
2014-07-31New module, Text.Pandoc.MediaBag.John MacFarlane1-1/+3
Moved `MediaBag` definition and functions from Shared: `lookupMedia`, `mediaDirectory`, `insertMedia`, `extractMediaBag`. Removed `emptyMediaBag`; use `mempty` instead, since `MediaBag` is a Monoid.
2014-07-31Made MediaBag a newtype, and added mime type information to media.John MacFarlane1-2/+2
Shared now exports functions for interacting with a MediaBag: - `emptyMediaBag` - `lookuMedia` - `insertMedia` - `mediaDirectory` - `extractMediaBag`
2014-07-30Docx reader: Make docx reader put image data in MediaBag.Jesse Rosenthal1-32/+25
Image data will not be put in a media bag map, which will be output along with the pandoc output.
2014-07-29Docx reader: Make metavalues out of styled paragraphs.Jesse Rosenthal1-11/+73
This will make paragraphs styled with `Author`, `Title`, `Subtitle`, `Date`, and `Abstract` into pandoc metavalues, rather than text. The implementation only takes those elements from the beginning of the document (ignoring empty paragraphs). Multiple paragraphs in the `Author` style will be made into a metaList, one paragraph per item. Hard linebreaks (shift-return) in the paragraph will be maintained, and can be used for institution, email, etc.
2014-07-16Docx Reader: Fix hdr auto-id when already auto-id.Jesse Rosenthal1-11/+19
If header anchors (bookmarks in a header paragraph) already have an auto-id, which will happen if they're generated by pandoc, we don't want to rename it twice, and thus end up with an unnecessary number at the end. So we add a state value to check if we're in a header. If we are, we don't rename the bookmark -- wait until we rename it in our header handling.
2014-07-16Docx Reader: Change state handling.Jesse Rosenthal1-16/+12
We don't need `updateDState` -- the built-in `modify` works just fine. And we redefine `withDState` to use modify.
2014-07-12Removed space at ends of lines in source.John MacFarlane1-9/+9
2014-07-12Docx Reader: A nicer Docx type.Jesse Rosenthal1-66/+42
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: Write LaTeX based on equations in word.Jesse Rosenthal1-4/+172
This is a first stab at writing out equations in LaTeX based on omml equations in Word. There are some glitches: unicode chars not known to LaTeX are silently skipped, and functions (such as `\oiiint`) not in the standard LaTeX packages are inserted, which can lead to pdf compilation errors (depending, of course, on your preamble). Adding, for example, `\usepackage[charter]{mathdesign}` to the preamble will allow you to use most of the more esoteric functions.
2014-06-30Docx reader: clean up parStyle processing.Jesse Rosenthal1-45/+36
This gets rid of `divAttrToContainers`: an internal convenience function which had become pretty inconvenient. Rather than converting classes and indentations to string lists and back, we deal with the `pPr` attribute directly.
2014-06-29Merge pull request #1386 from jkr/hanging_indentJohn MacFarlane1-10/+25
Fix hanging indent behavior
2014-06-29Docx reader: Make use of new ParIndentation info.Jesse Rosenthal1-10/+25
Here, when hanging indents are greater than or equal to left indents, we don't set it to block quote. Such indents are frequently used in academic bibliographies. (Thanks to Caleb McDaniel.)
2014-06-29Docx Reader: Update state properlyJesse Rosenthal1-3/+8
Previously, a fresh state was created for the purpose of updating. In the future, when there is more than one field in the state, this obviously won't work.
2014-06-28Docx Reader: All headers get auto id.Jesse Rosenthal1-1/+10
Previously, only those with an anchor got an auto id. Now, all do, which puts it in line with pandoc's markdown extension.
2014-06-28Docx Reader: Introduce link rewriting.Jesse Rosenthal1-7/+30
2014-06-28make makeHeaderAnchors make an auto idJesse Rosenthal1-3/+7
Record relationship between original id and auto id, so we can fix links after.
2014-06-28Rewrote header generation.Jesse Rosenthal1-25/+25
In preparation for auto ids.
2014-06-28Docx Reader: Simplify makeHeaderAnchorsJesse Rosenthal1-8/+5
Using pattern guard, in preparation for doing some more complicated stuff with it (recording header anchors, so we can change them to auto ids.)
2014-06-28Docx Reader: Clean up guardsJesse Rosenthal1-9/+9
Use PatternGuards to get rid of need for `isJust`, `fromJust` altogether.
2014-06-28Docx rdr: Avoid mapping makeHeaderAnchors globallyJesse Rosenthal1-4/+4
It only applies to headers, so we can just apply it when we make a header.
2014-06-28Move Docx reader to DocxContext monadJesse Rosenthal1-107/+140
This is a ReaderT State stack, which keeps track of some environment info, such as the options and the docx doc. The state will come in handy in the future, for a couple of planned features (rewriting the section anchors as auto_idents, and hopefully smart-quoting).
2014-06-25Docx reader: Make use of track-changes option.Jesse Rosenthal1-3/+16
2014-06-25Docx reader: Add rudimentary track changes support.Jesse Rosenthal1-0/+3
This will only read the insertions, and ignore the deletions.
2014-06-24Docx reader: Ignore zero (or negative) indentJesse Rosenthal1-5/+8
If a block has an indentation less than or equal to zero, it should not be treated as a block quote.
2014-06-24Docx reader: remove T.P.Generic import.Jesse Rosenthal1-1/+0
This marks the removal of the final tree-walk in the code. (Though there is still one in the Lists module.)
2014-06-24Docx reader: pass definition test.Jesse Rosenthal1-8/+13
This commit also fixes a problem with the previous code pushes, which wouldn't allow code blocks to share a div.
2014-06-24Docx reader: pass code tests.Jesse Rosenthal1-33/+47
2014-06-23Use Reducible in docx reader.Jesse Rosenthal1-273/+111
This cleans up them implementation, and cuts down on tree-walking. Anecdotally, I've seen about a 3-fold speedup.
2014-06-22Docx reader: Fix spacing in formatting.Jesse Rosenthal1-1/+1
The normalizing tests revealed a problem with unformatted spaces, brought about by `spanTrim`. This fixes by not trimming the spaces out of spans until they are in their final form.
2014-06-22Implement new normalization.Jesse Rosenthal1-11/+57
There were some problems with the old str normalization. This fixes those problems. Also, since it drills down on its own, it only needs to be mapped over the blocks, not walked over the tree.
2014-06-20Make strNormalize go bottomUp.Jesse Rosenthal1-5/+5
This was how it used to be before it was folded into blockNormalize.
2014-06-20Docx reader: Add a comment explaining strNormalizeJesse Rosenthal1-0/+4
`normalize` from Text.Pandoc.Shared is more general. In tests, though, it more than doubles the run time. `strNormalize` does less, but it does what we need. This comment is added for future maintainability.
2014-06-20Docx Reader: Normalize DefinitionListsJesse Rosenthal1-0/+2
Previously DefinitionList had been left out of `blockNormalize`. Now it is included.
2014-06-20Docx reader: simplify blockNormalizeJesse Rosenthal1-10/+8
Use a function `stripSpaces`, instead of recursion. Makes it a bit easier to read and mantain, and simplify normalizing DefinitionList, which was left out the first time.