├── .dockerignore ├── .github └── workflows │ └── test-build.yml ├── .gitignore ├── .mailmap ├── AUTHORS.rst ├── CHANGELOG ├── CONTRIBUTING.rst ├── Dockerfile ├── LICENSE ├── PULL_REQUEST_TEMPLATE.md ├── README-docker-compose.md ├── README.md ├── constraints.txt ├── dev-requirements.txt ├── doc-requirements.txt ├── docs ├── Makefile ├── _templates │ ├── side-primary.html │ └── side-secondary.html ├── _themes │ ├── .gitignore │ ├── LICENSE │ ├── flask_theme_support.py │ ├── kr │ │ ├── layout.html │ │ ├── relations.html │ │ ├── static │ │ │ ├── flasky.css_t │ │ │ └── small_flask.css │ │ └── theme.conf │ └── kr_small │ │ ├── layout.html │ │ ├── static │ │ └── flasky.css_t │ │ └── theme.conf ├── authors.rst ├── changelog.rst ├── code.rst ├── conf.py ├── contributing.rst ├── core.rst ├── extensions.rst ├── index.rst ├── install.rst ├── integrations.rst ├── license.rst ├── make.bat ├── overview.rst ├── providers.rst ├── quickstart.rst └── server.rst ├── mfr ├── __init__.py ├── core │ ├── __init__.py │ ├── exceptions.py │ ├── extension.py │ ├── metrics.py │ ├── provider.py │ ├── remote_logging.py │ └── utils.py ├── extensions │ ├── __init__.py │ ├── audio │ │ ├── __init__.py │ │ ├── render.py │ │ └── templates │ │ │ └── viewer.mako │ ├── codepygments │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── render.py │ │ ├── settings.py │ │ ├── static │ │ │ └── css │ │ │ │ └── default.css │ │ └── templates │ │ │ └── viewer.mako │ ├── docx │ │ ├── __init__.py │ │ ├── render.py │ │ └── templates │ │ │ └── viewer.mako │ ├── image │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── export.py │ │ ├── render.py │ │ ├── settings.py │ │ ├── static │ │ │ ├── images │ │ │ │ └── question-circle.png │ │ │ └── js │ │ │ │ ├── jquery.mousewheel.min.js │ │ │ │ └── jquery.zoom.js │ │ └── templates │ │ │ └── viewer.mako │ ├── ipynb │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── render.py │ │ ├── static │ │ │ └── css │ │ │ │ ├── ipynb.css │ │ │ │ └── pygments.css │ │ └── templates │ │ │ └── viewer.mako │ ├── jamovi │ │ ├── README.md │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── html_processor.py │ │ ├── render.py │ │ └── templates │ │ │ └── viewer.mako │ ├── jasp │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── html_processor.py │ │ ├── render.py │ │ └── templates │ │ │ └── viewer.mako │ ├── jsc3d │ │ ├── __init__.py │ │ ├── export.py │ │ ├── freecad_converter.py │ │ ├── render.py │ │ ├── settings.py │ │ ├── static │ │ │ ├── images │ │ │ │ └── question-circle.png │ │ │ └── js │ │ │ │ ├── jsc3d.3ds.js │ │ │ │ ├── jsc3d.ctm.js │ │ │ │ ├── jsc3d.js │ │ │ │ ├── jsc3d.touch.js │ │ │ │ ├── jsc3d.webgl.js │ │ │ │ └── jsc3d_ie.js │ │ └── templates │ │ │ └── viewer.mako │ ├── md │ │ ├── __init__.py │ │ ├── render.py │ │ └── templates │ │ │ └── viewer.mako │ ├── pdb │ │ ├── __init__.py │ │ ├── render.py │ │ ├── settings.py │ │ ├── static │ │ │ ├── css │ │ │ │ ├── foundation.css │ │ │ │ ├── jquery-ui.min.css │ │ │ │ ├── qunit.css │ │ │ │ ├── ui-bg_diagonals-thick_18_b81900_40x40.png │ │ │ │ ├── ui-bg_diagonals-thick_20_666666_40x40.png │ │ │ │ ├── ui-bg_flat_10_000000_40x100.png │ │ │ │ ├── ui-bg_glass_100_f6f6f6_1x400.png │ │ │ │ ├── ui-bg_glass_100_fdf5ce_1x400.png │ │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ │ ├── ui-bg_gloss-wave_35_f6a828_500x100.png │ │ │ │ ├── ui-bg_highlight-soft_100_eeeeee_1x100.png │ │ │ │ ├── ui-bg_highlight-soft_75_ffe45c_1x100.png │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ ├── ui-icons_228ef1_256x240.png │ │ │ │ ├── ui-icons_ef8c08_256x240.png │ │ │ │ ├── ui-icons_ffd27a_256x240.png │ │ │ │ └── ui-icons_ffffff_256x240.png │ │ │ └── js │ │ │ │ ├── GLmol.js │ │ │ │ ├── Three49custom.js │ │ │ │ ├── animation.js │ │ │ │ ├── buffer-allocators.js │ │ │ │ ├── cam.js │ │ │ │ ├── chain-data.js │ │ │ │ ├── core.js │ │ │ │ ├── framebuffer.js │ │ │ │ ├── geom-builders.js │ │ │ │ ├── geom.js │ │ │ │ ├── gl-matrix.js │ │ │ │ ├── indexed-vertex-array.js │ │ │ │ ├── io.js │ │ │ │ ├── mol.js │ │ │ │ ├── render.js │ │ │ │ ├── scene.js │ │ │ │ ├── shade.js │ │ │ │ ├── shaders.js │ │ │ │ ├── slab.js │ │ │ │ ├── symmetry.js │ │ │ │ ├── trace.js │ │ │ │ ├── vert-assoc.js │ │ │ │ ├── vertex-array-base.js │ │ │ │ ├── vertex-array.js │ │ │ │ └── viewer.js │ │ └── templates │ │ │ └── viewer.mako │ ├── pdf │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── export.py │ │ ├── render.py │ │ ├── settings.py │ │ ├── static │ │ │ ├── build │ │ │ │ ├── pdf.js │ │ │ │ ├── pdf.min.js │ │ │ │ ├── pdf.worker.js │ │ │ │ └── pdf.worker.min.js │ │ │ ├── css │ │ │ │ └── minimal.css │ │ │ ├── html │ │ │ │ ├── pdf with selection alerts.html │ │ │ │ └── pdf.html │ │ │ ├── images │ │ │ │ ├── leftarrow.png │ │ │ │ └── rightarrow.png │ │ │ ├── js │ │ │ │ ├── compatibility.js │ │ │ │ ├── jquery.min.js │ │ │ │ ├── pdf.js │ │ │ │ ├── pdf.min.js │ │ │ │ ├── pdf.min.worker.js │ │ │ │ ├── pdf.worker.js │ │ │ │ ├── pdf_find_bar.js │ │ │ │ ├── pdf_find_bar.min.js │ │ │ │ ├── pdf_find_controller.js │ │ │ │ ├── pdf_find_controller.min.js │ │ │ │ ├── text_layer_builder.js │ │ │ │ ├── text_layer_builder.min.js │ │ │ │ ├── ui_utils.js │ │ │ │ └── ui_utils.min.js │ │ │ └── web │ │ │ │ ├── cmaps │ │ │ │ ├── 78-EUC-H.bcmap │ │ │ │ ├── 78-EUC-V.bcmap │ │ │ │ ├── 78-H.bcmap │ │ │ │ ├── 78-RKSJ-H.bcmap │ │ │ │ ├── 78-RKSJ-V.bcmap │ │ │ │ ├── 78-V.bcmap │ │ │ │ ├── 78ms-RKSJ-H.bcmap │ │ │ │ ├── 78ms-RKSJ-V.bcmap │ │ │ │ ├── 83pv-RKSJ-H.bcmap │ │ │ │ ├── 90ms-RKSJ-H.bcmap │ │ │ │ ├── 90ms-RKSJ-V.bcmap │ │ │ │ ├── 90msp-RKSJ-H.bcmap │ │ │ │ ├── 90msp-RKSJ-V.bcmap │ │ │ │ ├── 90pv-RKSJ-H.bcmap │ │ │ │ ├── 90pv-RKSJ-V.bcmap │ │ │ │ ├── Add-H.bcmap │ │ │ │ ├── Add-RKSJ-H.bcmap │ │ │ │ ├── Add-RKSJ-V.bcmap │ │ │ │ ├── Add-V.bcmap │ │ │ │ ├── Adobe-CNS1-0.bcmap │ │ │ │ ├── Adobe-CNS1-1.bcmap │ │ │ │ ├── Adobe-CNS1-2.bcmap │ │ │ │ ├── Adobe-CNS1-3.bcmap │ │ │ │ ├── Adobe-CNS1-4.bcmap │ │ │ │ ├── Adobe-CNS1-5.bcmap │ │ │ │ ├── Adobe-CNS1-6.bcmap │ │ │ │ ├── Adobe-CNS1-UCS2.bcmap │ │ │ │ ├── Adobe-GB1-0.bcmap │ │ │ │ ├── Adobe-GB1-1.bcmap │ │ │ │ ├── Adobe-GB1-2.bcmap │ │ │ │ ├── Adobe-GB1-3.bcmap │ │ │ │ ├── Adobe-GB1-4.bcmap │ │ │ │ ├── Adobe-GB1-5.bcmap │ │ │ │ ├── Adobe-GB1-UCS2.bcmap │ │ │ │ ├── Adobe-Japan1-0.bcmap │ │ │ │ ├── Adobe-Japan1-1.bcmap │ │ │ │ ├── Adobe-Japan1-2.bcmap │ │ │ │ ├── Adobe-Japan1-3.bcmap │ │ │ │ ├── Adobe-Japan1-4.bcmap │ │ │ │ ├── Adobe-Japan1-5.bcmap │ │ │ │ ├── Adobe-Japan1-6.bcmap │ │ │ │ ├── Adobe-Japan1-UCS2.bcmap │ │ │ │ ├── Adobe-Korea1-0.bcmap │ │ │ │ ├── Adobe-Korea1-1.bcmap │ │ │ │ ├── Adobe-Korea1-2.bcmap │ │ │ │ ├── Adobe-Korea1-UCS2.bcmap │ │ │ │ ├── B5-H.bcmap │ │ │ │ ├── B5-V.bcmap │ │ │ │ ├── B5pc-H.bcmap │ │ │ │ ├── B5pc-V.bcmap │ │ │ │ ├── CNS-EUC-H.bcmap │ │ │ │ ├── CNS-EUC-V.bcmap │ │ │ │ ├── CNS1-H.bcmap │ │ │ │ ├── CNS1-V.bcmap │ │ │ │ ├── CNS2-H.bcmap │ │ │ │ ├── CNS2-V.bcmap │ │ │ │ ├── ETHK-B5-H.bcmap │ │ │ │ ├── ETHK-B5-V.bcmap │ │ │ │ ├── ETen-B5-H.bcmap │ │ │ │ ├── ETen-B5-V.bcmap │ │ │ │ ├── ETenms-B5-H.bcmap │ │ │ │ ├── ETenms-B5-V.bcmap │ │ │ │ ├── EUC-H.bcmap │ │ │ │ ├── EUC-V.bcmap │ │ │ │ ├── Ext-H.bcmap │ │ │ │ ├── Ext-RKSJ-H.bcmap │ │ │ │ ├── Ext-RKSJ-V.bcmap │ │ │ │ ├── Ext-V.bcmap │ │ │ │ ├── GB-EUC-H.bcmap │ │ │ │ ├── GB-EUC-V.bcmap │ │ │ │ ├── GB-H.bcmap │ │ │ │ ├── GB-V.bcmap │ │ │ │ ├── GBK-EUC-H.bcmap │ │ │ │ ├── GBK-EUC-V.bcmap │ │ │ │ ├── GBK2K-H.bcmap │ │ │ │ ├── GBK2K-V.bcmap │ │ │ │ ├── GBKp-EUC-H.bcmap │ │ │ │ ├── GBKp-EUC-V.bcmap │ │ │ │ ├── GBT-EUC-H.bcmap │ │ │ │ ├── GBT-EUC-V.bcmap │ │ │ │ ├── GBT-H.bcmap │ │ │ │ ├── GBT-V.bcmap │ │ │ │ ├── GBTpc-EUC-H.bcmap │ │ │ │ ├── GBTpc-EUC-V.bcmap │ │ │ │ ├── GBpc-EUC-H.bcmap │ │ │ │ ├── GBpc-EUC-V.bcmap │ │ │ │ ├── H.bcmap │ │ │ │ ├── HKdla-B5-H.bcmap │ │ │ │ ├── HKdla-B5-V.bcmap │ │ │ │ ├── HKdlb-B5-H.bcmap │ │ │ │ ├── HKdlb-B5-V.bcmap │ │ │ │ ├── HKgccs-B5-H.bcmap │ │ │ │ ├── HKgccs-B5-V.bcmap │ │ │ │ ├── HKm314-B5-H.bcmap │ │ │ │ ├── HKm314-B5-V.bcmap │ │ │ │ ├── HKm471-B5-H.bcmap │ │ │ │ ├── HKm471-B5-V.bcmap │ │ │ │ ├── HKscs-B5-H.bcmap │ │ │ │ ├── HKscs-B5-V.bcmap │ │ │ │ ├── Hankaku.bcmap │ │ │ │ ├── Hiragana.bcmap │ │ │ │ ├── KSC-EUC-H.bcmap │ │ │ │ ├── KSC-EUC-V.bcmap │ │ │ │ ├── KSC-H.bcmap │ │ │ │ ├── KSC-Johab-H.bcmap │ │ │ │ ├── KSC-Johab-V.bcmap │ │ │ │ ├── KSC-V.bcmap │ │ │ │ ├── KSCms-UHC-H.bcmap │ │ │ │ ├── KSCms-UHC-HW-H.bcmap │ │ │ │ ├── KSCms-UHC-HW-V.bcmap │ │ │ │ ├── KSCms-UHC-V.bcmap │ │ │ │ ├── KSCpc-EUC-H.bcmap │ │ │ │ ├── KSCpc-EUC-V.bcmap │ │ │ │ ├── Katakana.bcmap │ │ │ │ ├── LICENSE │ │ │ │ ├── NWP-H.bcmap │ │ │ │ ├── NWP-V.bcmap │ │ │ │ ├── RKSJ-H.bcmap │ │ │ │ ├── RKSJ-V.bcmap │ │ │ │ ├── Roman.bcmap │ │ │ │ ├── UniCNS-UCS2-H.bcmap │ │ │ │ ├── UniCNS-UCS2-V.bcmap │ │ │ │ ├── UniCNS-UTF16-H.bcmap │ │ │ │ ├── UniCNS-UTF16-V.bcmap │ │ │ │ ├── UniCNS-UTF32-H.bcmap │ │ │ │ ├── UniCNS-UTF32-V.bcmap │ │ │ │ ├── UniCNS-UTF8-H.bcmap │ │ │ │ ├── UniCNS-UTF8-V.bcmap │ │ │ │ ├── UniGB-UCS2-H.bcmap │ │ │ │ ├── UniGB-UCS2-V.bcmap │ │ │ │ ├── UniGB-UTF16-H.bcmap │ │ │ │ ├── UniGB-UTF16-V.bcmap │ │ │ │ ├── UniGB-UTF32-H.bcmap │ │ │ │ ├── UniGB-UTF32-V.bcmap │ │ │ │ ├── UniGB-UTF8-H.bcmap │ │ │ │ ├── UniGB-UTF8-V.bcmap │ │ │ │ ├── UniJIS-UCS2-H.bcmap │ │ │ │ ├── UniJIS-UCS2-HW-H.bcmap │ │ │ │ ├── UniJIS-UCS2-HW-V.bcmap │ │ │ │ ├── UniJIS-UCS2-V.bcmap │ │ │ │ ├── UniJIS-UTF16-H.bcmap │ │ │ │ ├── UniJIS-UTF16-V.bcmap │ │ │ │ ├── UniJIS-UTF32-H.bcmap │ │ │ │ ├── UniJIS-UTF32-V.bcmap │ │ │ │ ├── UniJIS-UTF8-H.bcmap │ │ │ │ ├── UniJIS-UTF8-V.bcmap │ │ │ │ ├── UniJIS2004-UTF16-H.bcmap │ │ │ │ ├── UniJIS2004-UTF16-V.bcmap │ │ │ │ ├── UniJIS2004-UTF32-H.bcmap │ │ │ │ ├── UniJIS2004-UTF32-V.bcmap │ │ │ │ ├── UniJIS2004-UTF8-H.bcmap │ │ │ │ ├── UniJIS2004-UTF8-V.bcmap │ │ │ │ ├── UniJISPro-UCS2-HW-V.bcmap │ │ │ │ ├── UniJISPro-UCS2-V.bcmap │ │ │ │ ├── UniJISPro-UTF8-V.bcmap │ │ │ │ ├── UniJISX0213-UTF32-H.bcmap │ │ │ │ ├── UniJISX0213-UTF32-V.bcmap │ │ │ │ ├── UniJISX02132004-UTF32-H.bcmap │ │ │ │ ├── UniJISX02132004-UTF32-V.bcmap │ │ │ │ ├── UniKS-UCS2-H.bcmap │ │ │ │ ├── UniKS-UCS2-V.bcmap │ │ │ │ ├── UniKS-UTF16-H.bcmap │ │ │ │ ├── UniKS-UTF16-V.bcmap │ │ │ │ ├── UniKS-UTF32-H.bcmap │ │ │ │ ├── UniKS-UTF32-V.bcmap │ │ │ │ ├── UniKS-UTF8-H.bcmap │ │ │ │ ├── UniKS-UTF8-V.bcmap │ │ │ │ ├── V.bcmap │ │ │ │ └── WP-Symbol.bcmap │ │ │ │ ├── compatibility.js │ │ │ │ ├── compressed.tracemonkey-pldi-09.pdf │ │ │ │ ├── debugger.js │ │ │ │ ├── images │ │ │ │ ├── annotation-check.svg │ │ │ │ ├── annotation-comment.svg │ │ │ │ ├── annotation-help.svg │ │ │ │ ├── annotation-insert.svg │ │ │ │ ├── annotation-key.svg │ │ │ │ ├── annotation-newparagraph.svg │ │ │ │ ├── annotation-noicon.svg │ │ │ │ ├── annotation-note.svg │ │ │ │ ├── annotation-paragraph.svg │ │ │ │ ├── findbarButton-next-rtl.png │ │ │ │ ├── findbarButton-next-rtl@2x.png │ │ │ │ ├── findbarButton-next.png │ │ │ │ ├── findbarButton-next@2x.png │ │ │ │ ├── findbarButton-previous-rtl.png │ │ │ │ ├── findbarButton-previous-rtl@2x.png │ │ │ │ ├── findbarButton-previous.png │ │ │ │ ├── findbarButton-previous@2x.png │ │ │ │ ├── grab.cur │ │ │ │ ├── grabbing.cur │ │ │ │ ├── loading-icon.gif │ │ │ │ ├── loading-small.png │ │ │ │ ├── loading-small@2x.png │ │ │ │ ├── secondaryToolbarButton-documentProperties.png │ │ │ │ ├── secondaryToolbarButton-documentProperties@2x.png │ │ │ │ ├── secondaryToolbarButton-firstPage.png │ │ │ │ ├── secondaryToolbarButton-firstPage@2x.png │ │ │ │ ├── secondaryToolbarButton-handTool.png │ │ │ │ ├── secondaryToolbarButton-handTool@2x.png │ │ │ │ ├── secondaryToolbarButton-lastPage.png │ │ │ │ ├── secondaryToolbarButton-lastPage@2x.png │ │ │ │ ├── secondaryToolbarButton-rotateCcw.png │ │ │ │ ├── secondaryToolbarButton-rotateCcw@2x.png │ │ │ │ ├── secondaryToolbarButton-rotateCw.png │ │ │ │ ├── secondaryToolbarButton-rotateCw@2x.png │ │ │ │ ├── shadow.png │ │ │ │ ├── texture.png │ │ │ │ ├── toolbarButton-bookmark.png │ │ │ │ ├── toolbarButton-bookmark@2x.png │ │ │ │ ├── toolbarButton-download.png │ │ │ │ ├── toolbarButton-download@2x.png │ │ │ │ ├── toolbarButton-menuArrows.png │ │ │ │ ├── toolbarButton-menuArrows@2x.png │ │ │ │ ├── toolbarButton-openFile.png │ │ │ │ ├── toolbarButton-openFile@2x.png │ │ │ │ ├── toolbarButton-pageDown-rtl.png │ │ │ │ ├── toolbarButton-pageDown-rtl@2x.png │ │ │ │ ├── toolbarButton-pageDown.png │ │ │ │ ├── toolbarButton-pageDown@2x.png │ │ │ │ ├── toolbarButton-pageUp-rtl.png │ │ │ │ ├── toolbarButton-pageUp-rtl@2x.png │ │ │ │ ├── toolbarButton-pageUp.png │ │ │ │ ├── toolbarButton-pageUp@2x.png │ │ │ │ ├── toolbarButton-presentationMode.png │ │ │ │ ├── toolbarButton-presentationMode@2x.png │ │ │ │ ├── toolbarButton-print.png │ │ │ │ ├── toolbarButton-print@2x.png │ │ │ │ ├── toolbarButton-search.png │ │ │ │ ├── toolbarButton-search@2x.png │ │ │ │ ├── toolbarButton-secondaryToolbarToggle-rtl.png │ │ │ │ ├── toolbarButton-secondaryToolbarToggle-rtl@2x.png │ │ │ │ ├── toolbarButton-secondaryToolbarToggle.png │ │ │ │ ├── toolbarButton-secondaryToolbarToggle@2x.png │ │ │ │ ├── toolbarButton-sidebarToggle-rtl.png │ │ │ │ ├── toolbarButton-sidebarToggle-rtl@2x.png │ │ │ │ ├── toolbarButton-sidebarToggle.png │ │ │ │ ├── toolbarButton-sidebarToggle@2x.png │ │ │ │ ├── toolbarButton-viewAttachments.png │ │ │ │ ├── toolbarButton-viewAttachments@2x.png │ │ │ │ ├── toolbarButton-viewOutline-rtl.png │ │ │ │ ├── toolbarButton-viewOutline-rtl@2x.png │ │ │ │ ├── toolbarButton-viewOutline.png │ │ │ │ ├── toolbarButton-viewOutline@2x.png │ │ │ │ ├── toolbarButton-viewThumbnail.png │ │ │ │ ├── toolbarButton-viewThumbnail@2x.png │ │ │ │ ├── toolbarButton-zoomIn.png │ │ │ │ ├── toolbarButton-zoomIn@2x.png │ │ │ │ ├── toolbarButton-zoomOut.png │ │ │ │ └── toolbarButton-zoomOut@2x.png │ │ │ │ ├── l10n.js │ │ │ │ ├── locale │ │ │ │ ├── ach │ │ │ │ │ └── viewer.properties │ │ │ │ ├── af │ │ │ │ │ └── viewer.properties │ │ │ │ ├── ak │ │ │ │ │ └── viewer.properties │ │ │ │ ├── an │ │ │ │ │ └── viewer.properties │ │ │ │ ├── ar │ │ │ │ │ └── viewer.properties │ │ │ │ ├── as │ │ │ │ │ └── viewer.properties │ │ │ │ ├── ast │ │ │ │ │ └── viewer.properties │ │ │ │ ├── az │ │ │ │ │ └── viewer.properties │ │ │ │ ├── be │ │ │ │ │ └── viewer.properties │ │ │ │ ├── bg │ │ │ │ │ └── viewer.properties │ │ │ │ ├── bn-BD │ │ │ │ │ └── viewer.properties │ │ │ │ ├── bn-IN │ │ │ │ │ └── viewer.properties │ │ │ │ ├── br │ │ │ │ │ └── viewer.properties │ │ │ │ ├── bs │ │ │ │ │ └── viewer.properties │ │ │ │ ├── ca │ │ │ │ │ └── viewer.properties │ │ │ │ ├── cs │ │ │ │ │ └── viewer.properties │ │ │ │ ├── csb │ │ │ │ │ └── viewer.properties │ │ │ │ ├── cy │ │ │ │ │ └── viewer.properties │ │ │ │ ├── da │ │ │ │ │ └── viewer.properties │ │ │ │ ├── de │ │ │ │ │ └── viewer.properties │ │ │ │ ├── el │ │ │ │ │ └── viewer.properties │ │ │ │ ├── en-GB │ │ │ │ │ └── viewer.properties │ │ │ │ ├── en-US │ │ │ │ │ └── viewer.properties │ │ │ │ ├── en-ZA │ │ │ │ │ └── viewer.properties │ │ │ │ ├── eo │ │ │ │ │ └── viewer.properties │ │ │ │ ├── es-AR │ │ │ │ │ └── viewer.properties │ │ │ │ ├── es-CL │ │ │ │ │ └── viewer.properties │ │ │ │ ├── es-ES │ │ │ │ │ └── viewer.properties │ │ │ │ ├── es-MX │ │ │ │ │ └── viewer.properties │ │ │ │ ├── et │ │ │ │ │ └── viewer.properties │ │ │ │ ├── eu │ │ │ │ │ └── viewer.properties │ │ │ │ ├── fa │ │ │ │ │ └── viewer.properties │ │ │ │ ├── ff │ │ │ │ │ └── viewer.properties │ │ │ │ ├── fi │ │ │ │ │ └── viewer.properties │ │ │ │ ├── fr │ │ │ │ │ └── viewer.properties │ │ │ │ ├── fy-NL │ │ │ │ │ └── viewer.properties │ │ │ │ ├── ga-IE │ │ │ │ │ └── viewer.properties │ │ │ │ ├── gd │ │ │ │ │ └── viewer.properties │ │ │ │ ├── gl │ │ │ │ │ └── viewer.properties │ │ │ │ ├── gu-IN │ │ │ │ │ └── viewer.properties │ │ │ │ ├── he │ │ │ │ │ └── viewer.properties │ │ │ │ ├── hi-IN │ │ │ │ │ └── viewer.properties │ │ │ │ ├── hr │ │ │ │ │ └── viewer.properties │ │ │ │ ├── hu │ │ │ │ │ └── viewer.properties │ │ │ │ ├── hy-AM │ │ │ │ │ └── viewer.properties │ │ │ │ ├── id │ │ │ │ │ └── viewer.properties │ │ │ │ ├── is │ │ │ │ │ └── viewer.properties │ │ │ │ ├── it │ │ │ │ │ └── viewer.properties │ │ │ │ ├── ja │ │ │ │ │ └── viewer.properties │ │ │ │ ├── ka │ │ │ │ │ └── viewer.properties │ │ │ │ ├── kk │ │ │ │ │ └── viewer.properties │ │ │ │ ├── km │ │ │ │ │ └── viewer.properties │ │ │ │ ├── kn │ │ │ │ │ └── viewer.properties │ │ │ │ ├── ko │ │ │ │ │ └── viewer.properties │ │ │ │ ├── ku │ │ │ │ │ └── viewer.properties │ │ │ │ ├── lg │ │ │ │ │ └── viewer.properties │ │ │ │ ├── lij │ │ │ │ │ └── viewer.properties │ │ │ │ ├── locale.properties │ │ │ │ ├── lt │ │ │ │ │ └── viewer.properties │ │ │ │ ├── lv │ │ │ │ │ └── viewer.properties │ │ │ │ ├── mai │ │ │ │ │ └── viewer.properties │ │ │ │ ├── mk │ │ │ │ │ └── viewer.properties │ │ │ │ ├── ml │ │ │ │ │ └── viewer.properties │ │ │ │ ├── mn │ │ │ │ │ └── viewer.properties │ │ │ │ ├── mr │ │ │ │ │ └── viewer.properties │ │ │ │ ├── ms │ │ │ │ │ └── viewer.properties │ │ │ │ ├── my │ │ │ │ │ └── viewer.properties │ │ │ │ ├── nb-NO │ │ │ │ │ └── viewer.properties │ │ │ │ ├── nl │ │ │ │ │ └── viewer.properties │ │ │ │ ├── nn-NO │ │ │ │ │ └── viewer.properties │ │ │ │ ├── nso │ │ │ │ │ └── viewer.properties │ │ │ │ ├── oc │ │ │ │ │ └── viewer.properties │ │ │ │ ├── or │ │ │ │ │ └── viewer.properties │ │ │ │ ├── pa-IN │ │ │ │ │ └── viewer.properties │ │ │ │ ├── pl │ │ │ │ │ └── viewer.properties │ │ │ │ ├── pt-BR │ │ │ │ │ └── viewer.properties │ │ │ │ ├── pt-PT │ │ │ │ │ └── viewer.properties │ │ │ │ ├── rm │ │ │ │ │ └── viewer.properties │ │ │ │ ├── ro │ │ │ │ │ └── viewer.properties │ │ │ │ ├── ru │ │ │ │ │ └── viewer.properties │ │ │ │ ├── rw │ │ │ │ │ └── viewer.properties │ │ │ │ ├── sah │ │ │ │ │ └── viewer.properties │ │ │ │ ├── si │ │ │ │ │ └── viewer.properties │ │ │ │ ├── sk │ │ │ │ │ └── viewer.properties │ │ │ │ ├── sl │ │ │ │ │ └── viewer.properties │ │ │ │ ├── son │ │ │ │ │ └── viewer.properties │ │ │ │ ├── sq │ │ │ │ │ └── viewer.properties │ │ │ │ ├── sr │ │ │ │ │ └── viewer.properties │ │ │ │ ├── sv-SE │ │ │ │ │ └── viewer.properties │ │ │ │ ├── sw │ │ │ │ │ └── viewer.properties │ │ │ │ ├── ta-LK │ │ │ │ │ └── viewer.properties │ │ │ │ ├── ta │ │ │ │ │ └── viewer.properties │ │ │ │ ├── te │ │ │ │ │ └── viewer.properties │ │ │ │ ├── th │ │ │ │ │ └── viewer.properties │ │ │ │ ├── tl │ │ │ │ │ └── viewer.properties │ │ │ │ ├── tn │ │ │ │ │ └── viewer.properties │ │ │ │ ├── tr │ │ │ │ │ └── viewer.properties │ │ │ │ ├── uk │ │ │ │ │ └── viewer.properties │ │ │ │ ├── ur │ │ │ │ │ └── viewer.properties │ │ │ │ ├── vi │ │ │ │ │ └── viewer.properties │ │ │ │ ├── wo │ │ │ │ │ └── viewer.properties │ │ │ │ ├── xh │ │ │ │ │ └── viewer.properties │ │ │ │ ├── zh-CN │ │ │ │ │ └── viewer.properties │ │ │ │ ├── zh-TW │ │ │ │ │ └── viewer.properties │ │ │ │ └── zu │ │ │ │ │ └── viewer.properties │ │ │ │ ├── viewer.css │ │ │ │ ├── viewer.html │ │ │ │ └── viewer.js │ │ └── templates │ │ │ └── viewer.mako │ ├── rst │ │ ├── __init__.py │ │ ├── render.py │ │ └── templates │ │ │ └── viewer.mako │ ├── settings.py │ ├── svg │ │ ├── __init__.py │ │ ├── render.py │ │ ├── static │ │ │ └── js │ │ │ │ ├── svg-injector.map.js │ │ │ │ └── svg-injector.min.js │ │ └── templates │ │ │ └── viewer.mako │ ├── tabular │ │ ├── __init__.py │ │ ├── compat.py │ │ ├── exceptions.py │ │ ├── libs │ │ │ ├── __init__.py │ │ │ ├── ezodf_tools.py │ │ │ ├── h5py_scipy_tools.py │ │ │ ├── panda_tools.py │ │ │ ├── stdlib_tools.py │ │ │ └── xlrd_tools.py │ │ ├── render.py │ │ ├── settings.py │ │ ├── static │ │ │ ├── css │ │ │ │ ├── bootstrap.min.css │ │ │ │ ├── examples.css │ │ │ │ ├── slick-default-theme.css │ │ │ │ └── slick.grid.css │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ ├── images │ │ │ │ ├── actions.gif │ │ │ │ ├── ajax-loader-small.gif │ │ │ │ ├── arrow_redo.png │ │ │ │ ├── arrow_right_peppermint.png │ │ │ │ ├── arrow_right_spearmint.png │ │ │ │ ├── arrow_undo.png │ │ │ │ ├── bullet_blue.png │ │ │ │ ├── bullet_star.png │ │ │ │ ├── bullet_toggle_minus.png │ │ │ │ ├── bullet_toggle_plus.png │ │ │ │ ├── calendar.gif │ │ │ │ ├── collapse.gif │ │ │ │ ├── comment_yellow.gif │ │ │ │ ├── down.gif │ │ │ │ ├── drag-handle.png │ │ │ │ ├── editor-helper-bg.gif │ │ │ │ ├── expand.gif │ │ │ │ ├── header-bg.gif │ │ │ │ ├── header-columns-bg.gif │ │ │ │ ├── header-columns-over-bg.gif │ │ │ │ ├── help.png │ │ │ │ ├── info.gif │ │ │ │ ├── listview.gif │ │ │ │ ├── pencil.gif │ │ │ │ ├── row-over-bg.gif │ │ │ │ ├── sort-asc.gif │ │ │ │ ├── sort-asc.png │ │ │ │ ├── sort-desc.gif │ │ │ │ ├── sort-desc.png │ │ │ │ ├── stripes.png │ │ │ │ ├── tag_red.png │ │ │ │ ├── tick.png │ │ │ │ ├── user_identity.gif │ │ │ │ └── user_identity_plus.gif │ │ │ └── js │ │ │ │ ├── bootstrap.min.js │ │ │ │ ├── jquery.event.drag-2.2.js │ │ │ │ ├── slick.core.js │ │ │ │ ├── slick.dataview.js │ │ │ │ └── slick.grid.js │ │ ├── templates │ │ │ └── viewer.mako │ │ └── utilities.py │ ├── unoconv │ │ ├── __init__.py │ │ ├── export.py │ │ ├── render.py │ │ └── settings.py │ ├── utils.py │ ├── video │ │ ├── __init__.py │ │ ├── render.py │ │ └── templates │ │ │ └── viewer.mako │ └── zip │ │ ├── __init__.py │ │ ├── render.py │ │ └── templates │ │ └── viewer.mako ├── providers │ ├── __init__.py │ ├── http │ │ ├── __init__.py │ │ ├── provider.py │ │ └── settings.py │ └── osf │ │ ├── __init__.py │ │ ├── provider.py │ │ └── settings.py ├── server │ ├── __init__.py │ ├── app.py │ ├── handlers │ │ ├── __init__.py │ │ ├── core.py │ │ ├── export.py │ │ ├── exporters.py │ │ ├── render.py │ │ ├── renderers.py │ │ └── status.py │ ├── settings.py │ └── static │ │ ├── css │ │ ├── bootstrap.min.css │ │ ├── default.css │ │ └── mfr.css │ │ ├── images │ │ ├── cos_logo.png │ │ ├── loading.png │ │ └── vid-thumbnail.png │ │ └── js │ │ ├── bootstrap.min.js │ │ ├── jquery-1.11.3.js │ │ ├── jquery-1.11.3.min.js │ │ ├── mfr.child.hypothesis.js │ │ ├── mfr.child.js │ │ └── mfr.js ├── settings.py └── version.py ├── readthedocs.yml ├── requirements.txt ├── setup.cfg ├── setup.py ├── supportedextensions.md ├── tasks.py └── tests ├── __init__.py ├── core ├── test_remote_logging.py └── test_utils.py ├── documentation └── test_entrypoints.py ├── extensions ├── __init__.py ├── audio │ ├── __init__.py │ └── test_renderer.py ├── codepygments │ ├── __init__.py │ ├── files │ │ ├── encodings │ │ │ ├── complex.utf16.txt │ │ │ ├── complex.utf8.txt │ │ │ ├── iso-8859-looks-like-utf16.txt │ │ │ ├── simple.cp1252.txt │ │ │ ├── simple.utf16.txt │ │ │ └── simple.utf8.txt │ │ ├── invalid.xml │ │ └── test.xml │ └── test_renderer.py ├── docx │ ├── __init__.py │ ├── files │ │ ├── invalid.docx │ │ └── test.docx │ └── test_renderer.py ├── image │ ├── __init__.py │ ├── files │ │ ├── invalid.jpg │ │ ├── test.bmp │ │ ├── test.jpeg │ │ ├── test.jpg │ │ ├── test.png │ │ ├── test.psd │ │ ├── test_ratio.jpg │ │ └── test_transparency.png │ ├── test_exporter.py │ └── test_renderer.py ├── ipynb │ ├── __init__.py │ ├── files │ │ ├── invalid_json.ipynb │ │ ├── no_metadata.ipynb │ │ └── test.ipynb │ └── test_renderer.py ├── jamovi │ ├── __init__.py │ ├── files │ │ ├── contains-malicious-script.omv │ │ ├── data-archive-version-is-too-old.omv │ │ ├── no-data-archive-version-in-manifest.omv │ │ ├── no-index_html.omv │ │ ├── no-manifest.omv │ │ ├── not-a-zip-file.omv │ │ ├── ok-new-manifest.omv │ │ ├── ok-old-manifest.omv │ │ └── ok-with-image.omv │ └── test_renderer.py ├── jasp │ ├── __init__.py │ ├── files │ │ ├── contains-malicious-script.jasp │ │ ├── data-archive-version-is-too-old.jasp │ │ ├── no-data-archive-version-in-manifest.jasp │ │ ├── no-index_html.jasp │ │ ├── no-manifest.jasp │ │ ├── not-a-zip-file.jasp │ │ ├── ok-new-manifest.jasp │ │ └── ok-old-manifest.jasp │ └── test_renderer.py ├── jsc3d │ ├── __init__.py │ └── test_renderer.py ├── md │ ├── __init__.py │ ├── files │ │ ├── invalid.md │ │ └── test.md │ └── test_renderer.py ├── pdb │ ├── __init__.py │ └── test_renderer.py ├── pdf │ ├── __init__.py │ ├── files │ │ ├── invalid.tif │ │ ├── test.tif │ │ ├── test_broken.tif │ │ ├── test_multipage.tif │ │ └── test_ratio.tif │ ├── test_exporter.py │ └── test_renderer.py ├── rst │ ├── __init__.py │ ├── files │ │ ├── invalid.rst │ │ └── test.rst │ └── test_renderer.py ├── tabular │ ├── __init__.py │ ├── files │ │ ├── invalid.csv │ │ ├── invalid.dta │ │ ├── invalid.tsv │ │ ├── invalid.xlsx │ │ ├── invalidVer70.mat │ │ ├── invalidVer73.mat │ │ ├── test.csv │ │ ├── test.dta │ │ ├── test.tsv │ │ ├── test.xlsx │ │ ├── testVer70.mat │ │ └── testVer73.mat │ ├── test_mat_tools.py │ ├── test_panda_tools.py │ ├── test_renderer.py │ ├── test_utilities.py │ └── test_xlsx_tools.py ├── video │ ├── __init__.py │ └── test_renderer.py └── zip │ ├── __init__.py │ ├── files │ ├── empty.zip │ └── test.zip │ └── test_renderer.py ├── server ├── __init__.py └── handlers │ ├── __init__.py │ ├── test_cors.py │ ├── test_exporters.py │ ├── test_query_params.py │ ├── test_render.py │ ├── test_renderers.py │ └── test_status.py └── utils.py /.dockerignore: -------------------------------------------------------------------------------- 1 | .git 2 | *.pyc 3 | **/*.pyc 4 | Dockerfile 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS generated files 2 | ###################### 3 | .DS_Store 4 | .DS_Store? 5 | ._* 6 | .Spotlight-V100 7 | .Trashes 8 | Icon? 9 | ehthumbs.db 10 | Thumbs.db 11 | *.swp 12 | *~ 13 | 14 | # R 15 | ###################### 16 | .Rhistory 17 | 18 | # Python 19 | ###################### 20 | *.py[cod] 21 | **/*.pyc 22 | .mypy_cache 23 | 24 | # C extensions 25 | ###################### 26 | *.so 27 | 28 | # Packages 29 | ###################### 30 | *.egg 31 | *.egg-info 32 | dist 33 | /build 34 | eggs 35 | parts 36 | bin 37 | var 38 | sdist 39 | develop-eggs 40 | .installed.cfg 41 | lib 42 | lib64 43 | __pycache__ 44 | .idea 45 | .hg 46 | .hgignore 47 | .konchrc 48 | .env 49 | 50 | # Installer logs 51 | ###################### 52 | pip-log.txt 53 | 54 | # Unit test / coverage reports 55 | ###################### 56 | .coverage 57 | .tox 58 | nosetests.xml 59 | 60 | # Translations 61 | ###################### 62 | *.mo 63 | 64 | # Mr Developer 65 | ###################### 66 | .mr.developer.cfg 67 | .project 68 | .pydevproject 69 | 70 | # Sphinx 71 | ###################### 72 | docs/_build 73 | README.html 74 | 75 | # Player files 76 | ###################### 77 | player/files/* 78 | player/mfr_config_local.py 79 | player/static/mfr/* 80 | 81 | # Misc 82 | ###################### 83 | !.gitkeep 84 | .cache 85 | 86 | # Node Modules 87 | ###################### 88 | node_modules/ 89 | 90 | # Asynchronous HTTP 91 | ###################### 92 | /src/ 93 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.6-slim-buster 2 | 3 | # ensure unoconv can locate the uno library 4 | ENV PYTHONPATH /usr/lib/python3/dist-packages 5 | 6 | RUN usermod -d /home www-data \ 7 | && chown www-data:www-data /home \ 8 | # -slim images strip man dirs, but java won't install unless this dir exists. 9 | && mkdir -p /usr/share/man/man1 \ 10 | && apt-get update \ 11 | # HACK: work around bug in install java (dep of libreoffice) 12 | && apt-get install -y ca-certificates-java \ 13 | # mfr dependencies 14 | && apt-get install -y \ 15 | git \ 16 | make \ 17 | gcc \ 18 | build-essential \ 19 | gfortran \ 20 | r-base \ 21 | libblas-dev \ 22 | libevent-dev \ 23 | libfreetype6-dev \ 24 | libjpeg-dev \ 25 | libpng-dev \ 26 | libtiff5-dev \ 27 | libxml2-dev \ 28 | libxslt1-dev \ 29 | zlib1g-dev \ 30 | gnupg2 \ 31 | # convert .step to jsc3d-compatible format 32 | freecad \ 33 | # pspp dependencies 34 | pspp \ 35 | # unoconv dependencies 36 | libreoffice \ 37 | # grab gosu for easy step-down from root 38 | gosu \ 39 | && apt-get clean \ 40 | && apt-get autoremove -y \ 41 | && rm -rf /var/lib/apt/lists/* 42 | 43 | RUN mkdir -p /code 44 | WORKDIR /code 45 | 46 | RUN pip install -U pip==18.1 47 | RUN pip install setuptools==37.0.0 48 | RUN pip install unoconv==0.8.2 49 | 50 | COPY ./requirements.txt /code/ 51 | 52 | RUN pip install --no-cache-dir -r ./requirements.txt 53 | 54 | # Copy the rest of the code over 55 | COPY ./ /code/ 56 | 57 | ARG GIT_COMMIT= 58 | ENV GIT_COMMIT ${GIT_COMMIT} 59 | 60 | RUN python setup.py develop 61 | 62 | EXPOSE 7778 63 | 64 | CMD ["gosu", "www-data", "invoke", "server"] 65 | -------------------------------------------------------------------------------- /PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 | 17 | 18 | ## Ticket 19 | 20 | 21 | 22 | ## Purpose 23 | 24 | 25 | 26 | ## Changes 27 | 28 | 29 | 30 | ## Side effects 31 | 32 | 33 | 34 | ## QA Notes 35 | 36 | 37 | 38 | ## Deployment Notes 39 | 40 | 41 | -------------------------------------------------------------------------------- /constraints.txt: -------------------------------------------------------------------------------- 1 | ## Constraints file for resolving conflicts across packages. Used to resolve issues with sub-dependencies of an actual requirement. 2 | ## (eg when python-coveralls indirectly requires a version of requests) 3 | ## "Constraints files are requirements files that only control which version of a requirement is installed, not whether it is installed or not." 4 | ## See https://pip-python3.readthedocs.org/en/latest/user_guide.html#constraints-files 5 | 6 | # Newer version of requests throw an error when using the version of chardet we pin to; this causes issues for python-coveralls 7 | requests==2.14.2 8 | -------------------------------------------------------------------------------- /dev-requirements.txt: -------------------------------------------------------------------------------- 1 | -r requirements.txt 2 | 3 | # aiohttpretty disabled due to no usage in MFR, re-enable when needed 4 | # git+https://github.com/centerforopenscience/aiohttpretty.git@0.1.0#egg=aiohttpretty 5 | 6 | beautifulsoup4 7 | colorlog==2.5.0 8 | coveralls 9 | flake8==3.0.4 10 | ipdb 11 | mccabe 12 | pydevd==0.0.6 13 | pyflakes 14 | pytest==2.8.2 15 | pytest-cov==2.2.0 16 | pyzmq==14.4.1 17 | -------------------------------------------------------------------------------- /doc-requirements.txt: -------------------------------------------------------------------------------- 1 | sphinx-rtd-theme 2 | sphinx 3 | sphinx-autobuild 4 | -------------------------------------------------------------------------------- /docs/_templates/side-primary.html: -------------------------------------------------------------------------------- 1 |

