Comparing changes
Open a pull request
jgm |
stack.yaml: Use pandoc-types commit with SoftBreak.
|
83c56bd
|
||
jgm |
Markdown reader: parse soft break as SoftBreak.
|
63d875c
|
jgm |
Implemented SoftBreak and new `--wrap` option.
Added threefold wrapping option. * Command line option: deprecated `--no-wrap`, added `--wrap=[auto|none|preserve]` * Added WrapOption, exported from Text.Pandoc.Options * Changed type of writerWrapText in WriterOptions from Bool to WrapOption. * Modified Text.Pandoc.Shared functions for SoftBreak. * Supported SoftBreak in writers. * Updated tests. * Updated README. Closes #1701. |
536b6bf
|
||
jgm |
Removed deprecated options `--offline` and `--html5`.
These have been deprecated forever. |
b747243
|
||
jgm |
FB2 writer: support SoftBreak.
This was omitted earlier. |
1b0e099
|
||
jgm |
Fixed cite key parsing regression.
We were capturing final colons as in [@foo: bar]; the citation id was being parsed as "@foo:". Closes jgm/pandoc-citeproc#201. |
28a2f4c
|
||
jgm |
Restore no wrapping of XML in Docx, ODT.
It's possible that wrapping causes problems; safer to turn it off. |
47cc5ad
|
||
jgm |
Updated pandoc-types commit in stack.yaml
|
d9c2f50
|
||
jgm |
Modified readers to emit SoftBreak when appropriate.
|
af7e782
|
||
jgm |
Test fixes.
|
d6a4c70
|
||
jgm |
stack.yaml - use latest pandoc-types.
|
9ce7029
|
jgm |
Fixed tests.
|
202d848
|
||
jgm |
Update to use latest releases of highlighting-kate and texmath.
|
60d383e
|
||
jgm |
Implemented `east_asian_line_breaks` extension.
Text.Pandoc.Options: Added `Ext_east_asian_line_breaks` constructor to `Extension` (API change). This extension is like `ignore_line_breaks`, but smarter -- it only ignores line breaks between two East Asian wide characters. This makes it better suited for writing with a mix of East Asian and non-East Asian scripts. Closes #2586. |
44120ea
|
||
jgm |
AsciiDoc writers: Add anchors on Div elements.
This partially addresses jgm/pandoc-citeproc#143. It does not use the native asciidoc syntax for citations, but it does get the links to individual citations working. |
3e079a2
|
||
jgm |
AsciiDoc writer: support anchors in spans with id elements.
|
e4b3da6
|
||
mb21 |
RST reader: image attributes
|
30644b2
|
||
mb21 |
new function to extract multiple properties at once in CSS.hs
and use it in Textile reader |
2060f5f
|
||
mb21 |
Docx reader: image attributes
|
37931cb
|
||
mb21 |
ODT/OpenDocument writer: improved image attributes
- support for percentage widths/heights - use Attr instead of title to get dimensions from ODT walker to writeOpenDocument |
df68f25
|
jgm |
Use lts-3.18 resolver to avoid Windows build problems.
|
6c8a930
|
||
jgm |
Use lts-3.18 in stack.yamls.
|
36c589a
|
||
jgm |
Use posix path separators in ICML link URIs.
Closes #2589. |
90b8024
|
||
jgm |
Fixed ICML image syntax for local files.
`file:filename` rather than `file://./filename`. I think this is right; it matches what we had before with people actually using the ICML writer, and seems to match examples in the spec. I don't have a copy of InDesign I can test on, though. @DigitalPublishingToolkit and @mb21, can you have a look? |
a924a3f
|
||
jgm |
Merge pull request #2570 from mb21/rst-reader-imgattrs
Image attributes |
f3133a8
|
||
jgm |
ICML writer: removed redundant import.
|
9f43acb
|
||
jgm |
Updated changelog.
|
3573d99
|
||
jgm |
Removed deprecated --strict option entirely.
|
678e7da
|
||
jgm |
Removed "compatibility mode" when called as hsmarkdown.
|
c16efea
|
||
jgm |
Factored out convertWithOpts
|
a6d810a
|
jgm |
Fixed benchmark for new API.
|
3e005aa
|
||
jgm |
Reorganized changelog.
|
7c22959
|
mb21 |
ICML writer: added figure handling, closes #2590
|
f3a9bda
|
||
jgm |
Merge pull request #2591 from mb21/ICML-figures
ICML writer: added figure handling, closes #2590 |
2af6bf3
|
||
jgm |
Fixed typos in changelog.
Thanks to Ophir Lifshitz. |
62910d4
|
||
jgm |
Updated changelog.
|
d925cd6
|
mb21 |
ICML writer: intersperse line breaks
instead of appending them to every ParagraphStyleRange closes #2501 |
1ead1f3
|
||
adunning |
Document change to subtitle in LaTeX.
One could also tell users to add this to header-includes if `subtitle` is desired for `article` and so forth, but I will leave it out for now for the sake of simplicity: ```tex \providecommand{\subtitle}[1]{% \usepackage{titling} \posttitle{% \par\large#1\end{center}} } ``` |
eb8a758
|
jgm |
Merge pull request #2594 from adunning/patch-1
Document change to subtitle in LaTeX. |
e670435
|
||
jgm |
Merge pull request #2593 from mb21/icml-linebreaks
ICML writer: intersperse line breaks |
efb34a1
|
||
jgm |
Explain how to get `subtitle` to work with latex article etc.
Thanks to Andrew Dunning. |
ad3ef55
|
||
jgm |
Markdown reader: fixed parsing bug with macros.
Previously macro definitions in indented code blocks were being parsed as macro definitions, not code. |
e20f433
|
||
jgm |
README: reflowed to avoid overly long lines.
|
ce21b2c
|
||
jgm |
Merge branch 'master' of https://github.com/AndreasLoow/pandoc into A…
…ndreasLoow-master |
4c103f6
|
||
jgm |
Merge branch 'AndreasLoow-master'
|
2998618
|
jgm |
Fix language code for Czech (cs not cz)
Closes #2597. |
770641f
|
||
jgm |
Added needed import of FromJSON.
Fixes build failure. |
9333814
|
||
jgm |
LaTeX/Beamer template changes (Thomas Hodgson):
* Added `thanks` variable * Use `parskip.sty` when `indent` isn't set (fall back to using `setlength` as before if `parskip.sty` isn't available). * Use `biblio-style` with biblatex. * Added `biblatexoptions` variable. * Added `section-titles` variable (defaults to true) to enable/suppress section title pages in beamer slide shows. * Moved beamer themes after fonts, so that themes can change fonts. (Previously the fonts set were being clobbered by lmodern.sty.) |
28b2d86
|
||
jgm |
Beamer: Moved header-includes before setting of title etc.
This matches a change already made in the LaTeX template (Thomas Hodgson). Closes jgm/pandoc-templates#168 |
6924937
|
||
twsh |
Removed hyphen
|
cab20a9
|
||
jgm |
Updated changelog
|
5c4e247
|
||
jgm |
Merge pull request #2598 from twsh/biblatexoptions
Removed hyphen |
32d2789
|
jgm |
Added preliminary support for PDF creation via wkhtmltopdf.
To use this: pandoc -t html5 -o result.pdf (and add `--mathjax` if you have math.) |
0a768f1
|
||
jgm |
pdf via wkhtmltopdf: take `title` and `page-size` from metadata.
Adjusted default `page-size` to `letter`, to match current LaTeX template. |
0596b65
|
||
jgm |
Allow setting margins from metadata variables for wkhtmltopdf.
Variables margin-top, margin-bottom, margin-left, margin-right. Setting them with css inside @page doesn't seem to work, at least with the released wkhtmltopdf. |
8b8bdca
|
||
jgm |
Improved treatment of margins in wkhtmltopdf.
|
46e38d0
|
||
jgm |
LaTeX reader: allow blank space between braced arguments of commands.
For example \foo {bar} {baz} Closes #2592. |
35e0544
|
||
jgm |
LaTeX writer: create defaults for geometry using margin-left etc.
If `geometry` has no value, but `margin-left`, `margin-right`, `margin-top`, and/or `-margin-bottom` are given, a default value for `geometry` is created from these. Note that these variables already affect PDF production via HTML5 with wkhtmltopdf. |
f9202f5
|
||
jgm |
ConTeXt writer: set default layout based on margin-left, etc.
This sets up `\setuplayout` based on the variables `margin-left`, `margin-right`, `margin-bottom`, and `margin-top`, if no layout is given. |
2973450
|
||
jgm |
Updated README with margin and papersize variables.
|
3861df5
|
jgm |
Added 'paper' after $papersize$ variable in latex template.
Thus you can say `papersize: a4` and the latex will contain `a4paper`. This change may break some existing workflows; if you currently specify `a4paper`, you'll get `a4paperpaper` which is meaningless. However, the change seems worth it, as it will make the `papersize` variable work uniformly across ConTeXt, LaTeX, and html->pdf via wkhtmltopdf. See 3861df5 62d#commitcomment-15135193 |
59d6f02
|
jgm |
Use cmark 0.5.
Closes #2605. |
b27783e
|
||
jgm |
stack.yaml - use simpler extra-deps field.
|
a2fa460
|
jgm |
Fixed debpkg target.
|
90a2df3
|
||
jgm |
Textile reader: don't allow block HTML tags in inline contexts.
The reader previously did allow this, following redcloth, which happily parses Html blocks can be <div>inlined</div> as well. as <p>Html blocks can be <div>inlined</div> as well.</p> This is invalid HTML, and this kind of thing can lead to parsing problems (stack overflows) as well. So this commit undoes this behavior. The above sample now produces; <p>Html blocks can be</p> <div> <p>inlined</p> </div> <p>as well.</p> |
97c9691
|
jgm |
Updated binary package stack.yamls to ensure pandoc-citeproc...
is built with embed_data_files. This fixes a problem with the original 1.16 binary packages. |
1cee481
|
||
jgm |
windows/stack.yaml - use local pandoc-citeproc.
I'm not sure why this is needed, but it is. Otherwise the build fails. |
a6d20b3
|
jgm |
Fixed v1.16 reversion with --latex-engine.
In 1.16 --latex-engine raises an error if a full path is given. This commit fixes this reversion. Closes #2618. |
4990350
|
||
jgm |
Updated .travis.yml, added ghc 7.10.3 to tested-with.
|
694eb87
|
||
jgm |
Added 7.10.3 to make_travis_yml.hs known versions.
|
51a415e
|
||
jgm |
Regenerated .travis.yml to include 7.10.3.
|
e792920
|
||
jgm |
Go back to testing with ghc 7.10.2.
Avoids the dreaded "the version of cabal being used has changed" error. https://www.reddit.com/r/haskell/comments/3f4bgr/the_version_of_cabal_being_used_has_changed/ |
a81b093
|
||
jgm |
RST, Markdown writers: Fixed rendering of grid tables with blank rows.
Closes #2615. |
a796538
|
conklech |
Add .stack-work to gitignore
The .stack-work directory is analogous to a cabal sandbox; it comprises temporary build artifacts. |
45f5fc9
|
||
jgm |
Merge pull request #2622 from conklech/ignore-stack
Add .stack-work to gitignore |
2aee5a3
|
||
jgm |
stack.yaml: bump pandoc-types version to 1.16.0.1.
|
73d1175
|
||
jgm |
Make file globbing work on windows.
Windows cmd doesn't expand wildcards; the application has to do this. So on windows we use 'glob' to expand. |
363ecfe
|
||
jgm |
Revert "Make file globbing work on windows."
This reverts commit 363ecfe. |
197f301
|
||
jgm |
stack.yaml, stack.full.yaml - use lts-4.0 resolver.
|
f6fe430
|
||
jgm |
Improved default template lookup for custom lua scripts.
Previously, if you tried to do `pandoc -s -t /path/to/lua/script.lua`, pandoc would look for the template in `~/.pandoc/templates/default./path/to/lua/script.lua`. With this change it will look in the more reasonable `~/.pandoc/templates/default.script.lua`. This makes it possible to store default templates for custom writers. Closes #2625. |
a5efd2a
|
matt-e |
Update stack.full.yaml
|
dbff1d1
|
||
matt-e |
Update stack.yaml
Another typo? |
1730e63
|
||
jgm |
Merge pull request #2632 from matt-e/fix-stack-build
Fix typo in stack build files |
52d95dd
|
jgm |
Entity handling fixes:
- Text.Pandoc.XML.fromEntities: handle entities without a semicolon. Always lookup character references with the trailing ';', even if it wasn't present. And never add it when looking up numerical entities. (This is what tagsoup seems to require.) - Text.Pandoc.Parsing.characterReference: Always lookup character references with the trailing ';', and leave off the ';' when looking up numerical entities. This fixes a regression for e.g. `⟨`. |
12a5bd3
|
||
jgm |
Work around tagsoup bug - not allowing uppercase x in hex entities.
Issue submitted at tagsoup. |
5884ff6
|
||
jgm |
Added some entity tests in Markdown reader tests.
|
d5f6782
|
||
jgm |
Fixed shadowing warning.
|
729911a
|
||
jgm |
LaTeX writer: restore old treatment of Span.
A Span is rendered with surrounding {braces}. This was a regression in 1.16. Closes #2624. |
1506e62
|
||
jgm |
Version bump to 1.16.0.1
|
687c39e
|
||
jgm |
Updated changelog.
|
1fbbc2b
|
||
jgm |
Updated stack.yaml.
|
5eb8087
|
||
jgm |
Fixed typo in deb/stack.yaml.
|
a412104
|
mb21 |
LaTeX writer: figure label
|
1fde920
|
jgm |
osx package fixes: correct version, allow installation to any drive.
|
6936a6a
|
||
jgm |
README - changed date.
|
37ac274
|
||
jgm |
Regenerated man page.
|
293f31c
|
||
jgm |
Release checklist: added note on regenerating Hackage docs.
|
4db912f
|
||
jgm |
Fixed regression in latex smart quote parsing.
Closes #2645. In cases where a match was not found for a quote, everything from the open quote to the end of the paragraph was being dropped. |
8611ac5
|
||
jgm |
Depend on deepseq rather than deepseq-generics.
See fpco/stackage#1096. |
f34382e
|
||
tarleb |
Prefix even empty figure names with "fig:"
The convention used by pandoc for figures is to mark them by prefixing the name with "fig:". The org reader failed to do this if a figure had no name. The test for this was broken as well. This fixes #2643. |
fabbd1a
|
jgm |
Version to 1.16.0.2, updated changelog.
|
3004306
|
||
jgm |
Updated README date.
|
ee09ee1
|
||
jgm |
Updated man page.
|
f8776ed
|
jgm |
Org writer - pass through RawInline with format "org".
|
f45a8e1
|
||
jgm |
make_osx_package.sh: Use env variable for developer id certs.
|
20c55ab
|
||
jgm |
HTML writer: harmless code simplification.
Since the 'math' is only put into the template if stMath is set anyway, there's no need for this conditional. |
f2c0974
|
csforste |
Add TEI Writer.
|
25a9ca6
|
||
jgm |
Added some entity tests in Markdown reader tests.
Change types of divs. From Docbook "sect#" and "simplesect" to "level#" and "section." Add tests. Add mention of TEI to README. Small changes to TEI writer. |
4d74a96
|
Henrik Tramberend |
LaTeX writer: Allow more flexible table alignment
|
7a18879
|
||
jgm |
Merge pull request #2665 from monofon/fix/table-alignment
LaTeX writer: Allow more flexible table alignment |
3875df7
|
||
jgm |
Adjusted longtable in tests.
New default is not to include `[c]` option. |
7ea4d17
|
jgm |
Changed type of Shared.uniqueIdent argument from [String] to Set String.
This avoids performance problems in documents with many identically named headers. Closes #2671. |
20170c3
|
||
jgm |
Bump version to 1.17.
API change in type of Text.Pandoc.Shared.uniqueIdent. |
f35fa88
|
jgm |
stack.yaml - use cmark 0.5.1.
|
d015284
|
jgm |
Make language extensions trigger highlighting.
For example, `py` will now work as well as `python`. Closes jgm/highlighting-kate#83. |
11c5831
|
jgm |
Textile reader: Support `>`, `<`, `=`, `<>` text alignment attributes.
Closes #2674. |
a1021bd
|
pra85 |
Update license year range to 2016
|
fdc9f0e
|
||
jgm |
Merge pull request #2681 from pra85/patch-1
Update license year range to 2016 |
373aaa8
|
jgm |
Properly handle LaTeX "math" environment as inline math.
See #2171. |
76983c3
|
||
jgm |
HTML reader: handle multiple meta tags with same name.
Put them in a list in the metadata so they are all preserved, rather than (as before) throwing out all but one.. |
a02c26d
|
jgm |
LaTeX reader: `inlineCommand` now gobbles an empty `{}` after any com…
…mand. This gives better results when people write e.g. `\TeX{}` in Markdown. \TeX{} and \LaTeX{} now works as expected with `pandoc -f markdown -t latex`. Closes #2687. |
1874558
|
||
tarleb |
Org reader: Refactor link-target processing
Cleanup of the code for link target handling. Most notably, the canonicalization of a link is handled by a separate function. This fixes #2684. |
92e6ae4
|
jkr |
Docx reader: Add a "Link" modifier to Reducible
We want to make sure that links have their spaces removed, and are appropriately smushed together. This closes #2689 |
2ee7752
|
||
jkr |
Docx reader: Add tests for adjacent hyperlinks.
|
7a10507
|
jgm |
HTML writer: don't include alignment attribute for default table colu…
…mns. Previously these were given "left" alignment. Better to leave off alignment attributes altogether. Closes #2694. |
93a05df
|
jgm |
Markdown reader: Fixed bug with smart quotes around tex math.
Previously smart quotes were incorrect in the following: '$\neg(x \in x)$'. (because of the following period). This commit fixes the problem, which was introduced by commit 4229cf2. |
6cb4991
|
MathieuDuponchelle |
CONTRIBUTING.md : update test enabling documentation
On my end, in a clean sandbox, I had to run this before I could run the tests, I'm a cabal / haskell noob so that might not be the best way to do so but :) |
a326600
|
jgm |
Custom writer: Pass attributes parameter to CaptionedImage.
Closes #2697. |
a692bd2
|
||
jgm |
Merge pull request #2699 from MathieuDuponchelle/patch-1
CONTRIBUTING.md : update test enabling documentation |
7358b47
|
||
jgm |
Added info on Stack to CONTRIBUTING.md.
|
c0515e0
|
rski |
Fix stack link in INSTALL
Stack installation instructions have moved to docs.haskellstack.org |
c428231
|
||
jgm |
Merge pull request #2703 from rski/stack_link_fix
Fix stack link in INSTALL |
7034366
|
jgm |
Allow aeson 0.11.
|
e552a14
|
||
jgm |
Updated to lts-5.2 resolver, aeson 0.11 in stack.yaml.
|
522f8f3
|
||
jgm |
Changed aeson version in stack.yaml to 0.11.0.0.
|
1aaf4b8
|
jgm |
HTML reader: properly handle an empty cell in a simple table.
Closes #2718. |
b8dadc6
|
jgm |
Try new travis stack+cabal script.
|
1a87794
|
||
jgm |
Fixed stack.yaml.
|
134a5e5
|
||
jgm |
Travis fixes.
cabal sdist has problems on cabal 1.16, because of our Text.Pandoc.Data module. So we don't test it. |
dda7c27
|
||
jgm |
Travis: don't build with lts-3.
It doesn't have recent enough dependencies. |
9e3f739
|
||
jgm |
Don't build with lts-2 or lts-3.
|
44bcc88
|
adunning |
Remove stray line from stack.full.yaml
The line causes an error with stack 1.0.2: ``` Could not parse '/pandoc-build/pandoc/stack.full.yaml': AesonException "Error in $.extra-deps: failed to parse field 'extra-deps': failed to parse field extra-deps: expected [a], encountered Null" See http://docs.haskellstack.org/en/stable/yaml_configuration.html. ``` |
4dfe373
|
jgm |
Merge pull request #2725 from adunning/patch-1
Remove stray line from stack.full.yaml |
5848416
|
||
jkr |
LaTeX writer: treat memoir template with `article` opt as article
We currently treat all memoir templates as books. This means that pandoc will infer the `--chapters` argument, even if the `article` iption is set for memoir. This commit makes pandoc treats the document as an article if there is an article option (i.e., `\documentclass[12pt,article]{memoir}`). Note that this refactors out the parsec parsers for document class and options, to make it a little clearer what's going on. |
4112b32
|
||
jkr |
LaTeX writer: clean up options parser.
Make sure that we require the closing bracket. |
4438ff1
|
pra85 |
Fix typos in Readme
Remove extra `be` `overriden` → `overridden` |
8a114e9
|
||
jgm |
Merge pull request #2732 from pra85/patch-2
Fix typos in Readme |
d45fcf9
|
||
jgm |
HTML reader: rewrote htmlInBalanced.
This version avoids an exponential performance problem with `<script>` tags, and it should be faster in general. Closes #2730. |
1534052
|
jgm |
Merge pull request #2691 from tarleb/org-image-file-links
Org reader: Refactor link-target processing |
e369e60
|
||
jgm |
Merge pull request #2668 from monofon/fix/yaml-metadata-block-bottom-…
…line Markdown writer: Use hyphens for yaml metadata block bottom line |
649cfb6
|
||
jgm |
Merge pull request #2646 from tarleb/org-figure-with-no-name
Prefix even empty figure names with "fig:" |
29706ee
|
||
jgm |
Fixed some linter warnings.
|
9693de7
|
||
jkr |
Update README to reflect 4112b32.
We don't infer `--chapters` if `article` document option is set. For example: `\documentclass[article]{memoir}`. |
f1c59b2
|
||
jgm |
Markdown reader: use htmlInBalanced for rawVerbatimBlock.
This should give better performance. See #2730. |
04d1e40
|
jgm |
Raise tagsoup lower bound to 0.13.7.
This fixes entity-related problems. Closes #2734. |
0180807
|
jgm |
Make protocol-relative URIs work again.
Closes #2737. |
f2bd6fd
|
jgm |
Allow zip-archive 0.3.
|
38bd416
|
jkr |
Docx Reader: Get rid of Modifiable typeclass.
The docx reader used to use a Modifiable typeclass to combine both Blocks and Inlines. But all the work was in the inlines. So most of the generality was wasted, at the expense of making the code harder to understand. This gets rid of the generality, and adds functions for Blocks and Inlines. It should be a bit easier to work with going forward. |
a7a0b45
|
||
mb21 |
Add relocatable stack build
|
752be50
|
||
jgm |
Merge pull request #2739 from mb21/patch-2
Add relocatable stack build |
ea70495
|
jgm |
LaTeX reader: handle interior `$` characters in math.
e.g. `$$\hbox{$i$}$$`. Partially addresses #2743. |
7c6a3c0
|
ickc |
Update pandoc.1
|
b411e0f
|
||
ickc |
Update README
|
846fa87
|
||
jgm |
Merge pull request #2760 from ickc/master
Very Minor update on the documentation |
0510396
|
||
jgm |
Stack-based appveyor setup.
|
928a050
|
jkr |
Docx reader: update feature checklist.
The feature checklist in the source code was out of date. Update. |
0b9c54d
|
||
jgm |
DokuWiki writer: use $$ for display math.
|
6bfaa5a
|
jgm |
Markdown reader: don't cross line boundary parsing pipe table row.
Previously an emph element could be parsed across the newline at the end of the pipe table row. I thought this would help with #2765, but it doesn't. |
4ed6483
|
||
jgm |
Markdown reader: allow `+` separators in pipe table cells.
We already allowed them in the header, but not in the body rows, for some reason. This gives compatibility with org-mode tables. |
6e950a8
|
||
jgm |
Markdown reader: Clean up pipe table parsing.
|
54a6861
|
||
jgm |
Markdown reader: Improved pipe table parsing.
Fixes #2765. Added test case. |
2b55b76
|
mb21 |
Docx Writer: handle image alt text
closes #2754 |
139fa54
|
||
jgm |
Merge pull request #2771 from mb21/docx-alt-text
Docx Writer: handle image alt text |
06a57b2
|
jgm |
Fixed behavior of base tag.
+ If the base path does not end with slash, the last component will be replaced. E.g. base = `http://example.com/foo` combines with `bar.html` to give `http://example.com/bar.html`. + If the href begins with a slash, the whole path of the base is replaced. E.g. base = `http://example.com/foo/` combines with `/bar.html` to give `http://example.com/bar.html`. Closes #2777. |
a485c42
|
jkr |
Docx Reader: Add state to the parser, for warnings
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. |
102ba9e
|
||
jkr |
Add readDocxWithWarnings
The regular readDocx just becomes a special case. |
ee03e95
|
||
jkr |
Add a general ByteStringReader with warnings.
Have docx reader use it. |
68fd333
|
jkr |
Introduce file-scope parsing (parse-before-combine)
Traditionally pandoc operates on multiple files by first concetenating them (around extra line breaks) and then processing the joined file. So it only parses a multi-file document at the document scope. This has the benefit that footnotes and links can be in different files, but it also introduces a couple of difficulties: - it is difficult to join files with footnotes without some sort of preprocessing, which makes it difficult to write academic documents in small pieces. - it makes it impossible to process multiple binary input files, which can't be catted. - it makes it impossible to process files from different input formats. This commit introduces alternative method. Instead of catting the files first, it parses the files first, and then combines the parsed output. This makes it impossible to have links across multiple files, and auto-identified headers won't work correctly if headers in multiple files have the same name. On the other hand, footnotes across multiple files will work correctly and will allow more freedom for input formats. Since ByteStringReaders can currently only read one binary file, and will ignore subsequent files, we also changes the behavior to automatically parse before combining if using the ByteStringReader. If we use one file, it will work as normal. If there is more than one file it will combine them after parsing (assuming that the format is the same). Note that this is intended to be an optional method, defaulting to off. Turn it on with `--file-scope`. |
5c055b4
|
||
jkr |
README: Add description of `--file-scope` option.
|
c7c4ee4
|
||
jkr |
pandoc.hs: Also use filescope for json files.
JSON files have metadata and list structure, so they can't be simply catted, but they're useful as intermediate build files in large projects. |
09b4f29
|
jkr |
Docx reader: Don't make numbered heads into lists.
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. |
855c8b4
|
||
jkr |
Docx reader: Add test for enumerated headers.
We don't want them to turn into a list. |
7f4a404
|
jkr |
Docx reader: Handle alternate content
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`. |
28c7617
|
||
jgm |
README: document that --toc works with docx.
Closes #2787. |
8d1c018
|
||
jgm |
LaTeX writer: Avoid double toprule in headerless table with caption.
Closes #2742. |
e821b05
|
||
jgm |
ConTeXt writer: fix whitespace at line beginning in line blocks.
|
976e7e2
|
jkr |
Fix stdin handling for file-scope
Regardless of input type, we should use default handling if we are dealing with stdin. In other words, there should be no file-scope if there are no files. This was an issue with pandoc json, which could be piped on stdin, but which was read by default with `--file-scope`. |
a8a2d4f
|
||
jgm |
Improved documentation of templates.
Note that there's no docx template. Closes #2797. |
2649a0d
|
||
jgm |
Version to 1.17.0.1.
|
edcb8b6
|
||
jgm |
Updated changelog.
|
650c12d
|
||
jgm |
Updated man page.
|
db20790
|
- +1 −0 .gitignore
- +112 −74 .travis.yml
- +25 −4 CONTRIBUTING.md
- +1 −1 COPYRIGHT
- +5 −1 INSTALL
- +10 −3 Makefile
- +461 −233 README
- +6 −3 RELEASE-CHECKLIST
- +14 −33 appveyor.yml
- +2 −2 benchmark/benchmark-pandoc.hs
- +766 −15 changelog
- +7 −3 data/sample.lua
- +1 −1 data/templates
- +26 −0 deb/GlobalSignDomainValidationCA-SHA256-G2.pem
- +13 −0 deb/Makefile
- +75 −0 deb/Vagrantfile
- +1 −1 deb/control.in
- +30 −0 deb/haskell.org.pem
- +21 −22 { → deb}/make_deb.sh
- +21 −0 deb/stack.yaml
- +9 −0 extract-changes.hs
- +21 −5 make_osx_package.sh
- +2 −2 make_travis_yml.hs
- +529 −235 man/pandoc.1
- +1 −1 man/removeLinks.hs
- +3 −3 osx/{distribution.xml → distribution.xml.in}
- +7 −5 stack.pkg.yaml → osx/stack.yaml
- +63 −49 pandoc.cabal
- +139 −111 pandoc.hs
- +5 −14 prelude/Prelude.hs
- +18 −7 src/Text/Pandoc.hs
- +15 −6 src/Text/Pandoc/CSS.hs
- +17 −0 src/Text/Pandoc/Compat/Monoid.hs
- +9 −1 src/Text/Pandoc/Data.hsb
- +906 −0 src/Text/Pandoc/Emoji.hs
- +5 −5 src/Text/Pandoc/Highlighting.hs
- +137 −15 src/Text/Pandoc/ImageSize.hs
- +33 −15 src/Text/Pandoc/Options.hs
- +153 −17 src/Text/Pandoc/PDF.hs
- +28 −10 src/Text/Pandoc/Parsing.hs
- +2 −1 src/Text/Pandoc/Pretty.hs
- +15 −7 src/Text/Pandoc/Readers/CommonMark.hs
- +17 −7 src/Text/Pandoc/Readers/DocBook.hs
- +55 −36 src/Text/Pandoc/Readers/Docx.hs
- +154 −0 src/Text/Pandoc/Readers/Docx/Combine.hs
- +124 −65 src/Text/Pandoc/Readers/Docx/Parse.hs
- +0 −181 src/Text/Pandoc/Readers/Docx/Reducible.hs
- +8 −7 src/Text/Pandoc/Readers/EPUB.hs
- +79 −51 src/Text/Pandoc/Readers/HTML.hs
- +1 −0 src/Text/Pandoc/Readers/Haddock.hs
- +71 −30 src/Text/Pandoc/Readers/LaTeX.hs
- +128 −77 src/Text/Pandoc/Readers/Markdown.hs
- +31 −18 src/Text/Pandoc/Readers/MediaWiki.hs
- +1 −0 src/Text/Pandoc/Readers/Odt/Arrows/State.hs
- +20 −21 src/Text/Pandoc/Readers/Odt/Arrows/Utils.hs
- +8 −7 src/Text/Pandoc/Readers/Odt/ContentReader.hs
- +1 −1 src/Text/Pandoc/Readers/Odt/Generic/Fallible.hs
- +14 −14 src/Text/Pandoc/Readers/Odt/Generic/XMLConverter.hs
- +1 −1 src/Text/Pandoc/Readers/Odt/Namespaces.hs
- +2 −2 src/Text/Pandoc/Readers/Odt/StyleReader.hs
- +98 −51 src/Text/Pandoc/Readers/Org.hs
- +24 −15 src/Text/Pandoc/Readers/RST.hs
- +32 −8 src/Text/Pandoc/Readers/Textile.hs
- +2 −1 src/Text/Pandoc/Readers/Txt2Tags.hs
- +1 −1 src/Text/Pandoc/SelfContained.hs
- +52 −27 src/Text/Pandoc/Shared.hs
- +1 −1 src/Text/Pandoc/Slides.hs
- +1 −0 src/Text/Pandoc/Templates.hs
- +42 −18 src/Text/Pandoc/Writers/AsciiDoc.hs
- +22 −21 src/Text/Pandoc/Writers/CommonMark.hs
- +87 −28 src/Text/Pandoc/Writers/ConTeXt.hs
- +8 −6 src/Text/Pandoc/Writers/Custom.hs
- +32 −9 src/Text/Pandoc/Writers/Docbook.hs
- +21 −26 src/Text/Pandoc/Writers/Docx.hs
- +30 −8 src/Text/Pandoc/Writers/DokuWiki.hs
- +13 −10 src/Text/Pandoc/Writers/EPUB.hs
- +10 −8 src/Text/Pandoc/Writers/FB2.hs
- +107 −69 src/Text/Pandoc/Writers/HTML.hs
- +12 −7 src/Text/Pandoc/Writers/Haddock.hs
- +96 −57 src/Text/Pandoc/Writers/ICML.hs
- +239 −97 src/Text/Pandoc/Writers/LaTeX.hs
@@ -1,87 +1,125 @@ | ||
-# This file has been generated -- see https://github.com/hvr/multi-ghc-travis | ||
-language: c | ||
+# Copy these contents into the root directory of your Github project in a file | ||
+# named .travis.yml | ||
+ | ||
+# Use new container infrastructure to enable caching | ||
sudo: false | ||
+# Choose a lightweight base image; we provide our own build tools. | ||
+language: c | ||
+ | ||
+# Caching so the next build will be fast too. | ||
cache: | ||
directories: | ||
- - $HOME/.cabsnap | ||
- - $HOME/.cabal/packages | ||
- | ||
-before_cache: | ||
- - rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log | ||
- - rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.tar | ||
+ - $HOME/.ghc | ||
+ - $HOME/.cabal | ||
+ - $HOME/.stack | ||
+# The different configurations we want to test. We have BUILD=cabal which uses | ||
+# cabal-install, and BUILD=stack which uses Stack. More documentation on each | ||
+# of those below. | ||
+# | ||
+# We set the compiler values here to tell Travis to use a different | ||
+# cache file per set of arguments. | ||
+# | ||
+# If you need to have different apt packages for each combination in the | ||
+# matrix, you can use a line such as: | ||
+# addons: {apt: {packages: [libfcgi-dev,libgmp-dev]}} | ||
matrix: | ||
include: | ||
- - env: CABALVER=1.16 GHCVER=7.4.2 GHCOPTS=-Werror | ||
- compiler: ": #GHC 7.4.2" | ||
- addons: {apt: {packages: [cabal-install-1.16,ghc-7.4.2], sources: [hvr-ghc]}} | ||
- - env: CABALVER=1.16 GHCVER=7.6.3 GHCOPTS=-Werror | ||
- compiler: ": #GHC 7.6.3" | ||
- addons: {apt: {packages: [cabal-install-1.16,ghc-7.6.3], sources: [hvr-ghc]}} | ||
- - env: CABALVER=1.18 GHCVER=7.8.4 GHCOPTS=-Werror | ||
- compiler: ": #GHC 7.8.4" | ||
- addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4], sources: [hvr-ghc]}} | ||
- - env: CABALVER=1.22 GHCVER=7.10.2 GHCOPTS=-Werror | ||
- compiler: ": #GHC 7.10.2" | ||
- addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.2], sources: [hvr-ghc]}} | ||
+ # We grab the appropriate GHC and cabal-install versions from hvr's PPA. See: | ||
+ # https://github.com/hvr/multi-ghc-travis | ||
+ - env: BUILD=cabal GHCVER=7.4.2 CABALVER=1.16 | ||
+ compiler: ": #GHC 7.4.2" | ||
+ addons: {apt: {packages: [cabal-install-1.16,ghc-7.4.2], sources: [hvr-ghc]}} | ||
+ - env: BUILD=cabal GHCVER=7.6.3 CABALVER=1.16 | ||
+ compiler: ": #GHC 7.6.3" | ||
+ addons: {apt: {packages: [cabal-install-1.16,ghc-7.6.3], sources: [hvr-ghc]}} | ||
+ - env: BUILD=cabal GHCVER=7.8.4 CABALVER=1.18 | ||
+ compiler: ": #GHC 7.8.4" | ||
+ addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4], sources: [hvr-ghc]}} | ||
+ - env: BUILD=cabal GHCVER=7.10.3 CABALVER=1.22 | ||
+ compiler: ": #GHC 7.10.3" | ||
+ addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3], sources: [hvr-ghc]}} | ||
-before_install: | ||
- - unset CC | ||
- - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH | ||
+ # Build with the newest GHC and cabal-install. This is an accepted failure, | ||
+ # see below. | ||
+ - env: BUILD=cabal GHCVER=head CABALVER=head | ||
+ compiler: ": #GHC HEAD" | ||
+ addons: {apt: {packages: [cabal-install-head,ghc-head], sources: [hvr-ghc]}} | ||
-install: | ||
- - cabal --version | ||
- - echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]" | ||
- - if [ -f $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz ]; | ||
- then | ||
- zcat $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz > | ||
- $HOME/.cabal/packages/hackage.haskell.org/00-index.tar; | ||
- fi | ||
- - travis_retry cabal update -v | ||
- - sed -i 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config | ||
- - cabal install --only-dependencies --enable-tests --enable-benchmarks --dry -v > installplan.txt | ||
- - sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt | ||
+ # The Stack builds. We can pass in arbitrary Stack arguments via the ARGS | ||
+ # variable, such as using --stack-yaml to point to a different file. | ||
+ - env: BUILD=stack ARGS="--resolver lts-5" | ||
+ compiler: ": #stack 7.10.3" | ||
+ addons: {apt: {packages: [ghc-7.10.3], sources: [hvr-ghc]}} | ||
-# check whether current requested install-plan matches cached package-db snapshot | ||
- - if diff -u installplan.txt $HOME/.cabsnap/installplan.txt; | ||
- then | ||
- echo "cabal build-cache HIT"; | ||
- rm -rfv .ghc; | ||
- cp -a $HOME/.cabsnap/ghc $HOME/.ghc; | ||
- cp -a $HOME/.cabsnap/lib $HOME/.cabsnap/share $HOME/.cabsnap/bin $HOME/.cabal/; | ||
- else | ||
- echo "cabal build-cache MISS"; | ||
- rm -rf $HOME/.cabsnap; | ||
- mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin; | ||
- cabal install --only-dependencies --enable-tests --enable-benchmarks; | ||
- fi | ||
- | ||
-# snapshot package-db on cache miss | ||
- - if [ ! -d $HOME/.cabsnap ]; | ||
- then | ||
- echo "snapshotting package-db to build-cache"; | ||
- mkdir $HOME/.cabsnap; | ||
- cp -a $HOME/.ghc $HOME/.cabsnap/ghc; | ||
- cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin installplan.txt $HOME/.cabsnap/; | ||
- fi | ||
+ # Nightly builds are allowed to fail | ||
+ - env: BUILD=stack ARGS="--resolver nightly" | ||
+ compiler: ": #stack nightly" | ||
+ addons: {apt: {packages: [libgmp-dev]}} | ||
-# Here starts the actual work to be performed for the package under test; | ||
-# any command which exits with a non-zero exit code causes the build to fail. | ||
-script: | ||
- - if [ -f configure.ac ]; then autoreconf -i; fi | ||
- - cabal configure --enable-tests --enable-benchmarks -v2 # -v2 provides useful information for debugging | ||
- - cabal build --ghc-options=$GHCOPTS # this builds all libraries and executables (including tests/benchmarks) | ||
- - cabal test | ||
- - cabal check | ||
-# Test that a source-distribution can be generated | ||
-# (with cabal >= 1.18 'cabal sdist' would work too): | ||
- - ./dist/setup/setup sdist | ||
+ - env: BUILD=stack ARGS="--resolver lts-5" | ||
+ compiler: ": #stack 7.10.3 osx" | ||
+ os: osx | ||
-# Check that the resulting source distribution can be built & installed. | ||
-# If there are no other `.tar.gz` files in `dist`, this can be even simpler: | ||
-# `cabal install --force-reinstalls dist/*-*.tar.gz` | ||
- - SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz && | ||
- (cd dist && cabal install --force-reinstalls "$SRC_TGZ") | ||
+ - env: BUILD=stack ARGS="--resolver nightly" | ||
+ compiler: ": #stack nightly osx" | ||
+ os: osx | ||
-# EOF | ||
+ allow_failures: | ||
+ - env: BUILD=cabal GHCVER=head CABALVER=head | ||
+ - env: BUILD=stack ARGS="--resolver nightly" | ||
+ | ||
+before_install: | ||
+# Using compiler above sets CC to an invalid value, so unset it | ||
+- unset CC | ||
+ | ||
+# We want to always allow newer versions of packages when building on GHC HEAD | ||
+- CABALARGS="" | ||
+- if [ "x$GHCVER" = "xhead" ]; then CABALARGS=--allow-newer; fi | ||
+ | ||
+# Download and unpack the stack executable | ||
+- export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$HOME/.local/bin:$PATH | ||
+- mkdir -p ~/.local/bin | ||
+- | | ||
+ if [ `uname` = "Darwin" ] | ||
+ then | ||
+ curl --insecure -L https://www.stackage.org/stack/osx-x86_64 | tar xz --strip-components=1 --include '*/stack' -C ~/.local/bin | ||
+ else | ||
+ curl -L https://www.stackage.org/stack/linux-x86_64 | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack' | ||
+ fi | ||
+ | ||
+install: | ||
+- echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]" | ||
+- if [ -f configure.ac ]; then autoreconf -i; fi | ||
+- | | ||
+ case "$BUILD" in | ||
+ stack) | ||
+ stack --no-terminal --install-ghc $ARGS test --only-dependencies | ||
+ ;; | ||
+ cabal) | ||
+ cabal --version | ||
+ travis_retry cabal update | ||
+ cabal install --only-dependencies --enable-tests --enable-benchmarks --force-reinstalls --ghc-options=-O0 --reorder-goals --max-backjumps=-1 $CABALARGS | ||
+ ;; | ||
+ esac | ||
+ | ||
+script: | ||
+- | | ||
+ case "$BUILD" in | ||
+ stack) | ||
+ stack --no-terminal $ARGS test --haddock --no-haddock-deps | ||
+ ;; | ||
+ cabal) | ||
+ cabal configure --enable-tests --enable-benchmarks -v2 --ghc-options="-O0 -Werror" | ||
+ cabal build | ||
+ cabal check || [ "$CABALVER" == "1.16" ] | ||
+ cabal test | ||
+ cabal copy | ||
+ # cabal sdist fails on cabal 1.16: | ||
+ cabal sdist || [ "$CABALVER" == "1.16" ] | ||
+ SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz && \ | ||
+ (cd dist && cabal install --force-reinstalls "$SRC_TGZ" || \ | ||
+ [ "$CABALVER" == "1.16" ]) | ||
+ ;; | ||
+ esac |
@@ -1,38 +1,19 @@ | ||
-install: | ||
-- cmd: 'git submodule update --init' | ||
-- ps: | | ||
- choco install haskellplatform -version 2014.2.0.0 -y | ||
- # Haskell Platfrom package doesn't update PATH for the current shell instance | ||
+cache: | ||
+- "c:\\sr" # stack root, short paths == fewer problems | ||
- $env:Path += ";${env:ProgramFiles}\Haskell Platform\2014.2.0.0\bin" | ||
- $env:Path += ";${env:ProgramFiles}\Haskell Platform\2014.2.0.0\lib\extralibs\bin" | ||
- $env:Path += ";${env:ProgramFiles}\Haskell Platform\2014.2.0.0\mingw\bin" | ||
- # choco install wixtoolset | ||
- cabal sandbox init | ||
- $env:Path += ";.\.cabal-sandbox\bin" | ||
- cabal update | ||
- cabal install --force hsb2hs | ||
+build: off | ||
-build_script: | ||
-- cmd: | | ||
- cabal install --force --enable-tests -fembed_data_files | ||
+before_test: | ||
+- curl -ostack.zip -L --insecure http://www.stackage.org/stack/windows-i386 | ||
+- 7z x stack.zip stack.exe | ||
-# after_build: | ||
-# - cmd: | | ||
-# cabal install -fembed_data_files pandoc-citeproc | ||
-# strip .\.cabal-sandbox\bin\pandoc.exe | ||
-# strip .\.cabal-sandbox\bin\pandoc-citeproc.exe | ||
-# .\.cabal-sandbox\bin\pandoc.exe -s --template data\templates\default.html -S README -o README.html | ||
-# .\.cabal-sandbox\bin\pandoc.exe -s --template data\templates\default.rtf COPYING -t rtf -S -o COPYING.rtf | ||
-# copy COPYRIGHT COPYRIGHT.txt | ||
-# for /f "tokens=2 delims= " %%a in ('.\.cabal-sandbox\bin\pandoc --version') do ( set "VERSION=%%a" && exit ) | ||
-# if "%VERSION%" == "" ( echo "Error: could not determine version number." && exit /b 1 ) | ||
-# cd windows | ||
-# echo Creating msi... | ||
-# candle -dVERSION=%VERSION% pandoc.wxs | ||
-# if %errorlevel% neq 0 exit /b %errorlevel% | ||
-# light -sw1076 -ext WixUIExtension -ext WixUtilExtension -out pandoc-%VERSION%-windows.msi pandoc.wixobj | ||
+clone_folder: "c:\\stack" | ||
+environment: | ||
+ global: | ||
+ STACK_ROOT: "c:\\sr" | ||
test_script: | ||
-- cmd: | | ||
- cabal test | ||
+- stack setup > nul | ||
+# The ugly echo "" hack is to avoid complaints about 0 being an invalid file | ||
+# descriptor | ||
+- echo "" | stack --no-terminal test |
@@ -1 +1 @@ | ||
-Subproject commit 319b641365d23a3a5f84c569a35dbaeef4362b9b | ||
+Subproject commit d39b2207f98e8a6c6f91b0498c183069a0aa7c97 |
@@ -0,0 +1,26 @@ | ||
+-----BEGIN CERTIFICATE----- | ||
+MIIEYzCCA0ugAwIBAgILBAAAAAABRE7wPiAwDQYJKoZIhvcNAQELBQAwVzELMAkG | ||
+A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv | ||
+b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw | ||
+MDBaFw0yNDAyMjAxMDAwMDBaMGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i | ||
+YWxTaWduIG52LXNhMTYwNAYDVQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0 | ||
+aW9uIENBIC0gU0hBMjU2IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK | ||
+AoIBAQCp3cwOs+IyOd1JIqgTaZOHiOEM7nF9vZCHll1Z8syz0lhXV/lG72wm2DZC | ||
+jn4wsy+aPlN7H262okxFHzzTFZMcie089Ffeyr3sBppqKqAZUn9R0XQ5CJ+r69eG | ||
+ExWXrjbDVGYOWvKgc4Ux47JkFGr/paKOJLu9hVIVonnu8LXuPbj0fYC82ZA1ZbgX | ||
+qa2zmJ+gfn1u+z+tfMIbWTaW2jcyS0tdNQJjjtunz2LuzC7Ujcm9PGqRcqIip3It | ||
+INH6yjfaGJjmFiRxJUvE5XuJUgkC/VkrBG7KB4HUs9ra2+PMgKhWBwZ8lgg3nds4 | ||
+tmI0kWIHdAE42HIw4uuQcSZiwFfzAgMBAAGjggElMIIBITAOBgNVHQ8BAf8EBAMC | ||
+AQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU6k581IAt5RWBhiaMgm3A | ||
+mKTPlw8wRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8v | ||
+d3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDMGA1UdHwQsMCowKKAmoCSG | ||
+Imh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwPQYIKwYBBQUHAQEE | ||
+MTAvMC0GCCsGAQUFBzABhiFodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9yb290 | ||
+cjEwHwYDVR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJKoZIhvcNAQEL | ||
+BQADggEBANdFnqDc4ONhWgt9d4QXLWVagpqNoycqhffJ7+mG/dRHzQFSlsVDvTex | ||
+4bjyqdKKEYRxkRWJ3AKdC8tsM4U0KJ4gsrGX3G0LEME8zV/qXdeYMcU0mVwAYVXE | ||
+GwJbxeOJyLS4bx448lYm6UHvPc2smU9ZSlctS32ux4j71pg79eXw6ImJuYsDy1oj | ||
+H6T9uOr7Lp2uanMJvPzVoLVEgqtEkS5QLlfBQ9iRBIvpES5ftD953x77PzAAi1Pj | ||
+tywdO02L3ORkHQRYM68bVeerDL8wBHTk8w4vMDmNSwSMHnVmZkngvkA0x1xaUZK6 | ||
+EjxS1QSCVS1npd+3lXzuP8MIugS+wEY= | ||
+-----END CERTIFICATE----- |
@@ -0,0 +1,13 @@ | ||
+TREE?=HEAD | ||
+DEBPKGVER?=1 | ||
+VAGRANTBOX?=debian/wheezy64 | ||
+ | ||
+.PHONY: package clean | ||
+ | ||
+package: | ||
+ VAGRANTBOX=$(VAGRANTBOX) vagrant up | ||
+ vagrant ssh -c 'rm -rf pandoc && git clone https://github.com/jgm/pandoc && cd pandoc && git checkout -b work $(TREE) && git submodule update --init && DEBPKGVER=$(DEBPKGVER) sh -ev ./deb/make_deb.sh && cp *.deb /vagrant_data/' | ||
+ vagrant halt | ||
+ | ||
+clean: | ||
+ vagrant destroy |
@@ -0,0 +1,75 @@ | ||
+# -*- mode: ruby -*- | ||
+# vi: set ft=ruby : | ||
+ | ||
+# All Vagrant configuration is done below. The "2" in Vagrant.configure | ||
+# configures the configuration version (we support older styles for | ||
+# backwards compatibility). Please don't change it unless you know what | ||
+# you're doing. | ||
+Vagrant.configure(2) do |config| | ||
+ # The most common configuration options are documented and commented below. | ||
+ # For a complete reference, please see the online documentation at | ||
+ # https://docs.vagrantup.com. | ||
+ | ||
+ # Every Vagrant development environment requires a box. You can search for | ||
+ # boxes at https://atlas.hashicorp.com/search. | ||
+ config.vm.box = ENV['VAGRANTBOX'] || "ubuntu/precise64" | ||
+ | ||
+ # Disable automatic box update checking. If you disable this, then | ||
+ # boxes will only be checked for updates when the user runs | ||
+ # `vagrant box outdated`. This is not recommended. | ||
+ # config.vm.box_check_update = false | ||
+ | ||
+ # Create a forwarded port mapping which allows access to a specific port | ||
+ # within the machine from a port on the host machine. In the example below, | ||
+ # accessing "localhost:8080" will access port 80 on the guest machine. | ||
+ # config.vm.network "forwarded_port", guest: 80, host: 8080 | ||
+ | ||
+ # Create a private network, which allows host-only access to the machine | ||
+ # using a specific IP. | ||
+ # config.vm.network "private_network", ip: "192.168.33.10" | ||
+ | ||
+ # Create a public network, which generally matched to bridged network. | ||
+ # Bridged networks make the machine appear as another physical device on | ||
+ # your network. | ||
+ # config.vm.network "public_network" | ||
+ | ||
+ # Share an additional folder to the guest VM. The first argument is | ||
+ # the path on the host to the actual folder. The second argument is | ||
+ # the path on the guest to mount the folder. And the optional third | ||
+ # argument is a set of non-required options. | ||
+ config.vm.synced_folder "..", "/vagrant_data" | ||
+ | ||
+ # Provider-specific configuration so you can fine-tune various | ||
+ # backing providers for Vagrant. These expose provider-specific options. | ||
+ # Example for VirtualBox: | ||
+ # | ||
+ config.vm.provider "virtualbox" do |vb| | ||
+ # Display the VirtualBox GUI when booting the machine | ||
+ # vb.gui = true | ||
+ | ||
+ # Customize the amount of memory on the VM: | ||
+ vb.memory = "2048" | ||
+ end | ||
+ # | ||
+ # View the documentation for the provider you are using for more | ||
+ # information on available options. | ||
+ | ||
+ # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies | ||
+ # such as FTP and Heroku are also available. See the documentation at | ||
+ # https://docs.vagrantup.com/v2/push/atlas.html for more information. | ||
+ # config.push.define "atlas" do |push| | ||
+ # push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME" | ||
+ # end | ||
+ | ||
+ # Enable provisioning with a shell script. Additional provisioners such as | ||
+ # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the | ||
+ # documentation for more information about their specific syntax and use. | ||
+ config.vm.provision "shell", inline: <<-SHELL | ||
+ wget -q https://s3.amazonaws.com/download.fpcomplete.com/debian/fpco.key | ||
+ sudo apt-key add fpco.key | ||
+ echo 'deb http://download.fpcomplete.com/ubuntu/precise stable main'|sudo tee /etc/apt/sources.list.d/fpco.list | ||
+ sudo apt-get update | ||
+ sudo apt-get install -y stack build-essential debhelper dh-make | ||
+ sudo cp /vagrant_data/deb/*.pem /etc/ssl/certs/ | ||
+ SHELL | ||
+end |
@@ -0,0 +1,30 @@ | ||
+-----BEGIN CERTIFICATE----- | ||
+MIIFMjCCBBqgAwIBAgISESGwJtbMWHI+x6Mmm0FEK3WqMA0GCSqGSIb3DQEBCwUA | ||
+MGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTYwNAYD | ||
+VQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0aW9uIENBIC0gU0hBMjU2IC0g | ||
+RzIwHhcNMTUxMTExMjE0NjUzWhcNMTYxMjE1MDYyODEwWjA7MSEwHwYDVQQLExhE | ||
+b21haW4gQ29udHJvbCBWYWxpZGF0ZWQxFjAUBgNVBAMMDSouaGFza2VsbC5vcmcw | ||
+ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDNixwKSAJbYPGflK3nO/hH | ||
+CxigkOiKQr9q47aY9S8l0vU9ISC0eiuKkFD42ia5GzeqyBsGF4HoSF0MtBivShJz | ||
+oxt6xFtmagKRX6VB3Qo41+36IKnqmvWE5CAoNIyoy9+ZgfKQKOaIjQzFd4edYxfa | ||
+AQgEypRjod/BjY4NlAOILXa1L7cNQp29QkouODU5oW9mT/TWh3gNIO7cjqq+GHxh | ||
+7/itRt7I6CJOPhEZa3UaA27yNbDsJK8dxGXeGqkUVqdoff98zO4LygyNxwIguWbD | ||
+ektP8472N9tR4G2e/f3tnWPFzmSFIUYQPQQZsWbMi5lBVAL1IX3kgO8qgyJOQeWN | ||
+AgMBAAGjggIJMIICBTAOBgNVHQ8BAf8EBAMCBaAwSQYDVR0gBEIwQDA+BgZngQwB | ||
+AgEwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVw | ||
+b3NpdG9yeS8wYgYDVR0RBFswWYINKi5oYXNrZWxsLm9yZ4IYYXV0b2Rpc2NvdmVy | ||
+Lmhhc2tlbGwub3JnghBtYWlsLmhhc2tlbGwub3Jngg9vd2EuaGFza2VsbC5vcmeC | ||
+C2hhc2tlbGwub3JnMAkGA1UdEwQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsG | ||
+AQUFBwMCMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5j | ||
+b20vZ3MvZ3Nkb21haW52YWxzaGEyZzIuY3JsMIGUBggrBgEFBQcBAQSBhzCBhDBH | ||
+BggrBgEFBQcwAoY7aHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNvbS9jYWNlcnQv | ||
+Z3Nkb21haW52YWxzaGEyZzJyMS5jcnQwOQYIKwYBBQUHMAGGLWh0dHA6Ly9vY3Nw | ||
+Mi5nbG9iYWxzaWduLmNvbS9nc2RvbWFpbnZhbHNoYTJnMjAdBgNVHQ4EFgQUsWoN | ||
+IkHc+WhdtDwGB4pRHYZu+x4wHwYDVR0jBBgwFoAU6k581IAt5RWBhiaMgm3AmKTP | ||
+lw8wDQYJKoZIhvcNAQELBQADggEBADrupN5ncMzXJLUxtIkhZKJUOQByrkVqmlvO | ||
+me3tsAQn2YccC1YPE7wlkMttV8h8JN3/CWlvcSwfncXPzDF4lV7tuunapmAJLTxz | ||
+Iz4tCIMzKVaGaivxYe9dml9LtiicsAOo29ZGE4E+mTHXR0EBjylKn4RS5f6XLawC | ||
+wvdzYEH6nw6XbD6PlvYjZekIcky1lZ99cqsBoYiht0PQEcj8LWcBW79o1UWYEaXv | ||
+q8b47QhFYMQ+IKwfIo3PSWjotIBw35lnrfKlrWvqyRA5t+ollH+6X1vdYOibupts | ||
+rUdXZCfeWcwhFiJVOrq7kxpQLNZsPq8nm55Ao2tRGsrDMwsuZhc= | ||
+-----END CERTIFICATE----- |
@@ -0,0 +1,21 @@ | ||
+flags: | ||
+ pandoc: | ||
+ trypandoc: false | ||
+ https: true | ||
+ embed_data_files: true | ||
+ old-locale: false | ||
+ network-uri: true | ||
+ pandoc-citeproc: | ||
+ bibutils: true | ||
+ embed_data_files: true | ||
+ unicode_collation: false | ||
+ test_citeproc: false | ||
+ debug: false | ||
+packages: | ||
+- '..' | ||
+- 'https://hackage.haskell.org/package/pandoc-citeproc-0.9.1.1/pandoc-citeproc-0.9.1.1.tar.gz' | ||
+extra-deps: | ||
+- 'aeson-0.11.1.1' | ||
+- 'texmath-0.8.5' | ||
+- 'highlighting-kate-0.6.2' | ||
+resolver: lts-5.8 |
@@ -0,0 +1,9 @@ | ||
+-- Extract changes from latest version in changelog. | ||
+import Text.Pandoc.JSON | ||
+ | ||
+main = toJSONFilter extractFirst | ||
+ | ||
+extractFirst :: Pandoc -> Pandoc | ||
+extractFirst (Pandoc meta (Para{} : BulletList bs : _)) = | ||
+ Pandoc meta [BulletList bs] | ||
+extractFirst x = x |
@@ -0,0 +1,17 @@ | ||
+{-# LANGUAGE CPP #-} | ||
+module Text.Pandoc.Compat.Monoid ( (<>) ) | ||
+ where | ||
+ | ||
+#if MIN_VERSION_base(4,5,0) | ||
+import Data.Monoid ((<>)) | ||
+ | ||
+#else | ||
+import Data.Monoid | ||
+ | ||
+infixr 6 <> | ||
+ | ||
+--- | An infix synonym for 'mappend'. | ||
+(<>) :: Monoid m => m -> m -> m | ||
+(<>) = mappend | ||
+{-# INLINE (<>) #-} | ||
+#endif |
@@ -0,0 +1,906 @@ | ||
+{- | ||
+Copyright (C) 2015 John MacFarlane <jgm@berkeley.edu> | ||
+ | ||
+This program is free software; you can redistribute it and/or modify | ||
+it under the terms of the GNU General Public License as published by | ||
+the Free Software Foundation; either version 2 of the License, or | ||
+(at your option) any later version. | ||
+ | ||
+This program is distributed in the hope that it will be useful, | ||
+but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
+GNU General Public License for more details. | ||
+ | ||
+You should have received a copy of the GNU General Public License | ||
+along with this program; if not, write to the Free Software | ||
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
+-} | ||
+ | ||
+{- | | ||
+ Module : Text.Pandoc.Emoji | ||
+ Copyright : Copyright (C) 2015 John MacFarlane | ||
+ License : GNU GPL, version 2 or above | ||
+ | ||
+ Maintainer : John MacFarlane <jgm@berkeley.edu> | ||
+ Stability : alpha | ||
+ Portability : portable | ||
+ | ||
+Emoji symbol lookup from canonical string identifier. | ||
+-} | ||
+module Text.Pandoc.Emoji ( emojis ) where | ||
+import qualified Data.Map as M | ||
+ | ||
+emojis :: M.Map String String | ||
+emojis = M.fromList | ||
+ [("+1","\128077") | ||
+ ,("-1","\128078") | ||
+ ,("100","\128175") | ||
+ ,("1234","\128290") | ||
+ ,("8ball","\127921") | ||
+ ,("a","\127344\65039") | ||
+ ,("ab","\127374") | ||
+ ,("abc","\128292") | ||
+ ,("abcd","\128289") | ||
+ ,("accept","\127569") | ||
+ ,("aerial_tramway","\128673") | ||
+ ,("airplane","\9992\65039") | ||
+ ,("alarm_clock","\9200") | ||
+ ,("alien","\128125") | ||
+ ,("ambulance","\128657") | ||
+ ,("anchor","\9875") | ||
+ ,("angel","\128124") | ||
+ ,("anger","\128162") | ||
+ ,("angry","\128544") | ||
+ ,("anguished","\128551") | ||
+ ,("ant","\128028") | ||
+ ,("apple","\127822") | ||
+ ,("aquarius","\9810") | ||
+ ,("aries","\9800") | ||
+ ,("arrow_backward","\9664\65039") | ||
+ ,("arrow_double_down","\9196") | ||
+ ,("arrow_double_up","\9195") | ||
+ ,("arrow_down","\11015\65039") | ||
+ ,("arrow_down_small","\128317") | ||
+ ,("arrow_forward","\9654\65039") | ||
+ ,("arrow_heading_down","\10549\65039") | ||
+ ,("arrow_heading_up","\10548\65039") | ||
+ ,("arrow_left","\11013\65039") | ||
+ ,("arrow_lower_left","\8601\65039") | ||
+ ,("arrow_lower_right","\8600\65039") | ||
+ ,("arrow_right","\10145\65039") | ||
+ ,("arrow_right_hook","\8618\65039") | ||
+ ,("arrow_up","\11014\65039") | ||
+ ,("arrow_up_down","\8597\65039") | ||
+ ,("arrow_up_small","\128316") | ||
+ ,("arrow_upper_left","\8598\65039") | ||
+ ,("arrow_upper_right","\8599\65039") | ||
+ ,("arrows_clockwise","\128259") | ||
+ ,("arrows_counterclockwise","\128260") | ||
+ ,("art","\127912") | ||
+ ,("articulated_lorry","\128667") | ||
+ ,("astonished","\128562") | ||
+ ,("athletic_shoe","\128095") | ||
+ ,("atm","\127975") | ||
+ ,("b","\127345\65039") | ||
+ ,("baby","\128118") | ||
+ ,("baby_bottle","\127868") | ||
+ ,("baby_chick","\128036") | ||
+ ,("baby_symbol","\128700") | ||
+ ,("back","\128281") | ||
+ ,("baggage_claim","\128708") | ||
+ ,("balloon","\127880") | ||
+ ,("ballot_box_with_check","\9745\65039") | ||
+ ,("bamboo","\127885") | ||
+ ,("banana","\127820") | ||
+ ,("bangbang","\8252\65039") | ||
+ ,("bank","\127974") | ||
+ ,("bar_chart","\128202") | ||
+ ,("barber","\128136") | ||
+ ,("baseball","\9918\65039") | ||
+ ,("basketball","\127936") | ||
+ ,("bath","\128704") | ||
+ ,("bathtub","\128705") | ||
+ ,("battery","\128267") | ||
+ ,("bear","\128059") | ||
+ ,("bee","\128029") | ||
+ ,("beer","\127866") | ||
+ ,("beers","\127867") | ||
+ ,("beetle","\128030") | ||
+ ,("beginner","\128304") | ||
+ ,("bell","\128276") | ||
+ ,("bento","\127857") | ||
+ ,("bicyclist","\128692") | ||
+ ,("bike","\128690") | ||
+ ,("bikini","\128089") | ||
+ ,("bird","\128038") | ||
+ ,("birthday","\127874") | ||
+ ,("black_circle","\9899") | ||
+ ,("black_joker","\127183") | ||
+ ,("black_large_square","\11035") | ||
+ ,("black_medium_small_square","\9726") | ||
+ ,("black_medium_square","\9724\65039") | ||
+ ,("black_nib","\10002\65039") | ||
+ ,("black_small_square","\9642\65039") | ||
+ ,("black_square_button","\128306") | ||
+ ,("blossom","\127804") | ||
+ ,("blowfish","\128033") | ||
+ ,("blue_book","\128216") | ||
+ ,("blue_car","\128665") | ||
+ ,("blue_heart","\128153") | ||
+ ,("blush","\128522") | ||
+ ,("boar","\128023") | ||
+ ,("boat","\9973") | ||
+ ,("bomb","\128163") | ||
+ ,("book","\128214") | ||
+ ,("bookmark","\128278") | ||
+ ,("bookmark_tabs","\128209") | ||
+ ,("books","\128218") | ||
+ ,("boom","\128165") | ||
+ ,("boot","\128098") | ||
+ ,("bouquet","\128144") | ||
+ ,("bow","\128583") | ||
+ ,("bowling","\127923") | ||
+ ,("boy","\128102") | ||
+ ,("bread","\127838") | ||
+ ,("bride_with_veil","\128112") | ||
+ ,("bridge_at_night","\127753") | ||
+ ,("briefcase","\128188") | ||
+ ,("broken_heart","\128148") | ||
+ ,("bug","\128027") | ||
+ ,("bulb","\128161") | ||
+ ,("bullettrain_front","\128645") | ||
+ ,("bullettrain_side","\128644") | ||
+ ,("bus","\128652") | ||
+ ,("busstop","\128655") | ||
+ ,("bust_in_silhouette","\128100") | ||
+ ,("busts_in_silhouette","\128101") | ||
+ ,("cactus","\127797") | ||
+ ,("cake","\127856") | ||
+ ,("calendar","\128198") | ||
+ ,("calling","\128242") | ||
+ ,("camel","\128043") | ||
+ ,("camera","\128247") | ||
+ ,("cancer","\9803") | ||
+ ,("candy","\127852") | ||
+ ,("capital_abcd","\128288") | ||
+ ,("capricorn","\9809") | ||
+ ,("car","\128663") | ||
+ ,("card_index","\128199") | ||
+ ,("carousel_horse","\127904") | ||
+ ,("cat","\128049") | ||
+ ,("cat2","\128008") | ||
+ ,("cd","\128191") | ||
+ ,("chart","\128185") | ||
+ ,("chart_with_downwards_trend","\128201") | ||
+ ,("chart_with_upwards_trend","\128200") | ||
+ ,("checkered_flag","\127937") | ||
+ ,("cherries","\127826") | ||
+ ,("cherry_blossom","\127800") | ||
+ ,("chestnut","\127792") | ||
+ ,("chicken","\128020") | ||
+ ,("children_crossing","\128696") | ||
+ ,("chocolate_bar","\127851") | ||
+ ,("christmas_tree","\127876") | ||
+ ,("church","\9962") | ||
+ ,("cinema","\127910") | ||
+ ,("circus_tent","\127914") | ||
+ ,("city_sunrise","\127751") | ||
+ ,("city_sunset","\127750") | ||
+ ,("cl","\127377") | ||
+ ,("clap","\128079") | ||
+ ,("clapper","\127916") | ||
+ ,("clipboard","\128203") | ||
+ ,("clock1","\128336") | ||
+ ,("clock10","\128345") | ||
+ ,("clock1030","\128357") | ||
+ ,("clock11","\128346") | ||
+ ,("clock1130","\128358") | ||
+ ,("clock12","\128347") | ||
+ ,("clock1230","\128359") | ||
+ ,("clock130","\128348") | ||
+ ,("clock2","\128337") | ||
+ ,("clock230","\128349") | ||
+ ,("clock3","\128338") | ||
+ ,("clock330","\128350") | ||
+ ,("clock4","\128339") | ||
+ ,("clock430","\128351") | ||
+ ,("clock5","\128340") | ||
+ ,("clock530","\128352") | ||
+ ,("clock6","\128341") | ||
+ ,("clock630","\128353") | ||
+ ,("clock7","\128342") | ||
+ ,("clock730","\128354") | ||
+ ,("clock8","\128343") | ||
+ ,("clock830","\128355") | ||
+ ,("clock9","\128344") | ||
+ ,("clock930","\128356") | ||
+ ,("closed_book","\128213") | ||
+ ,("closed_lock_with_key","\128272") | ||
+ ,("closed_umbrella","\127746") | ||
+ ,("cloud","\9729\65039") | ||
+ ,("clubs","\9827\65039") | ||
+ ,("cn","\127464\127475") | ||
+ ,("cocktail","\127864") | ||
+ ,("coffee","\9749") | ||
+ ,("cold_sweat","\128560") | ||
+ ,("collision","\128165") | ||
+ ,("computer","\128187") | ||
+ ,("confetti_ball","\127882") | ||
+ ,("confounded","\128534") | ||
+ ,("confused","\128533") | ||
+ ,("congratulations","\12951\65039") | ||
+ ,("construction","\128679") | ||
+ ,("construction_worker","\128119") | ||
+ ,("convenience_store","\127978") | ||
+ ,("cookie","\127850") | ||
+ ,("cool","\127378") | ||
+ ,("cop","\128110") | ||
+ ,("copyright","\169\65039") | ||
+ ,("corn","\127805") | ||
+ ,("couple","\128107") | ||
+ ,("couple_with_heart","\128145") | ||
+ ,("couplekiss","\128143") | ||
+ ,("cow","\128046") | ||
+ ,("cow2","\128004") | ||
+ ,("credit_card","\128179") | ||
+ ,("crescent_moon","\127769") | ||
+ ,("crocodile","\128010") | ||
+ ,("crossed_flags","\127884") | ||
+ ,("crown","\128081") | ||
+ ,("cry","\128546") | ||
+ ,("crying_cat_face","\128575") | ||
+ ,("crystal_ball","\128302") | ||
+ ,("cupid","\128152") | ||
+ ,("curly_loop","\10160") | ||
+ ,("currency_exchange","\128177") | ||
+ ,("curry","\127835") | ||
+ ,("custard","\127854") | ||
+ ,("customs","\128707") | ||
+ ,("cyclone","\127744") | ||
+ ,("dancer","\128131") | ||
+ ,("dancers","\128111") | ||
+ ,("dango","\127841") | ||
+ ,("dart","\127919") | ||
+ ,("dash","\128168") | ||
+ ,("date","\128197") | ||
+ ,("de","\127465\127466") | ||
+ ,("deciduous_tree","\127795") | ||
+ ,("department_store","\127980") | ||
+ ,("diamond_shape_with_a_dot_inside","\128160") | ||
+ ,("diamonds","\9830\65039") | ||
+ ,("disappointed","\128542") | ||
+ ,("disappointed_relieved","\128549") | ||
+ ,("dizzy","\128171") | ||
+ ,("dizzy_face","\128565") | ||
+ ,("do_not_litter","\128687") | ||
+ ,("dog","\128054") | ||
+ ,("dog2","\128021") | ||
+ ,("dollar","\128181") | ||
+ ,("dolls","\127886") | ||
+ ,("dolphin","\128044") | ||
+ ,("door","\128682") | ||
+ ,("doughnut","\127849") | ||
+ ,("dragon","\128009") | ||
+ ,("dragon_face","\128050") | ||
+ ,("dress","\128087") | ||
+ ,("dromedary_camel","\128042") | ||
+ ,("droplet","\128167") | ||
+ ,("dvd","\128192") | ||
+ ,("e-mail","\128231") | ||
+ ,("ear","\128066") | ||
+ ,("ear_of_rice","\127806") | ||
+ ,("earth_africa","\127757") | ||
+ ,("earth_americas","\127758") | ||
+ ,("earth_asia","\127759") | ||
+ ,("egg","\127859") | ||
+ ,("eggplant","\127814") | ||
+ ,("eight","8\65039\8419") | ||
+ ,("eight_pointed_black_star","\10036\65039") | ||
+ ,("eight_spoked_asterisk","\10035\65039") | ||
+ ,("electric_plug","\128268") | ||
+ ,("elephant","\128024") | ||
+ ,("email","\9993\65039") | ||
+ ,("end","\128282") | ||
+ ,("envelope","\9993\65039") | ||
+ ,("envelope_with_arrow","\128233") | ||
+ ,("es","\127466\127480") | ||
+ ,("euro","\128182") | ||
+ ,("european_castle","\127984") | ||
+ ,("european_post_office","\127972") | ||
+ ,("evergreen_tree","\127794") | ||
+ ,("exclamation","\10071") | ||
+ ,("expressionless","\128529") | ||
+ ,("eyeglasses","\128083") | ||
+ ,("eyes","\128064") | ||
+ ,("facepunch","\128074") | ||
+ ,("factory","\127981") | ||
+ ,("fallen_leaf","\127810") | ||
+ ,("family","\128106") | ||
+ ,("fast_forward","\9193") | ||
+ ,("fax","\128224") | ||
+ ,("fearful","\128552") | ||
+ ,("feet","\128062") | ||
+ ,("ferris_wheel","\127905") | ||
+ ,("file_folder","\128193") | ||
+ ,("fire","\128293") | ||
+ ,("fire_engine","\128658") | ||
+ ,("fireworks","\127878") | ||
+ ,("first_quarter_moon","\127763") | ||
+ ,("first_quarter_moon_with_face","\127771") | ||
+ ,("fish","\128031") | ||
+ ,("fish_cake","\127845") | ||
+ ,("fishing_pole_and_fish","\127907") | ||
+ ,("fist","\9994") | ||
+ ,("five","5\65039\8419") | ||
+ ,("flags","\127887") | ||
+ ,("flashlight","\128294") | ||
+ ,("flipper","\128044") | ||
+ ,("floppy_disk","\128190") | ||
+ ,("flower_playing_cards","\127924") | ||
+ ,("flushed","\128563") | ||
+ ,("foggy","\127745") | ||
+ ,("football","\127944") | ||
+ ,("footprints","\128099") | ||
+ ,("fork_and_knife","\127860") | ||
+ ,("fountain","\9970") | ||
+ ,("four","4\65039\8419") | ||
+ ,("four_leaf_clover","\127808") | ||
+ ,("fr","\127467\127479") | ||
+ ,("free","\127379") | ||
+ ,("fried_shrimp","\127844") | ||
+ ,("fries","\127839") | ||
+ ,("frog","\128056") | ||
+ ,("frowning","\128550") | ||
+ ,("fuelpump","\9981") | ||
+ ,("full_moon","\127765") | ||
+ ,("full_moon_with_face","\127773") | ||
+ ,("game_die","\127922") | ||
+ ,("gb","\127468\127463") | ||
+ ,("gem","\128142") | ||
+ ,("gemini","\9802") | ||
+ ,("ghost","\128123") | ||
+ ,("gift","\127873") | ||
+ ,("gift_heart","\128157") | ||
+ ,("girl","\128103") | ||
+ ,("globe_with_meridians","\127760") | ||
+ ,("goat","\128016") | ||
+ ,("golf","\9971") | ||
+ ,("grapes","\127815") | ||
+ ,("green_apple","\127823") | ||
+ ,("green_book","\128215") | ||
+ ,("green_heart","\128154") | ||
+ ,("grey_exclamation","\10069") | ||
+ ,("grey_question","\10068") | ||
+ ,("grimacing","\128556") | ||
+ ,("grin","\128513") | ||
+ ,("grinning","\128512") | ||
+ ,("guardsman","\128130") | ||
+ ,("guitar","\127928") | ||
+ ,("gun","\128299") | ||
+ ,("haircut","\128135") | ||
+ ,("hamburger","\127828") | ||
+ ,("hammer","\128296") | ||
+ ,("hamster","\128057") | ||
+ ,("hand","\9995") | ||
+ ,("handbag","\128092") | ||
+ ,("hankey","\128169") | ||
+ ,("hash","#\65039\8419") | ||
+ ,("hatched_chick","\128037") | ||
+ ,("hatching_chick","\128035") | ||
+ ,("headphones","\127911") | ||
+ ,("hear_no_evil","\128585") | ||
+ ,("heart","\10084\65039") | ||
+ ,("heart_decoration","\128159") | ||
+ ,("heart_eyes","\128525") | ||
+ ,("heart_eyes_cat","\128571") | ||
+ ,("heartbeat","\128147") | ||
+ ,("heartpulse","\128151") | ||
+ ,("hearts","\9829\65039") | ||
+ ,("heavy_check_mark","\10004\65039") | ||
+ ,("heavy_division_sign","\10135") | ||
+ ,("heavy_dollar_sign","\128178") | ||
+ ,("heavy_exclamation_mark","\10071") | ||
+ ,("heavy_minus_sign","\10134") | ||
+ ,("heavy_multiplication_x","\10006\65039") | ||
+ ,("heavy_plus_sign","\10133") | ||
+ ,("helicopter","\128641") | ||
+ ,("herb","\127807") | ||
+ ,("hibiscus","\127802") | ||
+ ,("high_brightness","\128262") | ||
+ ,("high_heel","\128096") | ||
+ ,("hocho","\128298") | ||
+ ,("honey_pot","\127855") | ||
+ ,("honeybee","\128029") | ||
+ ,("horse","\128052") | ||
+ ,("horse_racing","\127943") | ||
+ ,("hospital","\127973") | ||
+ ,("hotel","\127976") | ||
+ ,("hotsprings","\9832\65039") | ||
+ ,("hourglass","\8987") | ||
+ ,("hourglass_flowing_sand","\9203") | ||
+ ,("house","\127968") | ||
+ ,("house_with_garden","\127969") | ||
+ ,("hushed","\128559") | ||
+ ,("ice_cream","\127848") | ||
+ ,("icecream","\127846") | ||
+ ,("id","\127380") | ||
+ ,("ideograph_advantage","\127568") | ||
+ ,("imp","\128127") | ||
+ ,("inbox_tray","\128229") | ||
+ ,("incoming_envelope","\128232") | ||
+ ,("information_desk_person","\128129") | ||
+ ,("information_source","\8505\65039") | ||
+ ,("innocent","\128519") | ||
+ ,("interrobang","\8265\65039") | ||
+ ,("iphone","\128241") | ||
+ ,("it","\127470\127481") | ||
+ ,("izakaya_lantern","\127982") | ||
+ ,("jack_o_lantern","\127875") | ||
+ ,("japan","\128510") | ||
+ ,("japanese_castle","\127983") | ||
+ ,("japanese_goblin","\128122") | ||
+ ,("japanese_ogre","\128121") | ||
+ ,("jeans","\128086") | ||
+ ,("joy","\128514") | ||
+ ,("joy_cat","\128569") | ||
+ ,("jp","\127471\127477") | ||
+ ,("key","\128273") | ||
+ ,("keycap_ten","\128287") | ||
+ ,("kimono","\128088") | ||
+ ,("kiss","\128139") | ||
+ ,("kissing","\128535") | ||
+ ,("kissing_cat","\128573") | ||
+ ,("kissing_closed_eyes","\128538") | ||
+ ,("kissing_heart","\128536") | ||
+ ,("kissing_smiling_eyes","\128537") | ||
+ ,("knife","\128298") | ||
+ ,("koala","\128040") | ||
+ ,("koko","\127489") | ||
+ ,("kr","\127472\127479") | ||
+ ,("lantern","\127982") | ||
+ ,("large_blue_circle","\128309") | ||
+ ,("large_blue_diamond","\128311") | ||
+ ,("large_orange_diamond","\128310") | ||
+ ,("last_quarter_moon","\127767") | ||
+ ,("last_quarter_moon_with_face","\127772") | ||
+ ,("laughing","\128518") | ||
+ ,("leaves","\127811") | ||
+ ,("ledger","\128210") | ||
+ ,("left_luggage","\128709") | ||
+ ,("left_right_arrow","\8596\65039") | ||
+ ,("leftwards_arrow_with_hook","\8617\65039") | ||
+ ,("lemon","\127819") | ||
+ ,("leo","\9804") | ||
+ ,("leopard","\128006") | ||
+ ,("libra","\9806") | ||
+ ,("light_rail","\128648") | ||
+ ,("link","\128279") | ||
+ ,("lips","\128068") | ||
+ ,("lipstick","\128132") | ||
+ ,("lock","\128274") | ||
+ ,("lock_with_ink_pen","\128271") | ||
+ ,("lollipop","\127853") | ||
+ ,("loop","\10175") | ||
+ ,("loud_sound","\128266") | ||
+ ,("loudspeaker","\128226") | ||
+ ,("love_hotel","\127977") | ||
+ ,("love_letter","\128140") | ||
+ ,("low_brightness","\128261") | ||
+ ,("m","\9410\65039") | ||
+ ,("mag","\128269") | ||
+ ,("mag_right","\128270") | ||
+ ,("mahjong","\126980") | ||
+ ,("mailbox","\128235") | ||
+ ,("mailbox_closed","\128234") | ||
+ ,("mailbox_with_mail","\128236") | ||
+ ,("mailbox_with_no_mail","\128237") | ||
+ ,("man","\128104") | ||
+ ,("man_with_gua_pi_mao","\128114") | ||
+ ,("man_with_turban","\128115") | ||
+ ,("mans_shoe","\128094") | ||
+ ,("maple_leaf","\127809") | ||
+ ,("mask","\128567") | ||
+ ,("massage","\128134") | ||
+ ,("meat_on_bone","\127830") | ||
+ ,("mega","\128227") | ||
+ ,("melon","\127816") | ||
+ ,("memo","\128221") | ||
+ ,("mens","\128697") | ||
+ ,("metro","\128647") | ||
+ ,("microphone","\127908") | ||
+ ,("microscope","\128300") | ||
+ ,("milky_way","\127756") | ||
+ ,("minibus","\128656") | ||
+ ,("minidisc","\128189") | ||
+ ,("mobile_phone_off","\128244") | ||
+ ,("money_with_wings","\128184") | ||
+ ,("moneybag","\128176") | ||
+ ,("monkey","\128018") | ||
+ ,("monkey_face","\128053") | ||
+ ,("monorail","\128669") | ||
+ ,("moon","\127764") | ||
+ ,("mortar_board","\127891") | ||
+ ,("mount_fuji","\128507") | ||
+ ,("mountain_bicyclist","\128693") | ||
+ ,("mountain_cableway","\128672") | ||
+ ,("mountain_railway","\128670") | ||
+ ,("mouse","\128045") | ||
+ ,("mouse2","\128001") | ||
+ ,("movie_camera","\127909") | ||
+ ,("moyai","\128511") | ||
+ ,("muscle","\128170") | ||
+ ,("mushroom","\127812") | ||
+ ,("musical_keyboard","\127929") | ||
+ ,("musical_note","\127925") | ||
+ ,("musical_score","\127932") | ||
+ ,("mute","\128263") | ||
+ ,("nail_care","\128133") | ||
+ ,("name_badge","\128219") | ||
+ ,("necktie","\128084") | ||
+ ,("negative_squared_cross_mark","\10062") | ||
+ ,("neutral_face","\128528") | ||
+ ,("new","\127381") | ||
+ ,("new_moon","\127761") | ||
+ ,("new_moon_with_face","\127770") | ||
+ ,("newspaper","\128240") | ||
+ ,("ng","\127382") | ||
+ ,("night_with_stars","\127747") | ||
+ ,("nine","9\65039\8419") | ||
+ ,("no_bell","\128277") | ||
+ ,("no_bicycles","\128691") | ||
+ ,("no_entry","\9940") | ||
+ ,("no_entry_sign","\128683") | ||
+ ,("no_good","\128581") | ||
+ ,("no_mobile_phones","\128245") | ||
+ ,("no_mouth","\128566") | ||
+ ,("no_pedestrians","\128695") | ||
+ ,("no_smoking","\128685") | ||
+ ,("non-potable_water","\128689") | ||
+ ,("nose","\128067") | ||
+ ,("notebook","\128211") | ||
+ ,("notebook_with_decorative_cover","\128212") | ||
+ ,("notes","\127926") | ||
+ ,("nut_and_bolt","\128297") | ||
+ ,("o","\11093") | ||
+ ,("o2","\127358\65039") | ||
+ ,("ocean","\127754") | ||
+ ,("octopus","\128025") | ||
+ ,("oden","\127842") | ||
+ ,("office","\127970") | ||
+ ,("ok","\127383") | ||
+ ,("ok_hand","\128076") | ||
+ ,("ok_woman","\128582") | ||
+ ,("older_man","\128116") | ||
+ ,("older_woman","\128117") | ||
+ ,("on","\128283") | ||
+ ,("oncoming_automobile","\128664") | ||
+ ,("oncoming_bus","\128653") | ||
+ ,("oncoming_police_car","\128660") | ||
+ ,("oncoming_taxi","\128662") | ||
+ ,("one","1\65039\8419") | ||
+ ,("open_book","\128214") | ||
+ ,("open_file_folder","\128194") | ||
+ ,("open_hands","\128080") | ||
+ ,("open_mouth","\128558") | ||
+ ,("ophiuchus","\9934") | ||
+ ,("orange_book","\128217") | ||
+ ,("outbox_tray","\128228") | ||
+ ,("ox","\128002") | ||
+ ,("package","\128230") | ||
+ ,("page_facing_up","\128196") | ||
+ ,("page_with_curl","\128195") | ||
+ ,("pager","\128223") | ||
+ ,("palm_tree","\127796") | ||
+ ,("panda_face","\128060") | ||
+ ,("paperclip","\128206") | ||
+ ,("parking","\127359\65039") | ||
+ ,("part_alternation_mark","\12349\65039") | ||
+ ,("partly_sunny","\9925") | ||
+ ,("passport_control","\128706") | ||
+ ,("paw_prints","\128062") | ||
+ ,("peach","\127825") | ||
+ ,("pear","\127824") | ||
+ ,("pencil","\128221") | ||
+ ,("pencil2","\9999\65039") | ||
+ ,("penguin","\128039") | ||
+ ,("pensive","\128532") | ||
+ ,("performing_arts","\127917") | ||
+ ,("persevere","\128547") | ||
+ ,("person_frowning","\128589") | ||
+ ,("person_with_blond_hair","\128113") | ||
+ ,("person_with_pouting_face","\128590") | ||
+ ,("phone","\9742\65039") | ||
+ ,("pig","\128055") | ||
+ ,("pig2","\128022") | ||
+ ,("pig_nose","\128061") | ||
+ ,("pill","\128138") | ||
+ ,("pineapple","\127821") | ||
+ ,("pisces","\9811") | ||
+ ,("pizza","\127829") | ||
+ ,("point_down","\128071") | ||
+ ,("point_left","\128072") | ||
+ ,("point_right","\128073") | ||
+ ,("point_up","\9757\65039") | ||
+ ,("point_up_2","\128070") | ||
+ ,("police_car","\128659") | ||
+ ,("poodle","\128041") | ||
+ ,("poop","\128169") | ||
+ ,("post_office","\127971") | ||
+ ,("postal_horn","\128239") | ||
+ ,("postbox","\128238") | ||
+ ,("potable_water","\128688") | ||
+ ,("pouch","\128093") | ||
+ ,("poultry_leg","\127831") | ||
+ ,("pound","\128183") | ||
+ ,("pouting_cat","\128574") | ||
+ ,("pray","\128591") | ||
+ ,("princess","\128120") | ||
+ ,("punch","\128074") | ||
+ ,("purple_heart","\128156") | ||
+ ,("purse","\128091") | ||
+ ,("pushpin","\128204") | ||
+ ,("put_litter_in_its_place","\128686") | ||
+ ,("question","\10067") | ||
+ ,("rabbit","\128048") | ||
+ ,("rabbit2","\128007") | ||
+ ,("racehorse","\128014") | ||
+ ,("radio","\128251") | ||
+ ,("radio_button","\128280") | ||
+ ,("rage","\128545") | ||
+ ,("railway_car","\128643") | ||
+ ,("rainbow","\127752") | ||
+ ,("raised_hand","\9995") | ||
+ ,("raised_hands","\128588") | ||
+ ,("raising_hand","\128587") | ||
+ ,("ram","\128015") | ||
+ ,("ramen","\127836") | ||
+ ,("rat","\128000") | ||
+ ,("recycle","\9851\65039") | ||
+ ,("red_car","\128663") | ||
+ ,("red_circle","\128308") | ||
+ ,("registered","\174\65039") | ||
+ ,("relaxed","\9786\65039") | ||
+ ,("relieved","\128524") | ||
+ ,("repeat","\128257") | ||
+ ,("repeat_one","\128258") | ||
+ ,("restroom","\128699") | ||
+ ,("revolving_hearts","\128158") | ||
+ ,("rewind","\9194") | ||
+ ,("ribbon","\127872") | ||
+ ,("rice","\127834") | ||
+ ,("rice_ball","\127833") | ||
+ ,("rice_cracker","\127832") | ||
+ ,("rice_scene","\127889") | ||
+ ,("ring","\128141") | ||
+ ,("rocket","\128640") | ||
+ ,("roller_coaster","\127906") | ||
+ ,("rooster","\128019") | ||
+ ,("rose","\127801") | ||
+ ,("rotating_light","\128680") | ||
+ ,("round_pushpin","\128205") | ||
+ ,("rowboat","\128675") | ||
+ ,("ru","\127479\127482") | ||
+ ,("rugby_football","\127945") | ||
+ ,("runner","\127939") | ||
+ ,("running","\127939") | ||
+ ,("running_shirt_with_sash","\127933") | ||
+ ,("sa","\127490\65039") | ||
+ ,("sagittarius","\9808") | ||
+ ,("sailboat","\9973") | ||
+ ,("sake","\127862") | ||
+ ,("sandal","\128097") | ||
+ ,("santa","\127877") | ||
+ ,("satellite","\128225") | ||
+ ,("satisfied","\128518") | ||
+ ,("saxophone","\127927") | ||
+ ,("school","\127979") | ||
+ ,("school_satchel","\127890") | ||
+ ,("scissors","\9986\65039") | ||
+ ,("scorpius","\9807") | ||
+ ,("scream","\128561") | ||
+ ,("scream_cat","\128576") | ||
+ ,("scroll","\128220") | ||
+ ,("seat","\128186") | ||
+ ,("secret","\12953\65039") | ||
+ ,("see_no_evil","\128584") | ||
+ ,("seedling","\127793") | ||
+ ,("seven","7\65039\8419") | ||
+ ,("shaved_ice","\127847") | ||
+ ,("sheep","\128017") | ||
+ ,("shell","\128026") | ||
+ ,("ship","\128674") | ||
+ ,("shirt","\128085") | ||
+ ,("shit","\128169") | ||
+ ,("shoe","\128094") | ||
+ ,("shower","\128703") | ||
+ ,("signal_strength","\128246") | ||
+ ,("six","6\65039\8419") | ||
+ ,("six_pointed_star","\128303") | ||
+ ,("ski","\127935") | ||
+ ,("skull","\128128") | ||
+ ,("sleeping","\128564") | ||
+ ,("sleepy","\128554") | ||
+ ,("slot_machine","\127920") | ||
+ ,("small_blue_diamond","\128313") | ||
+ ,("small_orange_diamond","\128312") | ||
+ ,("small_red_triangle","\128314") | ||
+ ,("small_red_triangle_down","\128315") | ||
+ ,("smile","\128516") | ||
+ ,("smile_cat","\128568") | ||
+ ,("smiley","\128515") | ||
+ ,("smiley_cat","\128570") | ||
+ ,("smiling_imp","\128520") | ||
+ ,("smirk","\128527") | ||
+ ,("smirk_cat","\128572") | ||
+ ,("smoking","\128684") | ||
+ ,("snail","\128012") | ||
+ ,("snake","\128013") | ||
+ ,("snowboarder","\127938") | ||
+ ,("snowflake","\10052\65039") | ||
+ ,("snowman","\9924") | ||
+ ,("sob","\128557") | ||
+ ,("soccer","\9917") | ||
+ ,("soon","\128284") | ||
+ ,("sos","\127384") | ||
+ ,("sound","\128265") | ||
+ ,("space_invader","\128126") | ||
+ ,("spades","\9824\65039") | ||
+ ,("spaghetti","\127837") | ||
+ ,("sparkle","\10055\65039") | ||
+ ,("sparkler","\127879") | ||
+ ,("sparkles","\10024") | ||
+ ,("sparkling_heart","\128150") | ||
+ ,("speak_no_evil","\128586") | ||
+ ,("speaker","\128264") | ||
+ ,("speech_balloon","\128172") | ||
+ ,("speedboat","\128676") | ||
+ ,("star","\11088") | ||
+ ,("star2","\127775") | ||
+ ,("stars","\127776") | ||
+ ,("station","\128649") | ||
+ ,("statue_of_liberty","\128509") | ||
+ ,("steam_locomotive","\128642") | ||
+ ,("stew","\127858") | ||
+ ,("straight_ruler","\128207") | ||
+ ,("strawberry","\127827") | ||
+ ,("stuck_out_tongue","\128539") | ||
+ ,("stuck_out_tongue_closed_eyes","\128541") | ||
+ ,("stuck_out_tongue_winking_eye","\128540") | ||
+ ,("sun_with_face","\127774") | ||
+ ,("sunflower","\127803") | ||
+ ,("sunglasses","\128526") | ||
+ ,("sunny","\9728\65039") | ||
+ ,("sunrise","\127749") | ||
+ ,("sunrise_over_mountains","\127748") | ||
+ ,("surfer","\127940") | ||
+ ,("sushi","\127843") | ||
+ ,("suspension_railway","\128671") | ||
+ ,("sweat","\128531") | ||
+ ,("sweat_drops","\128166") | ||
+ ,("sweat_smile","\128517") | ||
+ ,("sweet_potato","\127840") | ||
+ ,("swimmer","\127946") | ||
+ ,("symbols","\128291") | ||
+ ,("syringe","\128137") | ||
+ ,("tada","\127881") | ||
+ ,("tanabata_tree","\127883") | ||
+ ,("tangerine","\127818") | ||
+ ,("taurus","\9801") | ||
+ ,("taxi","\128661") | ||
+ ,("tea","\127861") | ||
+ ,("telephone","\9742\65039") | ||
+ ,("telephone_receiver","\128222") | ||
+ ,("telescope","\128301") | ||
+ ,("tennis","\127934") | ||
+ ,("tent","\9978") | ||
+ ,("thought_balloon","\128173") | ||
+ ,("three","3\65039\8419") | ||
+ ,("thumbsdown","\128078") | ||
+ ,("thumbsup","\128077") | ||
+ ,("ticket","\127915") | ||
+ ,("tiger","\128047") | ||
+ ,("tiger2","\128005") | ||
+ ,("tired_face","\128555") | ||
+ ,("tm","\8482\65039") | ||
+ ,("toilet","\128701") | ||
+ ,("tokyo_tower","\128508") | ||
+ ,("tomato","\127813") | ||
+ ,("tongue","\128069") | ||
+ ,("top","\128285") | ||
+ ,("tophat","\127913") | ||
+ ,("tractor","\128668") | ||
+ ,("traffic_light","\128677") | ||
+ ,("train","\128651") | ||
+ ,("train2","\128646") | ||
+ ,("tram","\128650") | ||
+ ,("triangular_flag_on_post","\128681") | ||
+ ,("triangular_ruler","\128208") | ||
+ ,("trident","\128305") | ||
+ ,("triumph","\128548") | ||
+ ,("trolleybus","\128654") | ||
+ ,("trophy","\127942") | ||
+ ,("tropical_drink","\127865") | ||
+ ,("tropical_fish","\128032") | ||
+ ,("truck","\128666") | ||
+ ,("trumpet","\127930") | ||
+ ,("tshirt","\128085") | ||
+ ,("tulip","\127799") | ||
+ ,("turtle","\128034") | ||
+ ,("tv","\128250") | ||
+ ,("twisted_rightwards_arrows","\128256") | ||
+ ,("two","2\65039\8419") | ||
+ ,("two_hearts","\128149") | ||
+ ,("two_men_holding_hands","\128108") | ||
+ ,("two_women_holding_hands","\128109") | ||
+ ,("u5272","\127545") | ||
+ ,("u5408","\127540") | ||
+ ,("u55b6","\127546") | ||
+ ,("u6307","\127535") | ||
+ ,("u6708","\127543\65039") | ||
+ ,("u6709","\127542") | ||
+ ,("u6e80","\127541") | ||
+ ,("u7121","\127514") | ||
+ ,("u7533","\127544") | ||
+ ,("u7981","\127538") | ||
+ ,("u7a7a","\127539") | ||
+ ,("uk","\127468\127463") | ||
+ ,("umbrella","\9748") | ||
+ ,("unamused","\128530") | ||
+ ,("underage","\128286") | ||
+ ,("unlock","\128275") | ||
+ ,("up","\127385") | ||
+ ,("us","\127482\127480") | ||
+ ,("v","\9996\65039") | ||
+ ,("vertical_traffic_light","\128678") | ||
+ ,("vhs","\128252") | ||
+ ,("vibration_mode","\128243") | ||
+ ,("video_camera","\128249") | ||
+ ,("video_game","\127918") | ||
+ ,("violin","\127931") | ||
+ ,("virgo","\9805") | ||
+ ,("volcano","\127755") | ||
+ ,("vs","\127386") | ||
+ ,("walking","\128694") | ||
+ ,("waning_crescent_moon","\127768") | ||
+ ,("waning_gibbous_moon","\127766") | ||
+ ,("warning","\9888\65039") | ||
+ ,("watch","\8986") | ||
+ ,("water_buffalo","\128003") | ||
+ ,("watermelon","\127817") | ||
+ ,("wave","\128075") | ||
+ ,("wavy_dash","\12336\65039") | ||
+ ,("waxing_crescent_moon","\127762") | ||
+ ,("waxing_gibbous_moon","\127764") | ||
+ ,("wc","\128702") | ||
+ ,("weary","\128553") | ||
+ ,("wedding","\128146") | ||
+ ,("whale","\128051") | ||
+ ,("whale2","\128011") | ||
+ ,("wheelchair","\9855") | ||
+ ,("white_check_mark","\9989") | ||
+ ,("white_circle","\9898") | ||
+ ,("white_flower","\128174") | ||
+ ,("white_large_square","\11036") | ||
+ ,("white_medium_small_square","\9725") | ||
+ ,("white_medium_square","\9723\65039") | ||
+ ,("white_small_square","\9643\65039") | ||
+ ,("white_square_button","\128307") | ||
+ ,("wind_chime","\127888") | ||
+ ,("wine_glass","\127863") | ||
+ ,("wink","\128521") | ||
+ ,("wolf","\128058") | ||
+ ,("woman","\128105") | ||
+ ,("womans_clothes","\128090") | ||
+ ,("womans_hat","\128082") | ||
+ ,("womens","\128698") | ||
+ ,("worried","\128543") | ||
+ ,("wrench","\128295") | ||
+ ,("x","\10060") | ||
+ ,("yellow_heart","\128155") | ||
+ ,("yen","\128180") | ||
+ ,("yum","\128523") | ||
+ ,("zap","\9889") | ||
+ ,("zero","0\65039\8419") | ||
+ ,("zzz","\128164") | ||
+ ] | ||
+ |
@@ -0,0 +1,154 @@ | ||
+{-# LANGUAGE TypeSynonymInstances, FlexibleInstances, | ||
+ PatternGuards #-} | ||
+ | ||
+module Text.Pandoc.Readers.Docx.Combine ( smushInlines | ||
+ , smushBlocks | ||
+ ) | ||
+ where | ||
+ | ||
+import Text.Pandoc.Builder | ||
+import Data.List | ||
+import Data.Sequence (ViewR(..), ViewL(..), viewl, viewr, (><), (|>)) | ||
+import qualified Data.Sequence as Seq (null) | ||
+ | ||
+data Modifier a = Modifier (a -> a) | ||
+ | AttrModifier (Attr -> a -> a) Attr | ||
+ | NullModifier | ||
+ | ||
+spaceOutInlinesL :: Inlines -> (Inlines, Inlines) | ||
+spaceOutInlinesL ms = (l, stackInlines fs (m' <> r)) | ||
+ where (l, m, r) = spaceOutInlines ms | ||
+ (fs, m') = unstackInlines m | ||
+ | ||
+spaceOutInlinesR :: Inlines -> (Inlines, Inlines) | ||
+spaceOutInlinesR ms = (stackInlines fs (l <> m'), r) | ||
+ where (l, m, r) = spaceOutInlines ms | ||
+ (fs, m') = unstackInlines m | ||
+ | ||
+spaceOutInlines :: Inlines -> (Inlines, Inlines, Inlines) | ||
+spaceOutInlines ils = | ||
+ let (fs, ils') = unstackInlines ils | ||
+ contents = unMany ils' | ||
+ left = case viewl contents of | ||
+ (Space :< _) -> space | ||
+ _ -> mempty | ||
+ right = case viewr contents of | ||
+ (_ :> Space) -> space | ||
+ _ -> mempty in | ||
+ (left, (stackInlines fs $ trimInlines . Many $ contents), right) | ||
+ | ||
+stackInlines :: [Modifier Inlines] -> Inlines -> Inlines | ||
+stackInlines [] ms = ms | ||
+stackInlines (NullModifier : fs) ms = stackInlines fs ms | ||
+stackInlines ((Modifier f) : fs) ms = | ||
+ if isEmpty ms | ||
+ then stackInlines fs ms | ||
+ else f $ stackInlines fs ms | ||
+stackInlines ((AttrModifier f attr) : fs) ms = f attr $ stackInlines fs ms | ||
+ | ||
+unstackInlines :: Inlines -> ([Modifier Inlines], Inlines) | ||
+unstackInlines ms = case ilModifier ms of | ||
+ NullModifier -> ([], ms) | ||
+ _ -> (f : fs, ms') where | ||
+ f = ilModifier ms | ||
+ (fs, ms') = unstackInlines $ ilInnards ms | ||
+ | ||
+ilModifier :: Inlines -> Modifier Inlines | ||
+ilModifier ils = case viewl (unMany ils) of | ||
+ (x :< xs) | Seq.null xs -> case x of | ||
+ (Emph _) -> Modifier emph | ||
+ (Strong _) -> Modifier strong | ||
+ (SmallCaps _) -> Modifier smallcaps | ||
+ (Strikeout _) -> Modifier strikeout | ||
+ (Superscript _) -> Modifier superscript | ||
+ (Subscript _) -> Modifier subscript | ||
+ (Link attr _ tgt) -> Modifier $ linkWith attr (fst tgt) (snd tgt) | ||
+ (Span attr _) -> AttrModifier spanWith attr | ||
+ _ -> NullModifier | ||
+ _ -> NullModifier | ||
+ | ||
+ilInnards :: Inlines -> Inlines | ||
+ilInnards ils = case viewl (unMany ils) of | ||
+ (x :< xs) | Seq.null xs -> case x of | ||
+ (Emph lst) -> fromList lst | ||
+ (Strong lst) -> fromList lst | ||
+ (SmallCaps lst) -> fromList lst | ||
+ (Strikeout lst) -> fromList lst | ||
+ (Superscript lst) -> fromList lst | ||
+ (Subscript lst) -> fromList lst | ||
+ (Link _ lst _) -> fromList lst | ||
+ (Span _ lst) -> fromList lst | ||
+ _ -> ils | ||
+ _ -> ils | ||
+ | ||
+inlinesL :: Inlines -> (Inlines, Inlines) | ||
+inlinesL ils = case viewl $ unMany ils of | ||
+ (s :< sq) -> (singleton s, Many sq) | ||
+ _ -> (mempty, ils) | ||
+ | ||
+inlinesR :: Inlines -> (Inlines, Inlines) | ||
+inlinesR ils = case viewr $ unMany ils of | ||
+ (sq :> s) -> (Many sq, singleton s) | ||
+ _ -> (ils, mempty) | ||
+ | ||
+combineInlines :: Inlines -> Inlines -> Inlines | ||
+combineInlines x y = | ||
+ let (xs', x') = inlinesR x | ||
+ (y', ys') = inlinesL y | ||
+ in | ||
+ xs' <> (combineSingletonInlines x' y') <> ys' | ||
+ | ||
+combineSingletonInlines :: Inlines -> Inlines -> Inlines | ||
+combineSingletonInlines x y = | ||
+ let (xfs, xs) = unstackInlines x | ||
+ (yfs, ys) = unstackInlines y | ||
+ shared = xfs `intersect` yfs | ||
+ x_remaining = xfs \\ shared | ||
+ y_remaining = yfs \\ shared | ||
+ x_rem_attr = filter isAttrModifier x_remaining | ||
+ y_rem_attr = filter isAttrModifier y_remaining | ||
+ in | ||
+ case null shared of | ||
+ True | isEmpty xs && isEmpty ys -> | ||
+ stackInlines (x_rem_attr ++ y_rem_attr) mempty | ||
+ | isEmpty xs -> | ||
+ let (sp, y') = spaceOutInlinesL y in | ||
+ (stackInlines x_rem_attr mempty) <> sp <> y' | ||
+ | isEmpty ys -> | ||
+ let (x', sp) = spaceOutInlinesR x in | ||
+ x' <> sp <> (stackInlines y_rem_attr mempty) | ||
+ | otherwise -> | ||
+ let (x', xsp) = spaceOutInlinesR x | ||
+ (ysp, y') = spaceOutInlinesL y | ||
+ in | ||
+ x' <> xsp <> ysp <> y' | ||
+ False -> stackInlines shared $ | ||
+ combineInlines | ||
+ (stackInlines x_remaining xs) | ||
+ (stackInlines y_remaining ys) | ||
+ | ||
+combineBlocks :: Blocks -> Blocks -> Blocks | ||
+combineBlocks bs cs | ||
+ | bs' :> (BlockQuote bs'') <- viewr (unMany bs) | ||
+ , (BlockQuote cs'') :< cs' <- viewl (unMany cs) = | ||
+ Many $ (bs' |> (BlockQuote (bs'' <> cs''))) >< cs' | ||
+combineBlocks bs cs = bs <> cs | ||
+ | ||
+instance (Monoid a, Eq a) => Eq (Modifier a) where | ||
+ (Modifier f) == (Modifier g) = (f mempty == g mempty) | ||
+ (AttrModifier f attr) == (AttrModifier g attr') = (f attr mempty == g attr' mempty) | ||
+ (NullModifier) == (NullModifier) = True | ||
+ _ == _ = False | ||
+ | ||
+isEmpty :: (Monoid a, Eq a) => a -> Bool | ||
+isEmpty x = x == mempty | ||
+ | ||
+isAttrModifier :: Modifier a -> Bool | ||
+isAttrModifier (AttrModifier _ _) = True | ||
+isAttrModifier _ = False | ||
+ | ||
+smushInlines :: [Inlines] -> Inlines | ||
+smushInlines xs = foldl combineInlines mempty xs | ||
+ | ||
+smushBlocks :: [Blocks] -> Blocks | ||
+smushBlocks xs = foldl combineBlocks mempty xs |
@@ -1,181 +0,0 @@ | ||
-{-# LANGUAGE TypeSynonymInstances, FlexibleInstances, | ||
- PatternGuards #-} | ||
- | ||
-module Text.Pandoc.Readers.Docx.Reducible ( concatReduce | ||
- , (<+>) | ||
- ) | ||
- where | ||
- | ||
- | ||
-import Text.Pandoc.Builder | ||
-import Data.List | ||
-import Data.Sequence (ViewR(..), ViewL(..), viewl, viewr) | ||
-import qualified Data.Sequence as Seq (null) | ||
- | ||
-data Modifier a = Modifier (a -> a) | ||
- | AttrModifier (Attr -> a -> a) Attr | ||
- | NullModifier | ||
- | ||
-class (Eq a) => Modifiable a where | ||
- modifier :: a -> Modifier a | ||
- innards :: a -> a | ||
- getL :: a -> (a, a) | ||
- getR :: a -> (a, a) | ||
- spaceOut :: a -> (a, a, a) | ||
- | ||
-spaceOutL :: (Monoid a, Modifiable a) => a -> (a, a) | ||
-spaceOutL ms = (l, stack fs (m' <> r)) | ||
- where (l, m, r) = spaceOut ms | ||
- (fs, m') = unstack m | ||
- | ||
-spaceOutR :: (Monoid a, Modifiable a) => a -> (a, a) | ||
-spaceOutR ms = (stack fs (l <> m'), r) | ||
- where (l, m, r) = spaceOut ms | ||
- (fs, m') = unstack m | ||
- | ||
-instance (Monoid a, Show a) => Show (Modifier a) where | ||
- show (Modifier f) = show $ f mempty | ||
- show (AttrModifier f attr) = show $ f attr mempty | ||
- show (NullModifier) = "NullModifier" | ||
- | ||
-instance (Monoid a, Eq a) => Eq (Modifier a) where | ||
- (Modifier f) == (Modifier g) = (f mempty == g mempty) | ||
- (AttrModifier f attr) == (AttrModifier g attr') = (f attr mempty == g attr' mempty) | ||
- (NullModifier) == (NullModifier) = True | ||
- _ == _ = False | ||
- | ||
-instance Modifiable Inlines where | ||
- modifier ils = case viewl (unMany ils) of | ||
- (x :< xs) | Seq.null xs -> case x of | ||
- (Emph _) -> Modifier emph | ||
- (Strong _) -> Modifier strong | ||
- (SmallCaps _) -> Modifier smallcaps | ||
- (Strikeout _) -> Modifier strikeout | ||
- (Superscript _) -> Modifier superscript | ||
- (Subscript _) -> Modifier subscript | ||
- (Span attr _) -> AttrModifier spanWith attr | ||
- _ -> NullModifier | ||
- _ -> NullModifier | ||
- | ||
- innards ils = case viewl (unMany ils) of | ||
- (x :< xs) | Seq.null xs -> case x of | ||
- (Emph lst) -> fromList lst | ||
- (Strong lst) -> fromList lst | ||
- (SmallCaps lst) -> fromList lst | ||
- (Strikeout lst) -> fromList lst | ||
- (Superscript lst) -> fromList lst | ||
- (Subscript lst) -> fromList lst | ||
- (Span _ lst) -> fromList lst | ||
- _ -> ils | ||
- _ -> ils | ||
- | ||
- getL ils = case viewl $ unMany ils of | ||
- (s :< sq) -> (singleton s, Many sq) | ||
- _ -> (mempty, ils) | ||
- | ||
- getR ils = case viewr $ unMany ils of | ||
- (sq :> s) -> (Many sq, singleton s) | ||
- _ -> (ils, mempty) | ||
- | ||
- spaceOut ils = | ||
- let (fs, ils') = unstack ils | ||
- contents = unMany ils' | ||
- left = case viewl contents of | ||
- (Space :< _) -> space | ||
- _ -> mempty | ||
- right = case viewr contents of | ||
- (_ :> Space) -> space | ||
- _ -> mempty in | ||
- (left, (stack fs $ trimInlines .Many $ contents), right) | ||
- | ||
-instance Modifiable Blocks where | ||
- modifier blks = case viewl (unMany blks) of | ||
- (x :< xs) | Seq.null xs -> case x of | ||
- (BlockQuote _) -> Modifier blockQuote | ||
- -- (Div attr _) -> AttrModifier divWith attr | ||
- _ -> NullModifier | ||
- _ -> NullModifier | ||
- | ||
- innards blks = case viewl (unMany blks) of | ||
- (x :< xs) | Seq.null xs -> case x of | ||
- (BlockQuote lst) -> fromList lst | ||
- -- (Div attr lst) -> fromList lst | ||
- _ -> blks | ||
- _ -> blks | ||
- | ||
- spaceOut blks = (mempty, blks, mempty) | ||
- | ||
- getL ils = case viewl $ unMany ils of | ||
- (s :< sq) -> (singleton s, Many sq) | ||
- _ -> (mempty, ils) | ||
- | ||
- getR ils = case viewr $ unMany ils of | ||
- (sq :> s) -> (Many sq, singleton s) | ||
- _ -> (ils, mempty) | ||
- | ||
- | ||
-unstack :: (Modifiable a) => a -> ([Modifier a], a) | ||
-unstack ms = case modifier ms of | ||
- NullModifier -> ([], ms) | ||
- _ -> (f : fs, ms') where | ||
- f = modifier ms | ||
- (fs, ms') = unstack $ innards ms | ||
- | ||
-stack :: (Monoid a, Modifiable a) => [Modifier a] -> a -> a | ||
-stack [] ms = ms | ||
-stack (NullModifier : fs) ms = stack fs ms | ||
-stack ((Modifier f) : fs) ms = | ||
- if isEmpty ms | ||
- then stack fs ms | ||
- else f $ stack fs ms | ||
-stack ((AttrModifier f attr) : fs) ms = f attr $ stack fs ms | ||
- | ||
-isEmpty :: (Monoid a, Eq a) => a -> Bool | ||
-isEmpty x = x == mempty | ||
- | ||
- | ||
-combine :: (Monoid a, Modifiable a, Eq a) => a -> a -> a | ||
-combine x y = | ||
- let (xs', x') = getR x | ||
- (y', ys') = getL y | ||
- in | ||
- xs' <> (combineSingleton x' y') <> ys' | ||
- | ||
-isAttrModifier :: Modifier a -> Bool | ||
-isAttrModifier (AttrModifier _ _) = True | ||
-isAttrModifier _ = False | ||
- | ||
-combineSingleton :: (Monoid a, Modifiable a, Eq a) => a -> a -> a | ||
-combineSingleton x y = | ||
- let (xfs, xs) = unstack x | ||
- (yfs, ys) = unstack y | ||
- shared = xfs `intersect` yfs | ||
- x_remaining = xfs \\ shared | ||
- y_remaining = yfs \\ shared | ||
- x_rem_attr = filter isAttrModifier x_remaining | ||
- y_rem_attr = filter isAttrModifier y_remaining | ||
- in | ||
- case null shared of | ||
- True | isEmpty xs && isEmpty ys -> | ||
- stack (x_rem_attr ++ y_rem_attr) mempty | ||
- | isEmpty xs -> | ||
- let (sp, y') = spaceOutL y in | ||
- (stack x_rem_attr mempty) <> sp <> y' | ||
- | isEmpty ys -> | ||
- let (x', sp) = spaceOutR x in | ||
- x' <> sp <> (stack y_rem_attr mempty) | ||
- | otherwise -> | ||
- let (x', xsp) = spaceOutR x | ||
- (ysp, y') = spaceOutL y | ||
- in | ||
- x' <> xsp <> ysp <> y' | ||
- False -> stack shared $ | ||
- combine | ||
- (stack x_remaining xs) | ||
- (stack y_remaining ys) | ||
- | ||
-(<+>) :: (Monoid a, Modifiable a, Eq a) => a -> a -> a | ||
-x <+> y = combine x y | ||
- | ||
-concatReduce :: (Monoid a, Modifiable a) => [a] -> a | ||
-concatReduce xs = foldl combine mempty xs |
Showing you all comments on commits in this comparison.
At the top of the releases page the version number 1.16.0.1 is missing. I'm wondering if it's manually added to that page? Would it be useful to include the release dates here?
Nice !
I just have a question (unrelated to this commit), is there a special argument or a way to prevent the italic on the markdown generated links ? In my docx In-file the links have a regular style but there are all converted with surrounded '*' in the markdown out-file.
The problem is that your file explicitly tells word to underline the hyperlink, and underlines are understood as emphasis. Usually the underline is built into the hyperlink style, so we can ignore it. I could consider ignoring underlines in a hyperlink in general, but that could be tricky. (What if someone changes their hyperlink style, but still wants to use underline for emphasis?) I think this comes out of a problem with the copy-paste job that created the file. Do you have this problem with the file you created from scratch?
Note you could write a pandoc filter to unitalicize links pretty easily. (I could help you with it some other time, but it should be fairly trivial given the procedures outlines in the documentation.)
I tried to do something but I'm stuck with an error.
According to this forum on python filters, "Link" seem to expect 2 arguments but after I tried making this filter for links:
from pandocfilters import toJSONFilter, Link
def linksimple(key, value, format, meta):
if key == 'Link':
return Link(value[0],value[1])
if __name__ == "__main__":
toJSONFilter(linksimple)
It throw me this error:
ValueError: Link expects 3 arguments, but given 2
full detail of the error here:
$ pandoc -s -o sauceFF.odt kbcorrect.odt -F ./ln.py
Traceback (most recent call last):
File "./ln.py", line 15, in <module>
toJSONFilter(linksimple)
File "C:\Users\etudiant\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pandocfilters.py", line 46, in toJSONFilter
toJSONFilters([action])
File "C:\Users\etudiant\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pandocfilters.py", line 76, in toJSONFilters
altered = reduce(lambda x, action: walk(x, action, format, doc[0]['unMeta']), actions, doc)
File "C:\Users\etudiant\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pandocfilters.py", line 76, in <lambda>
altered = reduce(lambda x, action: walk(x, action, format, doc[0]['unMeta']), actions, doc)
File "C:\Users\etudiant\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pandocfilters.py", line 34, in walk
array.append(walk(item, action, format, meta))
File "C:\Users\etudiant\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pandocfilters.py", line 27, in walk
array.append(walk(item, action, format, meta))
File "C:\Users\etudiant\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pandocfilters.py", line 39, in walk
obj[k] = walk(x[k], action, format, meta)
File "C:\Users\etudiant\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pandocfilters.py", line 25, in walk
res = action(item['t'], item['c'], format, meta)
File "./ln.py", line 12, in linksimple
return Link("sauce", [value[0],value[1]])
File "C:\Users\etudiant\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pandocfilters.py", line 119, in fun
+ str(lenargs))
ValueError: Link expects 3 arguments, but given 2
pandoc.exe: Error running filter ./ln.py
Filter returned error status 1
There are three arguments to Link in the newest version of pandoc. I have to admit that I don't know much about the python filters, so there might be a better way to do this, but the below should work. (The only problem with it is that it deals with the JSON directly in one place, which could be a problem if the JSON format changes.) You might be able to get some improvements on the pandoc-discuss list. In any case, it should work for the document you're dealing with.
from pandocfilters import toJSONFilter, Link, Emph
def linksimple(key, value, format, meta):
if key == 'Link':
ils = value[1]
# move the inlines into a variable.
newval = ils
# If there is only one element in the inlines and it has a
# type...
if len(ils) == 1 and "t" in ils[0]:
# And that type is emph
if ils[0]["t"] == "Emph":
# we unwrap the inlines from that emph
newval = ils[0]["c"]
return Link(value[0],newval, value[2])
if __name__ == "__main__":
toJSONFilter(linksimple)
stack complains about the use of aeson-0.11
instead of aeson-0.11.0.0
:
Populated index cache.
Didn't see aeson-0.11 in your package indices.
Updating and trying again.
Updating package index Hackage (mirrored at https://github.co/commercialhaskell
Fetched package index.
Populated index cache.
The following package identifiers were not found in your indices: aeson-0.11
Possible candidates: aeson-0.11.0.0.
But changing stack.yaml to aeson-0.11.0.0
produces unresolvable dependency problems.
FWIW, there are a few typos on lines 16, 147 (Maura), 72 (Raniere), and 63 (divs with).