2 |

3 | mfr

4 |

5 | 6 | 7 |

8 | HTML file renderer for Python 9 |

10 | 11 |

Useful Links

12 | 16 | 17 | -------------------------------------------------------------------------------- /docs/_templates/side-secondary.html: -------------------------------------------------------------------------------- 1 | 2 |

3 |

4 | 5 | mfr

6 |

7 | 8 |

9 | HTML file renderer for Python 10 |

11 | 12 | 13 |

Useful Links

14 | 18 | -------------------------------------------------------------------------------- /docs/_themes/.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.pyo 3 | .DS_Store -------------------------------------------------------------------------------- /docs/_themes/kr/layout.html: -------------------------------------------------------------------------------- 1 | 2 | {%- extends "basic/layout.html" %} 3 | {%- block extrahead %} 4 | {{ super() }} 5 | {% if theme_touch_icon %} 6 | 7 | {% endif %} 8 | 9 | {% endblock %} 10 | {%- block relbar2 %}{% endblock %} 11 | {%- block footer %} 12 | 15 | 16 | 17 | Fork me on GitHub 18 | 19 | 20 | {%- endblock %} 21 | -------------------------------------------------------------------------------- /docs/_themes/kr/relations.html: -------------------------------------------------------------------------------- 1 | 2 |

Related Topics

3 | 21 | -------------------------------------------------------------------------------- /docs/_themes/kr/static/small_flask.css: -------------------------------------------------------------------------------- 1 | /* 2 | * small_flask.css_t 3 | * ~~~~~~~~~~~~~~~~~ 4 | * 5 | * :copyright: Copyright 2010 by Armin Ronacher. 6 | * :license: Flask Design License, see LICENSE for details. 7 | */ 8 | 9 | body { 10 | margin: 0; 11 | padding: 20px 30px; 12 | } 13 | 14 | div.documentwrapper { 15 | float: none; 16 | background: white; 17 | } 18 | 19 | div.sphinxsidebar { 20 | display: block; 21 | float: none; 22 | width: 102.5%; 23 | margin: 50px -30px -20px -30px; 24 | padding: 10px 20px; 25 | background: #333; 26 | color: white; 27 | } 28 | 29 | div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, 30 | div.sphinxsidebar h3 a { 31 | color: white; 32 | } 33 | 34 | div.sphinxsidebar a { 35 | color: #aaa; 36 | } 37 | 38 | div.sphinxsidebar p.logo { 39 | display: none; 40 | } 41 | 42 | div.document { 43 | width: 100%; 44 | margin: 0; 45 | } 46 | 47 | div.related { 48 | display: block; 49 | margin: 0; 50 | padding: 10px 0 20px 0; 51 | } 52 | 53 | div.related ul, 54 | div.related ul li { 55 | margin: 0; 56 | padding: 0; 57 | } 58 | 59 | div.footer { 60 | display: none; 61 | } 62 | 63 | div.bodywrapper { 64 | margin: 0; 65 | } 66 | 67 | div.body { 68 | min-height: 0; 69 | padding: 0; 70 | } 71 | 72 | .rtd_doc_footer { 73 | display: none; 74 | } 75 | 76 | .document { 77 | width: auto; 78 | } 79 | 80 | .footer { 81 | width: auto; 82 | } 83 | 84 | .footer { 85 | width: auto; 86 | } 87 | 88 | .github { 89 | display: none; 90 | } -------------------------------------------------------------------------------- /docs/_themes/kr/theme.conf: -------------------------------------------------------------------------------- 1 | [theme] 2 | inherit = basic 3 | stylesheet = flasky.css 4 | pygments_style = flask_theme_support.FlaskyStyle 5 | 6 | [options] 7 | touch_icon = -------------------------------------------------------------------------------- /docs/_themes/kr_small/layout.html: -------------------------------------------------------------------------------- 1 | 2 | {% extends "basic/layout.html" %} 3 | {% block header %} 4 | {{ super() }} 5 | {% if pagename == 'index' %} 6 |
7 | {% endif %} 8 | {% endblock %} 9 | {% block footer %} 10 | {% if pagename == 'index' %} 11 |
12 | {% endif %} 13 | {% endblock %} 14 | {# do not display relbars #} 15 | {% block relbar1 %}{% endblock %} 16 | {% block relbar2 %} 17 | {% if theme_github_fork %} 18 | 19 | Fork me on GitHub 21 | 22 | {% endif %} 23 | {% endblock %} 24 | {% block sidebar1 %}{% endblock %} 25 | {% block sidebar2 %}{% endblock %} 26 | -------------------------------------------------------------------------------- /docs/_themes/kr_small/theme.conf: -------------------------------------------------------------------------------- 1 | [theme] 2 | inherit = basic 3 | stylesheet = flasky.css 4 | nosidebar = true 5 | pygments_style = flask_theme_support.FlaskyStyle 6 | 7 | [options] 8 | index_logo = '' 9 | index_logo_height = 120px 10 | github_fork = '' -------------------------------------------------------------------------------- /docs/authors.rst: -------------------------------------------------------------------------------- 1 | .. include:: ../AUTHORS.rst -------------------------------------------------------------------------------- /docs/changelog.rst: -------------------------------------------------------------------------------- 1 | Change Log 2 | ========== 3 | 4 | .. include:: ../CHANGELOG 5 | :literal: 6 | -------------------------------------------------------------------------------- /docs/code.rst: -------------------------------------------------------------------------------- 1 | Code 2 | ==== 3 | 4 | .. toctree:: 5 | :maxdepth: 2 6 | 7 | core 8 | extensions 9 | providers 10 | server 11 | -------------------------------------------------------------------------------- /docs/contributing.rst: -------------------------------------------------------------------------------- 1 | .. include:: ../CONTRIBUTING.rst -------------------------------------------------------------------------------- /docs/core.rst: -------------------------------------------------------------------------------- 1 | Core 2 | ==== 3 | 4 | mfr.core.exceptions 5 | ------------------- 6 | 7 | .. automodule:: mfr.core.exceptions 8 | 9 | mfr.core.extension 10 | ------------------ 11 | 12 | .. automodule:: mfr.core.extension 13 | 14 | mfr.core.provider 15 | ----------------- 16 | 17 | .. automodule:: mfr.core.provider 18 | 19 | mfr.core.utils 20 | ----------------- 21 | 22 | .. automodule:: mfr.core.utils 23 | -------------------------------------------------------------------------------- /docs/extensions.rst: -------------------------------------------------------------------------------- 1 | Extensions 2 | ========== 3 | 4 | AudioRenderer 5 | ------------- 6 | 7 | .. autoclass:: mfr.extensions.audio.AudioRenderer 8 | 9 | CodePygmentsRenderer 10 | -------------------- 11 | 12 | .. autoclass:: mfr.extensions.codepygments.CodePygmentsRenderer 13 | 14 | DocxRenderer 15 | ------------ 16 | 17 | .. autoclass:: mfr.extensions.docx.DocxRenderer 18 | 19 | ImageExporter 20 | ------------- 21 | 22 | .. autoclass:: mfr.extensions.image.ImageExporter 23 | 24 | ImageRenderer 25 | ------------- 26 | 27 | .. autoclass:: mfr.extensions.image.ImageRenderer 28 | 29 | IpynbRenderer 30 | ------------- 31 | 32 | .. autoclass:: mfr.extensions.ipynb.IpynbRenderer 33 | 34 | PdbRenderer 35 | ----------- 36 | **Note**: This module requires jquery on the page in which it is loaded. 37 | 38 | .. autoclass:: mfr.extensions.pdb.PdbRenderer 39 | 40 | PdfRenderer 41 | ----------- 42 | 43 | .. autoclass:: mfr.extensions.pdf.PdfRenderer 44 | 45 | RstRenderer 46 | ----------- 47 | 48 | .. autoclass:: mfr.extensions.rst.RstRenderer 49 | 50 | TabularRenderer 51 | --------------- 52 | 53 | .. autoclass:: mfr.extensions.tabular.TabularRenderer 54 | 55 | VideoRenderer 56 | ------------- 57 | 58 | .. autoclass:: mfr.extensions.video.VideoRenderer 59 | -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | .. title:: Modular File Renderer 2 | 3 | mfr: HTML file renderer for Python 4 | ================================== 5 | 6 | Release v\ |version|. (:ref:`Installation `) 7 | 8 | **mfr** (short for "modular file renderer") is a Python package for rendering files to HTML. 9 | 10 | 11 | Ready to dive in? 12 | ----------------- 13 | 14 | Go to the :ref:`Quickstart tutorial `, or see the :ref:`Overview ` to understand its architecture. 15 | 16 | 17 | 18 | Guide 19 | ----- 20 | 21 | .. toctree:: 22 | :maxdepth: 2 23 | 24 | install 25 | quickstart 26 | overview 27 | integrations 28 | code 29 | 30 | Project info 31 | ------------ 32 | 33 | .. toctree:: 34 | :maxdepth: 1 35 | 36 | contributing 37 | authors 38 | changelog 39 | license 40 | -------------------------------------------------------------------------------- /docs/install.rst: -------------------------------------------------------------------------------- 1 | .. _install: 2 | 3 | Installation 4 | ============ 5 | 6 | mfr is actively developed on Github_. 7 | 8 | You can clone the public repo: :: 9 | 10 | git clone https://github.com/CenterForOpenScience/modular-file-renderer.git 11 | 12 | Or download one of the following: 13 | 14 | * tarball_ 15 | * zipball_ 16 | 17 | Make sure that you have installed `pspp `_ and are using python 3.5 or greater. 18 | 19 | Install the versions of ``setuptools`` and ``invoke`` found in the requirements.txt file: 20 | 21 | .. code-block:: bash 22 | 23 | pip install setuptools==37.0.0 24 | pip install invoke==0.13.0 25 | 26 | Install requirements: 27 | 28 | .. code-block:: bash 29 | 30 | invoke install 31 | 32 | Or for some nicities (like tests): 33 | 34 | .. code-block:: bash 35 | 36 | invoke install --develop 37 | 38 | Start the server: 39 | 40 | .. note 41 | 42 | The server is extremely tenacious thanks to stevedore and tornado 43 | Syntax errors in the :mod:`mfr.providers` will not crash the server 44 | In debug mode the server will automatically reload 45 | 46 | .. code-block:: bash 47 | 48 | invoke server 49 | 50 | .. _Github: https://github.com/CenterForOpenScience/modular-file-renderer 51 | .. _tarball: https://github.com/CenterForOpenScience/modular-file-renderer/tarball/master 52 | .. _zipball: https://github.com/CenterForOpenScience/modular-file-renderer/zipball/master 53 | 54 | -------------------------------------------------------------------------------- /docs/license.rst: -------------------------------------------------------------------------------- 1 | License 2 | ======= 3 | 4 | .. include:: ../LICENSE 5 | :literal: 6 | -------------------------------------------------------------------------------- /docs/providers.rst: -------------------------------------------------------------------------------- 1 | Providers 2 | ========= 3 | 4 | mfr.providers.http 5 | ------------------ 6 | 7 | .. autoclass:: mfr.providers.http.HttpProvider 8 | 9 | mfr.providers.osf 10 | ----------------- 11 | 12 | .. autoclass:: mfr.providers.osf.OsfProvider 13 | -------------------------------------------------------------------------------- /docs/server.rst: -------------------------------------------------------------------------------- 1 | Server 2 | ====== 3 | 4 | mfr.server.app 5 | -------------- 6 | 7 | .. automodule:: mfr.server.app 8 | 9 | mfr.server.handlers 10 | ------------------- 11 | 12 | .. automodule:: mfr.server.handlers.core 13 | 14 | .. automodule:: mfr.server.handlers.export 15 | 16 | .. automodule:: mfr.server.handlers.render 17 | 18 | .. automodule:: mfr.server.handlers.status 19 | 20 | -------------------------------------------------------------------------------- /mfr/__init__.py: -------------------------------------------------------------------------------- 1 | # This is a namespace package, don't put any functional code in here besides the 2 | # declare_namespace call, or it will disappear on install. See: 3 | # https://setuptools.readthedocs.io/en/latest/setuptools.html#namespace-packages 4 | __import__('pkg_resources').declare_namespace(__name__) 5 | -------------------------------------------------------------------------------- /mfr/core/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/core/__init__.py -------------------------------------------------------------------------------- /mfr/extensions/__init__.py: -------------------------------------------------------------------------------- 1 | __import__('pkg_resources').declare_namespace(__name__) 2 | -------------------------------------------------------------------------------- /mfr/extensions/audio/__init__.py: -------------------------------------------------------------------------------- 1 | from .render import AudioRenderer # noqa 2 | -------------------------------------------------------------------------------- /mfr/extensions/audio/render.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from mako.lookup import TemplateLookup 4 | 5 | from mfr.core import extension 6 | from mfr.extensions.utils import escape_url_for_template 7 | 8 | 9 | class AudioRenderer(extension.BaseRenderer): 10 | 11 | TEMPLATE = TemplateLookup( 12 | directories=[ 13 | os.path.join(os.path.dirname(__file__), 'templates') 14 | ]).get_template('viewer.mako') 15 | 16 | def render(self): 17 | safe_url = escape_url_for_template(self.url) 18 | return self.TEMPLATE.render(base=self.assets_url, url=safe_url) 19 | 20 | @property 21 | def file_required(self): 22 | return False 23 | 24 | @property 25 | def cache_result(self): 26 | return False 27 | -------------------------------------------------------------------------------- /mfr/extensions/audio/templates/viewer.mako: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /mfr/extensions/codepygments/__init__.py: -------------------------------------------------------------------------------- 1 | from .render import CodePygmentsRenderer # noqa 2 | -------------------------------------------------------------------------------- /mfr/extensions/codepygments/settings.py: -------------------------------------------------------------------------------- 1 | from mfr import settings 2 | 3 | config = settings.child('CODEPYGMENTS_EXTENSION_CONFIG') 4 | 5 | MAX_SIZE = int(config.get('MAX_SIZE', 204800)) # 200kb 6 | 7 | lexer_lib = { 8 | '.gdt': 'xml', 9 | '.pzfx': 'xml', 10 | '.cmdi': 'xml', 11 | '.rm5': 'xml', 12 | '.eaf': 'xml', 13 | '.qsf': 'json', 14 | '.psyexp': 'html', 15 | '.umbrella': 'json', 16 | '.jst': 'js', 17 | '.ijm': 'java', 18 | '.csl': 'xml', 19 | '.lss': 'xml' 20 | } 21 | -------------------------------------------------------------------------------- /mfr/extensions/codepygments/templates/viewer.mako: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | ${body} 5 |
6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /mfr/extensions/docx/__init__.py: -------------------------------------------------------------------------------- 1 | from .render import DocxRenderer # noqa 2 | -------------------------------------------------------------------------------- /mfr/extensions/docx/render.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | import pydocx.export 4 | from mako.lookup import TemplateLookup 5 | 6 | from mfr.core import extension 7 | 8 | 9 | class DocxRenderer(extension.BaseRenderer): 10 | 11 | TEMPLATE = TemplateLookup( 12 | directories=[ 13 | os.path.join(os.path.dirname(__file__), 'templates') 14 | ]).get_template('viewer.mako') 15 | 16 | # Workaround to remove default stylesheet and inlined styles 17 | # see: https://github.com/CenterForOpenScience/pydocx/issues/102 18 | class _PyDocXHTMLExporter(pydocx.export.PyDocXHTMLExporter): 19 | 20 | def style(self): 21 | return '' 22 | 23 | def indent(self, text, *args, **kwargs): 24 | return text 25 | 26 | def __init__(self, *args, **kwargs): 27 | super().__init__(*args, **kwargs) 28 | self.metrics.add('pydocx_version', pydocx.__version__) 29 | 30 | def render(self): 31 | body = self._PyDocXHTMLExporter(self.file_path).parsed 32 | return self.TEMPLATE.render(base=self.assets_url, body=body) 33 | 34 | @property 35 | def file_required(self): 36 | return True 37 | 38 | @property 39 | def cache_result(self): 40 | return True 41 | -------------------------------------------------------------------------------- /mfr/extensions/docx/templates/viewer.mako: -------------------------------------------------------------------------------- 1 |
2 | ${body} 3 |
4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /mfr/extensions/image/__init__.py: -------------------------------------------------------------------------------- 1 | from .export import ImageExporter # noqa 2 | from .render import ImageRenderer # noqa 3 | -------------------------------------------------------------------------------- /mfr/extensions/image/exceptions.py: -------------------------------------------------------------------------------- 1 | from mfr.core.exceptions import ExporterError 2 | 3 | 4 | class PillowImageError(ExporterError): 5 | """The Image related errors raised from a :class:`mfr.extentions.image` 6 | and relating to the Pillow Library should inherit from PillowImageError 7 | """ 8 | 9 | __TYPE = 'image_pillow' 10 | 11 | def __init__(self, message, *args, export_format: str='', detected_format: str='', 12 | original_exception: Exception=None, **kwargs): 13 | super().__init__(message, *args, exporter_class='image', **kwargs) 14 | 15 | self.export_format = export_format 16 | self.detected_format = detected_format 17 | self.original_exception = self._format_original_exception(original_exception) 18 | 19 | self.attr_stack.append([self.__TYPE, { 20 | 'export_format': self.export_format, 21 | 'detected_format': self.detected_format, 22 | 'original_exception': self.original_exception, 23 | }]) 24 | -------------------------------------------------------------------------------- /mfr/extensions/image/render.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | import furl 4 | from mako.lookup import TemplateLookup 5 | 6 | from mfr.core import extension 7 | from mfr.extensions.image import settings 8 | from mfr.extensions.utils import munge_url_for_localdev, escape_url_for_template 9 | 10 | 11 | class ImageRenderer(extension.BaseRenderer): 12 | 13 | TEMPLATE = TemplateLookup( 14 | directories=[ 15 | os.path.join(os.path.dirname(__file__), 'templates') 16 | ]).get_template('viewer.mako') 17 | 18 | def render(self): 19 | self.metrics.add('needs_export', False) 20 | if self.metadata.ext in settings.EXPORT_EXCLUSIONS: 21 | download_url = munge_url_for_localdev(self.url) 22 | safe_url = escape_url_for_template(download_url.geturl()) 23 | return self.TEMPLATE.render(base=self.assets_url, url=safe_url) 24 | 25 | exported_url = furl.furl(self.export_url) 26 | if settings.EXPORT_MAXIMUM_SIZE and settings.EXPORT_TYPE: 27 | exported_url.args['format'] = '{}.{}'.format(settings.EXPORT_MAXIMUM_SIZE, settings.EXPORT_TYPE) 28 | elif settings.EXPORT_TYPE: 29 | exported_url.args['format'] = settings.EXPORT_TYPE 30 | else: 31 | download_url = munge_url_for_localdev(self.url) 32 | safe_url = escape_url_for_template(download_url.geturl()) 33 | return self.TEMPLATE.render(base=self.assets_url, url=safe_url) 34 | 35 | self.metrics.add('needs_export', True) 36 | safe_url = escape_url_for_template(exported_url.url) 37 | return self.TEMPLATE.render(base=self.assets_url, url=safe_url) 38 | 39 | @property 40 | def file_required(self): 41 | return False 42 | 43 | @property 44 | def cache_result(self): 45 | return False 46 | -------------------------------------------------------------------------------- /mfr/extensions/image/settings.py: -------------------------------------------------------------------------------- 1 | from mfr import settings 2 | 3 | config = settings.child('IMAGE_EXTENSION_CONFIG') 4 | 5 | EXPORT_TYPE = config.get('EXPORT_TYPE', 'jpeg') 6 | EXPORT_MAXIMUM_SIZE = config.get('EXPORT_MAXIMUM_SIZE', '2400x2400') 7 | EXPORT_EXCLUSIONS = config.get('EXPORT_EXCLUSIONS', '.gif .ico').split(' ') 8 | EXPORT_BACKGROUND_COLOR = config.get('EXPORT_BACKGROUND_COLOR', 'white') 9 | -------------------------------------------------------------------------------- /mfr/extensions/image/static/images/question-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/image/static/images/question-circle.png -------------------------------------------------------------------------------- /mfr/extensions/ipynb/__init__.py: -------------------------------------------------------------------------------- 1 | from .render import IpynbRenderer # noqa 2 | -------------------------------------------------------------------------------- /mfr/extensions/ipynb/exceptions.py: -------------------------------------------------------------------------------- 1 | from mfr.core.exceptions import RendererError 2 | 3 | 4 | class InvalidFormatError(RendererError): 5 | 6 | __TYPE = 'ipynb_invalid_format' 7 | 8 | def __init__(self, message, *args, code: int=400, download_url: str='', 9 | original_exception: Exception=None, **kwargs): 10 | super().__init__(message, *args, code=code, renderer_class='ipynb', **kwargs) 11 | 12 | self.download_url = download_url, 13 | self.original_exception = self._format_original_exception(original_exception) 14 | 15 | self.attr_stack.append([self.__TYPE, { 16 | 'download_url': self.download_url, 17 | 'original_exception': self.original_exception, 18 | }]) 19 | -------------------------------------------------------------------------------- /mfr/extensions/ipynb/templates/viewer.mako: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
7 | ${body | n} 8 |
9 | 10 | 11 | 12 | 13 | 38 | -------------------------------------------------------------------------------- /mfr/extensions/jamovi/README.md: -------------------------------------------------------------------------------- 1 | # jamovi .omv file renderer 2 | 3 | `.omv` is the native file format for the free and open source [jamovi statistical spreadsheet](https://www.jamovi.org). An `.omv` file is a 'compound' file format, containing data, analyses, and results. 4 | 5 | `.omv` files created by recent versions of jamovi contain an `index.html` file which represents the results of the analyses performed. The jamovi `.omv` file renderer extracts the contents of `index.html` from the archive and replaces image paths from the archive with equivalent data URIs. This then serves as the rendered content. 6 | -------------------------------------------------------------------------------- /mfr/extensions/jamovi/__init__.py: -------------------------------------------------------------------------------- 1 | from .render import JamoviRenderer # noqa 2 | -------------------------------------------------------------------------------- /mfr/extensions/jamovi/templates/viewer.mako: -------------------------------------------------------------------------------- 1 |
2 | ${body} 3 |
4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /mfr/extensions/jasp/__init__.py: -------------------------------------------------------------------------------- 1 | from .render import JASPRenderer # noqa 2 | -------------------------------------------------------------------------------- /mfr/extensions/jasp/templates/viewer.mako: -------------------------------------------------------------------------------- 1 |
2 | ${body} 3 |
4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /mfr/extensions/jsc3d/__init__.py: -------------------------------------------------------------------------------- 1 | from .render import JSC3DRenderer # noqa 2 | from .export import JSC3DExporter # noqa 3 | -------------------------------------------------------------------------------- /mfr/extensions/jsc3d/freecad_converter.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | import Mesh 4 | import Part 5 | import FreeCAD 6 | 7 | # This file is run by Freecads own version of python to do step file conversion 8 | # The exporter will shell out to Freecad and provide the path to this file 9 | 10 | in_fn, out_fn = sys.argv[2], sys.argv[3] 11 | 12 | try: 13 | Part.open(in_fn) 14 | except: 15 | sys.exit(1) 16 | 17 | o = [FreeCAD.getDocument("Unnamed").findObjects()[0]] 18 | Mesh.export(o, out_fn) 19 | -------------------------------------------------------------------------------- /mfr/extensions/jsc3d/render.py: -------------------------------------------------------------------------------- 1 | """3D renderer module """ 2 | # Uses jsc3d: https://github.com/humu2009/jsc3d/tree/master/jsc3d 3 | import os 4 | 5 | import furl 6 | from mako.lookup import TemplateLookup 7 | 8 | from mfr.core import extension 9 | from mfr.extensions.jsc3d import settings 10 | from mfr.extensions.utils import munge_url_for_localdev, escape_url_for_template 11 | 12 | 13 | class JSC3DRenderer(extension.BaseRenderer): 14 | 15 | TEMPLATE = TemplateLookup( 16 | directories=[ 17 | os.path.join(os.path.dirname(__file__), 'templates') 18 | ]).get_template('viewer.mako') 19 | 20 | def render(self): 21 | self.metrics.add('needs_export', False) 22 | if self.metadata.ext in settings.EXPORT_EXCLUSIONS: 23 | download_url = munge_url_for_localdev(self.metadata.download_url) 24 | safe_url = escape_url_for_template(download_url.geturl()) 25 | return self.TEMPLATE.render( 26 | base=self.assets_url, 27 | url=safe_url, 28 | ext=self.metadata.ext.lower(), 29 | ) 30 | 31 | exported_url = furl.furl(self.export_url) 32 | exported_url.args['format'] = settings.EXPORT_TYPE 33 | self.metrics.add('needs_export', True) 34 | safe_url = escape_url_for_template(exported_url.url) 35 | return self.TEMPLATE.render( 36 | base=self.assets_url, 37 | url=safe_url, 38 | ext=settings.EXPORT_TYPE, 39 | ) 40 | 41 | @property 42 | def file_required(self): 43 | return False 44 | 45 | @property 46 | def cache_result(self): 47 | return False 48 | -------------------------------------------------------------------------------- /mfr/extensions/jsc3d/settings.py: -------------------------------------------------------------------------------- 1 | from mfr import settings 2 | 3 | config = settings.child('JSC3D_EXTENSION_CONFIG') 4 | 5 | FREECAD_BIN = config.get('FREECAD_BIN', '/usr/bin/freecadcmd') 6 | CONVERSION_SCRIPT = config.get('FREECAD_CONVERT_SCRIPT', '/code/mfr/extensions/jsc3d/freecad_converter.py') 7 | TIMEOUT = int(config.get('FREECAD_TIMEOUT', 30)) # In seconds 8 | EXPORT_TYPE = config.get('EXPORT_TYPE', '.stl') 9 | EXPORT_EXCLUSIONS = config.get('EXPORT_EXCLUSIONS', '.3ds .stl .obj .ctm').split(' ') 10 | -------------------------------------------------------------------------------- /mfr/extensions/jsc3d/static/images/question-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/jsc3d/static/images/question-circle.png -------------------------------------------------------------------------------- /mfr/extensions/md/__init__.py: -------------------------------------------------------------------------------- 1 | from .render import MdRenderer # noqa 2 | -------------------------------------------------------------------------------- /mfr/extensions/md/render.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | import markdown 4 | from markdown.extensions import Extension 5 | 6 | from mako.lookup import TemplateLookup 7 | 8 | from mfr.core import extension 9 | 10 | 11 | class EscapeHtml(Extension): 12 | def extendMarkdown(self, md, md_globals): 13 | del md.preprocessors['html_block'] 14 | del md.inlinePatterns['html'] 15 | 16 | 17 | class MdRenderer(extension.BaseRenderer): 18 | 19 | TEMPLATE = TemplateLookup( 20 | directories=[ 21 | os.path.join(os.path.dirname(__file__), 'templates') 22 | ]).get_template('viewer.mako') 23 | 24 | def __init__(self, *args, **kwargs): 25 | super().__init__(*args, **kwargs) 26 | self.metrics.add('markdown_version', markdown.version) 27 | 28 | def render(self): 29 | """Render a markdown file to html.""" 30 | with open(self.file_path, 'r') as fp: 31 | body = markdown.markdown(fp.read(), extensions=[EscapeHtml()]) 32 | return self.TEMPLATE.render(base=self.assets_url, body=body) 33 | 34 | @property 35 | def file_required(self): 36 | return True 37 | 38 | @property 39 | def cache_result(self): 40 | return True 41 | -------------------------------------------------------------------------------- /mfr/extensions/md/templates/viewer.mako: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | ${body} 5 |
6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /mfr/extensions/pdb/__init__.py: -------------------------------------------------------------------------------- 1 | from .render import PdbRenderer # noqa 2 | -------------------------------------------------------------------------------- /mfr/extensions/pdb/render.py: -------------------------------------------------------------------------------- 1 | """Molecule renderer module """ 2 | import os 3 | import json 4 | 5 | from mako.lookup import TemplateLookup 6 | 7 | from mfr.core import extension 8 | from mfr.extensions.pdb import settings 9 | from mfr.extensions.utils import munge_url_for_localdev, escape_url_for_template 10 | 11 | 12 | class PdbRenderer(extension.BaseRenderer): 13 | 14 | TEMPLATE = TemplateLookup( 15 | directories=[ 16 | os.path.join(os.path.dirname(__file__), 'templates') 17 | ]).get_template('viewer.mako') 18 | 19 | def render(self): 20 | download_url = munge_url_for_localdev(self.metadata.download_url) 21 | safe_url = escape_url_for_template(download_url.geturl()) 22 | return self.TEMPLATE.render( 23 | base=self.assets_url, 24 | url=safe_url, 25 | options=json.dumps(settings.OPTIONS), 26 | ) 27 | 28 | @property 29 | def file_required(self): 30 | return False 31 | 32 | @property 33 | def cache_result(self): 34 | return False 35 | -------------------------------------------------------------------------------- /mfr/extensions/pdb/settings.py: -------------------------------------------------------------------------------- 1 | from mfr import settings 2 | 3 | config = settings.child('PDB_EXTENSION_CONFIG') 4 | 5 | OPTIONS = config.get_object('OPTIONS', { 6 | 'width': 'auto', 7 | 'height': '400', 8 | 'antialias': True, 9 | 'outline': True, 10 | 'quality': 'medium', 11 | 'fog': False 12 | }) 13 | -------------------------------------------------------------------------------- /mfr/extensions/pdb/static/css/ui-bg_diagonals-thick_18_b81900_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdb/static/css/ui-bg_diagonals-thick_18_b81900_40x40.png -------------------------------------------------------------------------------- /mfr/extensions/pdb/static/css/ui-bg_diagonals-thick_20_666666_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdb/static/css/ui-bg_diagonals-thick_20_666666_40x40.png -------------------------------------------------------------------------------- /mfr/extensions/pdb/static/css/ui-bg_flat_10_000000_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdb/static/css/ui-bg_flat_10_000000_40x100.png -------------------------------------------------------------------------------- /mfr/extensions/pdb/static/css/ui-bg_glass_100_f6f6f6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdb/static/css/ui-bg_glass_100_f6f6f6_1x400.png -------------------------------------------------------------------------------- /mfr/extensions/pdb/static/css/ui-bg_glass_100_fdf5ce_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdb/static/css/ui-bg_glass_100_fdf5ce_1x400.png -------------------------------------------------------------------------------- /mfr/extensions/pdb/static/css/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdb/static/css/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /mfr/extensions/pdb/static/css/ui-bg_gloss-wave_35_f6a828_500x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdb/static/css/ui-bg_gloss-wave_35_f6a828_500x100.png -------------------------------------------------------------------------------- /mfr/extensions/pdb/static/css/ui-bg_highlight-soft_100_eeeeee_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdb/static/css/ui-bg_highlight-soft_100_eeeeee_1x100.png -------------------------------------------------------------------------------- /mfr/extensions/pdb/static/css/ui-bg_highlight-soft_75_ffe45c_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdb/static/css/ui-bg_highlight-soft_75_ffe45c_1x100.png -------------------------------------------------------------------------------- /mfr/extensions/pdb/static/css/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdb/static/css/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /mfr/extensions/pdb/static/css/ui-icons_228ef1_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdb/static/css/ui-icons_228ef1_256x240.png -------------------------------------------------------------------------------- /mfr/extensions/pdb/static/css/ui-icons_ef8c08_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdb/static/css/ui-icons_ef8c08_256x240.png -------------------------------------------------------------------------------- /mfr/extensions/pdb/static/css/ui-icons_ffd27a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdb/static/css/ui-icons_ffd27a_256x240.png -------------------------------------------------------------------------------- /mfr/extensions/pdb/static/css/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdb/static/css/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/__init__.py: -------------------------------------------------------------------------------- 1 | from .render import PdfRenderer # noqa 2 | from .export import PdfExporter # noqa 3 | -------------------------------------------------------------------------------- /mfr/extensions/pdf/exceptions.py: -------------------------------------------------------------------------------- 1 | from mfr.core.exceptions import ExporterError 2 | 3 | 4 | class PillowImageError(ExporterError): 5 | """The Image related errors raised from a :class:`mfr.extentions.pdf` 6 | and relating to the Pillow Library should inherit from PillowImageError 7 | """ 8 | 9 | __TYPE = 'pdf_pillow' 10 | 11 | def __init__(self, message, *args, export_format: str='', detected_format: str='', 12 | original_exception: Exception=None, **kwargs): 13 | super().__init__(message, *args, exporter_class='image', **kwargs) 14 | 15 | self.export_format = export_format 16 | self.detected_format = detected_format 17 | self.original_exception = self._format_original_exception(original_exception) 18 | 19 | self.attr_stack.append([self.__TYPE, { 20 | 'export_format': self.export_format, 21 | 'detected_format': self.detected_format, 22 | 'original_exception': self.original_exception, 23 | }]) 24 | -------------------------------------------------------------------------------- /mfr/extensions/pdf/settings.py: -------------------------------------------------------------------------------- 1 | from mfr import settings 2 | 3 | 4 | config = settings.child('PDF_EXTENSION_CONFIG') 5 | 6 | EXPORT_TYPE = config.get('EXPORT_TYPE', 'pdf') 7 | assert EXPORT_TYPE # mandatory config 8 | EXPORT_MAXIMUM_SIZE = config.get('EXPORT_MAXIMUM_SIZE', '1200x1200') 9 | 10 | ENABLE_HYPOTHESIS = config.get_bool('ENABLE_HYPOTHESIS', True) 11 | 12 | # supports multiple files in the form of a space separated string 13 | EXPORT_SUPPORTED = config.get('EXPORT_SUPPORTED', '.tiff .tif').split(' ') 14 | EXPORT_MAX_PAGES = int(config.get('EXPORT_MAX_PAGES', 40)) 15 | -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/images/leftarrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/images/leftarrow.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/images/rightarrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/images/rightarrow.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/78-EUC-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/78-EUC-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/78-EUC-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/78-EUC-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/78-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/78-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/78-RKSJ-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/78-RKSJ-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/78-RKSJ-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/78-RKSJ-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/78-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/78-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/78ms-RKSJ-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/78ms-RKSJ-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/78ms-RKSJ-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/78ms-RKSJ-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/83pv-RKSJ-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/83pv-RKSJ-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/90ms-RKSJ-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/90ms-RKSJ-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/90ms-RKSJ-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/90ms-RKSJ-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/90msp-RKSJ-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/90msp-RKSJ-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/90msp-RKSJ-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/90msp-RKSJ-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/90pv-RKSJ-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/90pv-RKSJ-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/90pv-RKSJ-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/90pv-RKSJ-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Add-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Add-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Add-RKSJ-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Add-RKSJ-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Add-RKSJ-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Add-RKSJ-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Add-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Add-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-CNS1-0.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-CNS1-0.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-CNS1-1.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-CNS1-1.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-CNS1-2.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-CNS1-2.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-CNS1-3.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-CNS1-3.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-CNS1-4.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-CNS1-4.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-CNS1-5.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-CNS1-5.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-CNS1-6.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-CNS1-6.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-CNS1-UCS2.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-CNS1-UCS2.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-GB1-0.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-GB1-0.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-GB1-1.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-GB1-1.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-GB1-2.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-GB1-2.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-GB1-3.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-GB1-3.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-GB1-4.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-GB1-4.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-GB1-5.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-GB1-5.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-GB1-UCS2.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-GB1-UCS2.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-Japan1-0.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-Japan1-0.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-Japan1-1.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-Japan1-1.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-Japan1-2.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-Japan1-2.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-Japan1-3.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-Japan1-3.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-Japan1-4.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-Japan1-4.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-Japan1-5.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-Japan1-5.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-Japan1-6.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-Japan1-6.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-Japan1-UCS2.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-Japan1-UCS2.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-Korea1-0.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-Korea1-0.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-Korea1-1.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-Korea1-1.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-Korea1-2.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-Korea1-2.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Adobe-Korea1-UCS2.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Adobe-Korea1-UCS2.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/B5-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/B5-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/B5-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/B5-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/B5pc-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/B5pc-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/B5pc-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/B5pc-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/CNS-EUC-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/CNS-EUC-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/CNS-EUC-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/CNS-EUC-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/CNS1-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/CNS1-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/CNS1-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/CNS1-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/CNS2-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/CNS2-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/CNS2-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/CNS2-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/ETHK-B5-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/ETHK-B5-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/ETHK-B5-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/ETHK-B5-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/ETen-B5-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/ETen-B5-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/ETen-B5-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/ETen-B5-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/ETenms-B5-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/ETenms-B5-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/ETenms-B5-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/ETenms-B5-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/EUC-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/EUC-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/EUC-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/EUC-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Ext-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Ext-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Ext-RKSJ-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Ext-RKSJ-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Ext-RKSJ-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Ext-RKSJ-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Ext-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Ext-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GB-EUC-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GB-EUC-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GB-EUC-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GB-EUC-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GB-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GB-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GB-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GB-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GBK-EUC-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GBK-EUC-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GBK-EUC-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GBK-EUC-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GBK2K-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GBK2K-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GBK2K-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GBK2K-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GBKp-EUC-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GBKp-EUC-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GBKp-EUC-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GBKp-EUC-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GBT-EUC-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GBT-EUC-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GBT-EUC-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GBT-EUC-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GBT-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GBT-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GBT-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GBT-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GBTpc-EUC-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GBTpc-EUC-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GBTpc-EUC-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GBTpc-EUC-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GBpc-EUC-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GBpc-EUC-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/GBpc-EUC-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/GBpc-EUC-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/HKdla-B5-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/HKdla-B5-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/HKdla-B5-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/HKdla-B5-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/HKdlb-B5-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/HKdlb-B5-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/HKdlb-B5-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/HKdlb-B5-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/HKgccs-B5-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/HKgccs-B5-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/HKgccs-B5-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/HKgccs-B5-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/HKm314-B5-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/HKm314-B5-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/HKm314-B5-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/HKm314-B5-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/HKm471-B5-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/HKm471-B5-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/HKm471-B5-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/HKm471-B5-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/HKscs-B5-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/HKscs-B5-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/HKscs-B5-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/HKscs-B5-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Hankaku.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Hankaku.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Hiragana.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Hiragana.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/KSC-EUC-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/KSC-EUC-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/KSC-EUC-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/KSC-EUC-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/KSC-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/KSC-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/KSC-Johab-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/KSC-Johab-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/KSC-Johab-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/KSC-Johab-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/KSC-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/KSC-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/KSCms-UHC-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/KSCms-UHC-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/KSCms-UHC-HW-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/KSCms-UHC-HW-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/KSCms-UHC-HW-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/KSCms-UHC-HW-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/KSCms-UHC-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/KSCms-UHC-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/KSCpc-EUC-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/KSCpc-EUC-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/KSCpc-EUC-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/KSCpc-EUC-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Katakana.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Katakana.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/NWP-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/NWP-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/NWP-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/NWP-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/RKSJ-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/RKSJ-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/RKSJ-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/RKSJ-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/Roman.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/Roman.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniCNS-UCS2-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniCNS-UCS2-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniCNS-UCS2-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniCNS-UCS2-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniCNS-UTF16-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniCNS-UTF16-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniCNS-UTF16-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniCNS-UTF16-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniCNS-UTF32-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniCNS-UTF32-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniCNS-UTF32-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniCNS-UTF32-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniCNS-UTF8-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniCNS-UTF8-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniCNS-UTF8-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniCNS-UTF8-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniGB-UCS2-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniGB-UCS2-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniGB-UCS2-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniGB-UCS2-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniGB-UTF16-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniGB-UTF16-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniGB-UTF16-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniGB-UTF16-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniGB-UTF32-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniGB-UTF32-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniGB-UTF32-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniGB-UTF32-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniGB-UTF8-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniGB-UTF8-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniGB-UTF8-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniGB-UTF8-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJIS-UCS2-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJIS-UCS2-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJIS-UCS2-HW-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJIS-UCS2-HW-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJIS-UCS2-HW-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJIS-UCS2-HW-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJIS-UCS2-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJIS-UCS2-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJIS-UTF16-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJIS-UTF16-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJIS-UTF16-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJIS-UTF16-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJIS-UTF32-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJIS-UTF32-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJIS-UTF32-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJIS-UTF32-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJIS-UTF8-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJIS-UTF8-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJIS-UTF8-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJIS-UTF8-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJIS2004-UTF16-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJIS2004-UTF16-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJIS2004-UTF16-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJIS2004-UTF16-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJIS2004-UTF32-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJIS2004-UTF32-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJIS2004-UTF32-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJIS2004-UTF32-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJIS2004-UTF8-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJIS2004-UTF8-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJIS2004-UTF8-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJIS2004-UTF8-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJISPro-UCS2-HW-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJISPro-UCS2-HW-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJISPro-UCS2-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJISPro-UCS2-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJISPro-UTF8-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJISPro-UTF8-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJISX0213-UTF32-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJISX0213-UTF32-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJISX0213-UTF32-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJISX0213-UTF32-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJISX02132004-UTF32-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJISX02132004-UTF32-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniJISX02132004-UTF32-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniJISX02132004-UTF32-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniKS-UCS2-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniKS-UCS2-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniKS-UCS2-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniKS-UCS2-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniKS-UTF16-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniKS-UTF16-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniKS-UTF16-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniKS-UTF16-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniKS-UTF32-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniKS-UTF32-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniKS-UTF32-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniKS-UTF32-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniKS-UTF8-H.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniKS-UTF8-H.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/UniKS-UTF8-V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/UniKS-UTF8-V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/V.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/V.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/cmaps/WP-Symbol.bcmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/cmaps/WP-Symbol.bcmap -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/compressed.tracemonkey-pldi-09.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/compressed.tracemonkey-pldi-09.pdf -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/annotation-check.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/annotation-comment.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/annotation-insert.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/annotation-key.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/annotation-newparagraph.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/annotation-noicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/annotation-note.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 14 | 21 | 28 | 35 | 42 | 43 | -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/annotation-paragraph.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/findbarButton-next-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/findbarButton-next-rtl.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/findbarButton-next-rtl@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/findbarButton-next-rtl@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/findbarButton-next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/findbarButton-next.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/findbarButton-next@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/findbarButton-next@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/findbarButton-previous-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/findbarButton-previous-rtl.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/findbarButton-previous-rtl@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/findbarButton-previous-rtl@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/findbarButton-previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/findbarButton-previous.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/findbarButton-previous@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/findbarButton-previous@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/grab.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/grab.cur -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/grabbing.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/grabbing.cur -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/loading-icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/loading-icon.gif -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/loading-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/loading-small.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/loading-small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/loading-small@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/secondaryToolbarButton-documentProperties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/secondaryToolbarButton-documentProperties.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/secondaryToolbarButton-documentProperties@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/secondaryToolbarButton-documentProperties@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/secondaryToolbarButton-firstPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/secondaryToolbarButton-firstPage.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/secondaryToolbarButton-firstPage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/secondaryToolbarButton-firstPage@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/secondaryToolbarButton-handTool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/secondaryToolbarButton-handTool.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/secondaryToolbarButton-handTool@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/secondaryToolbarButton-handTool@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/secondaryToolbarButton-lastPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/secondaryToolbarButton-lastPage.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/secondaryToolbarButton-lastPage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/secondaryToolbarButton-lastPage@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/secondaryToolbarButton-rotateCcw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/secondaryToolbarButton-rotateCcw.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/secondaryToolbarButton-rotateCcw@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/secondaryToolbarButton-rotateCcw@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/secondaryToolbarButton-rotateCw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/secondaryToolbarButton-rotateCw.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/secondaryToolbarButton-rotateCw@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/secondaryToolbarButton-rotateCw@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/shadow.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/texture.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-bookmark.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-bookmark@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-bookmark@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-download.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-download@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-download@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-menuArrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-menuArrows.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-menuArrows@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-menuArrows@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-openFile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-openFile.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-openFile@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-openFile@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-pageDown-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-pageDown-rtl.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-pageDown-rtl@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-pageDown-rtl@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-pageDown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-pageDown.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-pageDown@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-pageDown@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-pageUp-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-pageUp-rtl.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-pageUp-rtl@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-pageUp-rtl@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-pageUp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-pageUp.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-pageUp@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-pageUp@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-presentationMode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-presentationMode.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-presentationMode@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-presentationMode@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-print.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-print.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-print@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-print@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-search.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-search@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-search@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-secondaryToolbarToggle-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-secondaryToolbarToggle-rtl.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-secondaryToolbarToggle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-secondaryToolbarToggle.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-secondaryToolbarToggle@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-secondaryToolbarToggle@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-sidebarToggle-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-sidebarToggle-rtl.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-sidebarToggle-rtl@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-sidebarToggle-rtl@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-sidebarToggle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-sidebarToggle.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-sidebarToggle@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-sidebarToggle@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-viewAttachments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-viewAttachments.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-viewAttachments@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-viewAttachments@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-viewOutline-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-viewOutline-rtl.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-viewOutline-rtl@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-viewOutline-rtl@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-viewOutline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-viewOutline.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-viewOutline@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-viewOutline@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-viewThumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-viewThumbnail.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-viewThumbnail@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-viewThumbnail@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-zoomIn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-zoomIn.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-zoomIn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-zoomIn@2x.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-zoomOut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-zoomOut.png -------------------------------------------------------------------------------- /mfr/extensions/pdf/static/web/images/toolbarButton-zoomOut@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/pdf/static/web/images/toolbarButton-zoomOut@2x.png -------------------------------------------------------------------------------- /mfr/extensions/rst/__init__.py: -------------------------------------------------------------------------------- 1 | from .render import RstRenderer # noqa 2 | -------------------------------------------------------------------------------- /mfr/extensions/rst/render.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | import docutils 4 | from docutils.core import publish_parts 5 | 6 | from mako.lookup import TemplateLookup 7 | 8 | from mfr.core import extension 9 | 10 | 11 | class RstRenderer(extension.BaseRenderer): 12 | 13 | TEMPLATE = TemplateLookup( 14 | directories=[ 15 | os.path.join(os.path.dirname(__file__), 'templates') 16 | ]).get_template('viewer.mako') 17 | 18 | def __init__(self, *args, **kwargs): 19 | super().__init__(*args, **kwargs) 20 | self.metrics.add('docutils_version', docutils.__version__) 21 | 22 | def render(self): 23 | with open(self.file_path, 'r') as fp: 24 | body = publish_parts(fp.read(), writer_name='html')['html_body'] 25 | return self.TEMPLATE.render(base=self.assets_url, body=body) 26 | 27 | @property 28 | def file_required(self): 29 | return True 30 | 31 | @property 32 | def cache_result(self): 33 | return True 34 | -------------------------------------------------------------------------------- /mfr/extensions/rst/templates/viewer.mako: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | ${body} 5 |
6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /mfr/extensions/settings.py: -------------------------------------------------------------------------------- 1 | from mfr import settings 2 | 3 | config = settings.child('EXTENSION_CONFIG') 4 | 5 | # LOCAL_DEVELOPMENT must be set to true for extensions that produce a waterbutler URL in the 6 | # TEMPLATE to render, when using local docker development environment. Call will be coming from 7 | # browser instead of docker container. 8 | 9 | LOCAL_DEVELOPMENT = config.get_bool('LOCAL_DEVELOPMENT', False) 10 | DOCKER_LOCAL_HOST = config.get('DOCKER_LOCAL_HOST', '192.168.168.167') 11 | LOCAL_HOST = config.get('LOCAL_HOST', 'localhost') 12 | -------------------------------------------------------------------------------- /mfr/extensions/svg/__init__.py: -------------------------------------------------------------------------------- 1 | from .render import SvgRenderer # noqa 2 | -------------------------------------------------------------------------------- /mfr/extensions/svg/render.py: -------------------------------------------------------------------------------- 1 | """SVG Image renderer module.""" 2 | import os 3 | 4 | from mako.lookup import TemplateLookup 5 | 6 | from mfr.core import extension 7 | from mfr.extensions.utils import escape_url_for_template 8 | 9 | 10 | class SvgRenderer(extension.BaseRenderer): 11 | 12 | TEMPLATE = TemplateLookup( 13 | directories=[ 14 | os.path.join(os.path.dirname(__file__), 'templates') 15 | ]).get_template('viewer.mako') 16 | 17 | def render(self): 18 | safe_url = escape_url_for_template(self.url) 19 | return self.TEMPLATE.render(base=self.assets_url, url=safe_url) 20 | 21 | @property 22 | def file_required(self): 23 | return False 24 | 25 | @property 26 | def cache_result(self): 27 | return False 28 | -------------------------------------------------------------------------------- /mfr/extensions/svg/templates/viewer.mako: -------------------------------------------------------------------------------- 1 | 2 | 3 | 15 | -------------------------------------------------------------------------------- /mfr/extensions/tabular/__init__.py: -------------------------------------------------------------------------------- 1 | from .render import TabularRenderer # noqa 2 | -------------------------------------------------------------------------------- /mfr/extensions/tabular/compat.py: -------------------------------------------------------------------------------- 1 | from __future__ import division 2 | 3 | range = range 4 | string_types = (str,) 5 | unicode = str 6 | basestring = (str, bytes) 7 | -------------------------------------------------------------------------------- /mfr/extensions/tabular/libs/__init__.py: -------------------------------------------------------------------------------- 1 | """Imports a function from the correct library. This structure allows the 2 | function name to be passed without initializing its module and without breaking 3 | if the module's requirements are not met. """ 4 | 5 | 6 | def csv_stdlib(): 7 | from ..libs.stdlib_tools import csv_stdlib 8 | return csv_stdlib 9 | 10 | 11 | def csv_pandas(): 12 | from ..libs.panda_tools import csv_pandas 13 | return csv_pandas 14 | 15 | 16 | def tsv_pandas(): 17 | from ..libs.panda_tools import tsv_pandas 18 | return tsv_pandas 19 | 20 | 21 | def dta_pandas(): 22 | from ..libs.panda_tools import dta_pandas 23 | return dta_pandas 24 | 25 | 26 | def sav_stdlib(): 27 | from ..libs.stdlib_tools import sav_stdlib 28 | return sav_stdlib 29 | 30 | def sav_pandas(): 31 | from ..libs.panda_tools import sav_pandas 32 | return sav_pandas 33 | 34 | 35 | def xlsx_xlrd(): 36 | from ..libs.xlrd_tools import xlsx_xlrd 37 | return xlsx_xlrd 38 | 39 | def mat_h5py_scipy(): 40 | from ..libs.h5py_scipy_tools import mat_h5py_scipy 41 | return mat_h5py_scipy 42 | -------------------------------------------------------------------------------- /mfr/extensions/tabular/libs/ezodf_tools.py: -------------------------------------------------------------------------------- 1 | """ This library works for some ods files but not others. Because it doesn't 2 | work consistently, we have disabled this for the moment.""" 3 | 4 | import ezodf 5 | from collections import OrderedDict 6 | from ..utilities import data_population, header_population 7 | 8 | 9 | def ods_ezodf(fp): 10 | """Read and convert a ods file to JSON format using the ezodf library 11 | :param fp: File pointer object 12 | :return: tuple of table headers and data 13 | """ 14 | 15 | workbook = ezodf.opendoc(fp.name) 16 | sheets = OrderedDict() 17 | 18 | for sheet in workbook.sheets: 19 | list_data = [[cell.value for cell in row] for row in sheet.rows()] 20 | 21 | header = header_population(list_data[0]) 22 | data = data_population(list_data) 23 | sheets[str(sheet)] = (header, data) 24 | 25 | return sheets 26 | -------------------------------------------------------------------------------- /mfr/extensions/tabular/settings.py: -------------------------------------------------------------------------------- 1 | from mfr import settings 2 | from mfr.extensions.tabular import libs 3 | 4 | 5 | config = settings.child('TABULAR_EXTENSION_CONFIG') 6 | 7 | MAX_FILE_SIZE = int(config.get('MAX_FILE_SIZE', 10 * 1024 * 1024)) # 10Mb 8 | MAX_SIZE = int(config.get('MAX_SIZE', 10000)) # max number of rows or columns allowed. 9 | TABLE_WIDTH = int(config.get('TABLE_WIDTH', 700)) 10 | TABLE_HEIGHT = int(config.get('TABLE_HEIGHT', 600)) 11 | 12 | LIBS = config.get_object('LIBS', { 13 | '.csv': [libs.csv_stdlib], 14 | '.tsv': [libs.csv_stdlib], 15 | '.gsheet': [libs.xlsx_xlrd], 16 | '.xlsx': [libs.xlsx_xlrd], 17 | '.xls': [libs.xlsx_xlrd], 18 | '.dta': [libs.dta_pandas], 19 | '.sav': [libs.sav_stdlib], 20 | '.mat': [libs.mat_h5py_scipy], 21 | # '.ods': [libs.ods_ezodf], 22 | }) 23 | 24 | SMALL_TABLE = config.get_object('SMALL_TABLE', { 25 | 'enableCellNavigation': True, 26 | 'enableColumnReorder': False, 27 | 'forceFitColumns': True, 28 | 'syncColumnCellResize': True, 29 | 'multiColumnSort': True, 30 | }) 31 | 32 | BIG_TABLE = config.get_object('BIG_TABLE', { 33 | 'enableCellNavigation': True, 34 | 'enableColumnReorder': False, 35 | 'syncColumnCellResize': True, 36 | 'multiColumnSort': True, 37 | }) 38 | 39 | PSPP_CONVERT_BIN = config.get('PSPP_CONVERT_BIN', '/usr/bin/pspp-convert') 40 | PSPP_CONVERT_TIMEOUT = int(config.get('PSPP_CONVERT_TIMEOUT', 30)) # In seconds 41 | -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/actions.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/actions.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/ajax-loader-small.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/ajax-loader-small.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/arrow_redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/arrow_redo.png -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/arrow_right_peppermint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/arrow_right_peppermint.png -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/arrow_right_spearmint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/arrow_right_spearmint.png -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/arrow_undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/arrow_undo.png -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/bullet_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/bullet_blue.png -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/bullet_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/bullet_star.png -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/bullet_toggle_minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/bullet_toggle_minus.png -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/bullet_toggle_plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/bullet_toggle_plus.png -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/calendar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/calendar.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/collapse.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/collapse.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/comment_yellow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/comment_yellow.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/down.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/drag-handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/drag-handle.png -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/editor-helper-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/editor-helper-bg.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/expand.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/expand.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/header-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/header-bg.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/header-columns-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/header-columns-bg.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/header-columns-over-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/header-columns-over-bg.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/help.png -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/info.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/info.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/listview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/listview.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/pencil.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/pencil.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/row-over-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/row-over-bg.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/sort-asc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/sort-asc.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/sort-asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/sort-asc.png -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/sort-desc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/sort-desc.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/sort-desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/sort-desc.png -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/stripes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/stripes.png -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/tag_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/tag_red.png -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/tick.png -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/user_identity.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/user_identity.gif -------------------------------------------------------------------------------- /mfr/extensions/tabular/static/images/user_identity_plus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/extensions/tabular/static/images/user_identity_plus.gif -------------------------------------------------------------------------------- /mfr/extensions/unoconv/__init__.py: -------------------------------------------------------------------------------- 1 | from .export import UnoconvExporter # noqa 2 | from .render import UnoconvRenderer # noqa 3 | -------------------------------------------------------------------------------- /mfr/extensions/unoconv/export.py: -------------------------------------------------------------------------------- 1 | from http import HTTPStatus 2 | from os.path import basename, splitext 3 | from subprocess import run, CalledProcessError 4 | 5 | from mfr.core.extension import BaseExporter 6 | from mfr.core.exceptions import SubprocessError 7 | from mfr.extensions.unoconv.settings import (PORT, 8 | ADDRESS, 9 | UNOCONV_BIN, 10 | UNOCONV_TIMEOUT) 11 | 12 | 13 | class UnoconvExporter(BaseExporter): 14 | 15 | def export(self): 16 | try: 17 | run([ 18 | UNOCONV_BIN, 19 | '-n', 20 | '-c', 'socket,host={},port={};urp;StarOffice.ComponentContext'.format(ADDRESS, PORT), 21 | '-f', self.format, 22 | '-o', self.output_file_path, 23 | '-vvv', 24 | self.source_file_path 25 | ], check=True, timeout=UNOCONV_TIMEOUT) 26 | except CalledProcessError as err: 27 | name, extension = splitext(basename(self.source_file_path)) 28 | raise SubprocessError( 29 | 'Unable to export the file in the requested format, please try again later.', 30 | process='unoconv', 31 | cmd=str(err.cmd), 32 | returncode=err.returncode, 33 | path=str(self.source_file_path), 34 | code=HTTPStatus.BAD_REQUEST, 35 | extension=extension or '', 36 | exporter_class='unoconv', 37 | ) 38 | -------------------------------------------------------------------------------- /mfr/extensions/unoconv/settings.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from mfr import settings 4 | 5 | 6 | config = settings.child('UNOCONV_EXTENSION_CONFIG') 7 | 8 | UNOCONV_BIN = config.get('UNOCONV_BIN', '/usr/local/bin/unoconv') 9 | UNOCONV_TIMEOUT = int(config.get('UNOCONV_TIMEOUT', 60)) 10 | 11 | ADDRESS = config.get('SERVER', os.environ.get('UNOCONV_PORT_2002_TCP_ADDR', '127.0.0.1')) 12 | PORT = config.get('PORT', os.environ.get('UNOCONV_PORT_2002_TCP_PORT', '2002')) 13 | 14 | DEFAULT_RENDER = {'renderer': '.pdf', 'format': 'pdf'} 15 | 16 | RENDER_MAP = config.get_object('RENDER_MAP', { 17 | # 'csv': {'renderer': '.xlsx', 'format': 'xlsx'}, 18 | # 'ppt': {'renderer': '.pdf', 'format': 'pdf'}, 19 | # 'pptx': {'renderer': '.pdf', 'format': 'pdf'}, 20 | }) 21 | -------------------------------------------------------------------------------- /mfr/extensions/video/__init__.py: -------------------------------------------------------------------------------- 1 | from .render import VideoRenderer # noqa 2 | -------------------------------------------------------------------------------- /mfr/extensions/video/render.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from mako.lookup import TemplateLookup 4 | 5 | from mfr.core import extension 6 | from mfr.extensions.utils import munge_url_for_localdev, escape_url_for_template 7 | 8 | 9 | class VideoRenderer(extension.BaseRenderer): 10 | 11 | TEMPLATE = TemplateLookup( 12 | directories=[ 13 | os.path.join(os.path.dirname(__file__), 'templates') 14 | ]).get_template('viewer.mako') 15 | 16 | def render(self): 17 | download_url = munge_url_for_localdev(self.metadata.download_url) 18 | safe_url = escape_url_for_template(download_url.geturl()) 19 | return self.TEMPLATE.render(url=safe_url) 20 | 21 | @property 22 | def file_required(self): 23 | return False 24 | 25 | @property 26 | def cache_result(self): 27 | return False 28 | -------------------------------------------------------------------------------- /mfr/extensions/video/templates/viewer.mako: -------------------------------------------------------------------------------- 1 | 8 | 9 | 13 | 14 | 15 | 16 | 19 | -------------------------------------------------------------------------------- /mfr/extensions/zip/__init__.py: -------------------------------------------------------------------------------- 1 | from .render import ZipRenderer # noqa 2 | -------------------------------------------------------------------------------- /mfr/extensions/zip/render.py: -------------------------------------------------------------------------------- 1 | import os 2 | import zipfile 3 | 4 | import markupsafe 5 | from mako.lookup import TemplateLookup 6 | 7 | from mfr.core import extension 8 | from mfr.core.utils import sizeof_fmt 9 | 10 | 11 | class ZipRenderer(extension.BaseRenderer): 12 | 13 | TEMPLATE = TemplateLookup( 14 | directories=[ 15 | os.path.join(os.path.dirname(__file__), 'templates') 16 | ]).get_template('viewer.mako') 17 | 18 | def render(self): 19 | zip_file = zipfile.ZipFile(self.file_path, 'r') 20 | 21 | filelist = [{'name': markupsafe.escape(file.filename), 22 | 'size': sizeof_fmt(int(file.file_size)), 23 | 'date': "%d-%02d-%02d %02d:%02d:%02d" % file.date_time[:6]} for file in zip_file.filelist 24 | if not file.filename.startswith('__MACOSX')] 25 | 26 | message = '' if filelist else 'This zip file is empty.' 27 | 28 | return self.TEMPLATE.render(zipped_filenames=filelist, message=message) 29 | 30 | @property 31 | def file_required(self): 32 | return True 33 | 34 | @property 35 | def cache_result(self): 36 | return True 37 | -------------------------------------------------------------------------------- /mfr/extensions/zip/templates/viewer.mako: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |

6 | Zip File: 7 |

8 |

9 | Download the .zip file to view the contents. 10 |

11 | ${message} 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | % for file in zipped_filenames: 20 | 21 | 22 | 23 | 25 | % endfor 26 | 27 |
File NameModifiedSize
${file['name']}${file['date']}${file['size']} 24 |
28 |
29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /mfr/providers/__init__.py: -------------------------------------------------------------------------------- 1 | __import__("pkg_resources").declare_namespace(__name__) 2 | -------------------------------------------------------------------------------- /mfr/providers/http/__init__.py: -------------------------------------------------------------------------------- 1 | from .provider import HttpProvider # noqa 2 | -------------------------------------------------------------------------------- /mfr/providers/http/provider.py: -------------------------------------------------------------------------------- 1 | import os 2 | import hashlib 3 | import logging 4 | import mimetypes 5 | from urllib.parse import urlparse 6 | 7 | import aiohttp 8 | 9 | from waterbutler.core import streams 10 | 11 | from mfr.core import provider 12 | from mfr.core import exceptions 13 | 14 | logger = logging.getLogger(__name__) 15 | 16 | 17 | class HttpProvider(provider.BaseProvider): 18 | """Basic MFR provider. Infers file metadata (extension, type) from the url. Downloads by 19 | issuing a GET to the url. 20 | """ 21 | 22 | NAME = 'http' 23 | 24 | async def metadata(self): 25 | path = urlparse(self.url).path 26 | name, ext = os.path.splitext(os.path.split(path)[-1]) 27 | content_type, _ = mimetypes.guess_type(self.url) 28 | unique_key = hashlib.sha256(self.url.encode('utf-8')).hexdigest() 29 | return provider.ProviderMetadata(name, ext, content_type, unique_key, self.url) 30 | 31 | async def download(self): 32 | response = await aiohttp.request('GET', self.url) 33 | if response.status >= 400: 34 | err_resp = await response.read() 35 | logger.error('Unable to download file: ({}) {}'.format(response.status, err_resp.decode('utf-8'))) 36 | raise exceptions.DownloadError( 37 | 'Unable to download the requested file, please try again later.', 38 | download_url=self.url, 39 | response=await response.text(), 40 | code=response.status, 41 | provider='http', 42 | ) 43 | return streams.ResponseStreamReader(response) 44 | -------------------------------------------------------------------------------- /mfr/providers/http/settings.py: -------------------------------------------------------------------------------- 1 | from mfr import settings 2 | 3 | 4 | config = settings.child('HTTP_PROVIDER_CONFIG') 5 | -------------------------------------------------------------------------------- /mfr/providers/osf/__init__.py: -------------------------------------------------------------------------------- 1 | from .provider import OsfProvider # noqa 2 | -------------------------------------------------------------------------------- /mfr/providers/osf/settings.py: -------------------------------------------------------------------------------- 1 | from mfr import settings 2 | 3 | 4 | config = settings.child('OSF_PROVIDER_CONFIG') 5 | 6 | MFR_IDENTIFYING_HEADER = config.get('MFR_IDENTIFYING_HEADER', 'X-Cos-Mfr-Render-Request') 7 | MFR_ACTION_HEADER = config.get('MFR_ACTION_HEADER', 'X-Cos-Mfr-Request-Action') 8 | -------------------------------------------------------------------------------- /mfr/server/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/server/__init__.py -------------------------------------------------------------------------------- /mfr/server/handlers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/server/handlers/__init__.py -------------------------------------------------------------------------------- /mfr/server/handlers/exporters.py: -------------------------------------------------------------------------------- 1 | import pkg_resources 2 | import tornado.web 3 | 4 | 5 | class ExportersHandler(tornado.web.RequestHandler): 6 | 7 | def get(self): 8 | """List available exporters""" 9 | 10 | exporters = {} 11 | for ep in pkg_resources.iter_entry_points(group='mfr.exporters'): 12 | exporters.update({ep.name: ep.load().__name__}) 13 | 14 | self.write({ 15 | 'exporters': exporters, 16 | }) 17 | -------------------------------------------------------------------------------- /mfr/server/handlers/renderers.py: -------------------------------------------------------------------------------- 1 | import pkg_resources 2 | import tornado.web 3 | 4 | 5 | class RenderersHandler(tornado.web.RequestHandler): 6 | 7 | def get(self): 8 | """List available renderers""" 9 | 10 | renderers = {} 11 | for ep in pkg_resources.iter_entry_points(group='mfr.renderers'): 12 | renderers.update({ep.name: ep.load().__name__}) 13 | 14 | self.write({ 15 | 'renderers': renderers, 16 | }) 17 | -------------------------------------------------------------------------------- /mfr/server/handlers/status.py: -------------------------------------------------------------------------------- 1 | import tornado.web 2 | 3 | from mfr.version import __version__ 4 | 5 | 6 | class StatusHandler(tornado.web.RequestHandler): 7 | 8 | def get(self): 9 | """List information about modular-file-renderer status""" 10 | self.write({ 11 | 'status': 'up', 12 | 'version': __version__ 13 | }) 14 | -------------------------------------------------------------------------------- /mfr/server/static/css/mfr.css: -------------------------------------------------------------------------------- 1 | .mfr-logo-spin { 2 | -webkit-animation: mfr-spin 3s infinite linear, mfr-opacity 3s infinite linear; 3 | -moz-animation: mfr-spin 3s infinite linear mfr-opacity 3s infinite linear; 4 | animation: mfr-spin 3s infinite linear, mfr-opacity 3s infinite linear; 5 | position: absolute; 6 | top: 0; 7 | left: 50%; 8 | z-index: -1; 9 | } 10 | @-moz-keyframes mfr-spin { 11 | from { 12 | -moz-transform: rotate(0deg); 13 | } 14 | to { 15 | -moz-transform: rotate(360deg); 16 | } 17 | } 18 | @-webkit-keyframes mfr-spin { 19 | from { 20 | -webkit-transform: rotate(0deg); 21 | } 22 | to { 23 | -webkit-transform: rotate(360deg); 24 | } 25 | } 26 | @keyframes mfr-spin { 27 | from { 28 | -webkit-transform: rotate(0deg); 29 | transform:rotate(0deg); 30 | } 31 | to { 32 | -webkit-transform: rotate(360deg); 33 | transform:rotate(360deg); 34 | } 35 | } 36 | @-moz-keyframes mfr-opacity { 37 | 0% { 38 | opacity : 0.1 39 | } 40 | 50% { 41 | opacity: 1 42 | } 43 | 100% { 44 | opacity: 0.1 45 | } 46 | } 47 | @-webkit-keyframes mfr-opacity { 48 | 0% { 49 | opacity : 0.1 50 | } 51 | 50% { 52 | opacity: 1 53 | } 54 | 100% { 55 | opacity: 0.1 56 | } 57 | } 58 | @keyframes mfr-opacity { 59 | 0% { 60 | opacity : 0.1 61 | } 62 | 50% { 63 | opacity: 1 64 | } 65 | 100% { 66 | opacity: 0.1 67 | } 68 | } 69 | 70 | .embed-responsive-pdf { 71 | padding-bottom: 95%; 72 | } -------------------------------------------------------------------------------- /mfr/server/static/images/cos_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/server/static/images/cos_logo.png -------------------------------------------------------------------------------- /mfr/server/static/images/loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/server/static/images/loading.png -------------------------------------------------------------------------------- /mfr/server/static/images/vid-thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/mfr/server/static/images/vid-thumbnail.png -------------------------------------------------------------------------------- /mfr/server/static/js/mfr.child.js: -------------------------------------------------------------------------------- 1 | ;(function() { 2 | 'use strict'; 3 | 4 | window.pymChild = new pym.Child(); 5 | 6 | window.addEventListener('load', function () { 7 | window.pymChild.sendHeight(); 8 | 9 | var anchors = document.getElementsByTagName('a'); 10 | Array.prototype.slice.call(anchors).forEach(function (el) { 11 | el.addEventListener('click', function (e) { 12 | if (this.href !== undefined && 13 | this.href !== "" && 14 | this.href[0] !== '#') { 15 | e.preventDefault(); 16 | window.pymChild.sendMessage('location', this.href); 17 | } 18 | }); 19 | }); 20 | }); 21 | 22 | window.addEventListener('resize', function () { 23 | window.pymChild.sendHeight(); 24 | }); 25 | 26 | window.pymChild.onMessage('resize', function () { 27 | window.pymChild.sendHeight(); 28 | }); 29 | })(); 30 | -------------------------------------------------------------------------------- /mfr/version.py: -------------------------------------------------------------------------------- 1 | __version__ = '24.0.0' 2 | -------------------------------------------------------------------------------- /readthedocs.yml: -------------------------------------------------------------------------------- 1 | requirements_file: doc-requirements.txt 2 | python: 3 | setup_py_install: true 4 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | aiohttp==0.18.4 2 | chardet==2.3.0 3 | furl==0.4.2 4 | humanfriendly==2.1 5 | invoke==0.13.0 6 | mako==1.0.1 7 | raven==5.27.0 8 | setuptools==37.0.0 9 | stevedore==1.2.0 10 | tornado==4.3 11 | 12 | # WaterButler 13 | git+https://github.com/CenterForOpenScience/waterbutler.git@0.38.6#egg=waterbutler 14 | agent==0.1.2 15 | google-auth==1.4.1 16 | 17 | # CodePygments 18 | Pygments==2.12.0 19 | 20 | # Docx 21 | #git+https://github.com/jsocol/bleach.git 22 | pydocx==0.7.0 23 | 24 | # Image 25 | olefile==0.44 26 | Pillow==4.3.0 27 | psd-tools==1.4 28 | 29 | # IPython 30 | ipython==5.2.2 31 | nbconvert==4.2.0 32 | nbformat==4.1.0 33 | traitlets==4.2.2 34 | jsonschema==2.4.0 35 | jinja2==2.10.1 36 | mistune==0.8.1 37 | 38 | # Pdf 39 | reportlab==3.6.5 40 | 41 | # Pptx 42 | # python-pptx==0.5.7 43 | 44 | # Rst 45 | docutils==0.12 46 | 47 | # Tabular 48 | pandas==0.25.1 49 | xlrd==1.0.0 50 | h5py==2.7.0 51 | scipy==0.19.1 52 | 53 | # Md 54 | markdown==2.6.2 55 | 56 | certifi==2021.5.30 57 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | # E501: Line too long 2 | # E127: continuation line over-indented for visual indent 3 | # E128: continuation line under-indented for visual indent 4 | # E265: block comment should start with # 5 | # E301: expected 1 blank line, found 0 6 | # E302: expected 2 blank lines, found 0 7 | # F403: unable to detect undefined names 8 | [flake8] 9 | ignore = E501,E127,E128,E265,E301,E302,F403,E731 10 | max-line-length = 100 11 | exclude = .ropeproject,tests/*,src/*,env,venv,node_modules/* 12 | 13 | [pytest] 14 | norecursedirs = .* build CVS _darcs {arch} *.egg venv node_modules/* 15 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/tests/__init__.py -------------------------------------------------------------------------------- /tests/core/test_utils.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | import pkg_resources 3 | 4 | from mfr.core import utils as mfr_utils 5 | 6 | 7 | class TestGetRendererName: 8 | 9 | def test_get_renderer_name_explicit_assertions(self): 10 | assert mfr_utils.get_renderer_name('.jpg') == 'ImageRenderer' 11 | assert mfr_utils.get_renderer_name('.txt') == 'CodePygmentsRenderer' 12 | assert mfr_utils.get_renderer_name('.xlsx') == 'TabularRenderer' 13 | assert mfr_utils.get_renderer_name('.odt') == 'UnoconvRenderer' 14 | assert mfr_utils.get_renderer_name('.pdf') == 'PdfRenderer' 15 | 16 | def test_get_renderer_name(self): 17 | entry_points = pkg_resources.iter_entry_points(group='mfr.renderers') 18 | for ep in entry_points: 19 | expected = ep.attrs[0] 20 | assert mfr_utils.get_renderer_name(ep.name) == expected 21 | 22 | def test_get_renderer_name_no_entry_point(self): 23 | assert mfr_utils.get_renderer_name('jpg') == '' # extensions must begin with a period 24 | 25 | 26 | class TestGetExporterName: 27 | 28 | def test_get_exporter_name_explicit_assertions(self): 29 | assert mfr_utils.get_exporter_name('.jpg') == 'ImageExporter' 30 | assert mfr_utils.get_exporter_name('.odt') == 'UnoconvExporter' 31 | 32 | def test_get_exporter_name(self): 33 | entry_points = pkg_resources.iter_entry_points(group='mfr.exporters') 34 | for ep in entry_points: 35 | expected = ep.attrs[0] 36 | assert mfr_utils.get_exporter_name(ep.name) == expected 37 | 38 | def test_get_exporter_name_no_entry_point(self): 39 | assert mfr_utils.get_exporter_name('jpg') == '' # extensions must begin with a period 40 | -------------------------------------------------------------------------------- /tests/documentation/test_entrypoints.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | import pytest 4 | import pkg_resources 5 | 6 | 7 | class TestEntryPoints: 8 | 9 | def test_entry_points(self): 10 | 11 | parent_dir = os.pardir 12 | readme_path = os.path.join(os.path.dirname((parent_dir)), 'supportedextensions.md') 13 | with open(readme_path, 'r') as file: 14 | readme_ext = [line.strip()[2:] for line in file if '*' in line] 15 | for ep in pkg_resources.iter_entry_points(group='mfr.renderers'): 16 | if ep.name != 'none': 17 | assert ep.name in readme_ext 18 | -------------------------------------------------------------------------------- /tests/extensions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/tests/extensions/__init__.py -------------------------------------------------------------------------------- /tests/extensions/audio/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CenterForOpenScience/modular-file-renderer/a7ef407b3f9a22f7f25232f1b292ddf040b6eded/tests/extensions/audio/__init__.py -------------------------------------------------------------------------------- /tests/extensions/audio/test_renderer.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | 3 | from mfr.core.provider import ProviderMetadata 4 | 5 | from mfr.extensions.audio import AudioRenderer 6 | 7 | 8 | @pytest.fixture 9 | def metadata(): 10 | return ProviderMetadata('test', '.mp3', 'text/plain', '1234', 'http://wb.osf.io/file/test.mp3?token=1234') 11 | 12 | 13 | @pytest.fixture 14 | def file_path(): 15 | return '/tmp/test.mp3' 16 | 17 | 18 | @pytest.fixture 19 | def url(): 20 | return 'http://osf.io/file/test.mp3' 21 | 22 | 23 | @pytest.fixture 24 | def assets_url(): 25 | return 'http://mfr.osf.io/assets' 26 | 27 | 28 | @pytest.fixture 29 | def export_url(): 30 | return 'http://mfr.osf.io/export?url=' + url() 31 | 32 | 33 | @pytest.fixture 34 | def renderer(metadata, file_path, url, assets_url, export_url): 35 | return AudioRenderer(metadata, file_path, url, assets_url, export_url) 36 | 37 | 38 | class TestAudioRenderer: 39 | 40 | def test_render_audio(self, renderer, url): 41 | body = renderer.render() 42 | assert '