scitex 2.13.0__py3-none-any.whl → 2.15.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- scitex/__init__.py +80 -2
- scitex/__version__.py +11 -8
- scitex/_env_loader.py +156 -0
- scitex/_mcp_resources/__init__.py +37 -0
- scitex/_mcp_resources/_cheatsheet.py +135 -0
- scitex/_mcp_resources/_figrecipe.py +138 -0
- scitex/_mcp_resources/_formats.py +102 -0
- scitex/_mcp_resources/_modules.py +337 -0
- scitex/_mcp_resources/_session.py +149 -0
- scitex/_mcp_tools/__init__.py +40 -0
- scitex/_mcp_tools/audio.py +200 -0
- scitex/_mcp_tools/canvas.py +128 -0
- scitex/_mcp_tools/capture.py +174 -0
- scitex/_mcp_tools/diagram.py +22 -0
- scitex/_mcp_tools/introspect.py +191 -0
- scitex/_mcp_tools/plt.py +305 -0
- scitex/_mcp_tools/scholar.py +447 -0
- scitex/_mcp_tools/social.py +244 -0
- scitex/_mcp_tools/stats.py +206 -0
- scitex/_mcp_tools/template.py +66 -0
- scitex/_mcp_tools/ui.py +80 -0
- scitex/_mcp_tools/writer.py +37 -0
- scitex/ai/_gen_ai/_PARAMS.py +10 -7
- scitex/ai/classification/reporters/_ClassificationReporter.py +0 -0
- scitex/ai/classification/reporters/_SingleClassificationReporter.py +45 -1603
- scitex/ai/classification/reporters/_mixins/__init__.py +36 -0
- scitex/ai/classification/reporters/_mixins/_constants.py +67 -0
- scitex/ai/classification/reporters/_mixins/_cv_summary.py +387 -0
- scitex/ai/classification/reporters/_mixins/_feature_importance.py +119 -0
- scitex/ai/classification/reporters/_mixins/_metrics.py +275 -0
- scitex/ai/classification/reporters/_mixins/_plotting.py +179 -0
- scitex/ai/classification/reporters/_mixins/_reports.py +153 -0
- scitex/ai/classification/reporters/_mixins/_storage.py +160 -0
- scitex/ai/classification/timeseries/_TimeSeriesBlockingSplit.py +0 -0
- scitex/ai/classification/timeseries/_TimeSeriesCalendarSplit.py +0 -0
- scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit.py +0 -0
- scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit_v01-not-using-n_splits.py +0 -0
- scitex/ai/classification/timeseries/_TimeSeriesStratifiedSplit.py +0 -0
- scitex/ai/classification/timeseries/_normalize_timestamp.py +0 -0
- scitex/ai/metrics/_calc_seizure_prediction_metrics.py +0 -0
- scitex/ai/plt/_plot_feature_importance.py +0 -0
- scitex/ai/plt/_plot_learning_curve.py +0 -0
- scitex/ai/plt/_plot_optuna_study.py +0 -0
- scitex/ai/plt/_plot_pre_rec_curve.py +0 -0
- scitex/ai/plt/_plot_roc_curve.py +0 -0
- scitex/ai/plt/_stx_conf_mat.py +0 -0
- scitex/ai/training/_LearningCurveLogger.py +0 -0
- scitex/audio/README.md +88 -7
- scitex/audio/__init__.py +127 -60
- scitex/audio/__main__.py +17 -21
- scitex/audio/_branding.py +185 -0
- scitex/audio/_mcp/__init__.py +36 -0
- scitex/audio/_mcp/handlers.py +419 -0
- scitex/audio/_mcp/speak_handlers.py +238 -0
- scitex/audio/_mcp/tool_schemas.py +203 -0
- scitex/audio/_relay.py +225 -0
- scitex/audio/engines/elevenlabs_engine.py +6 -1
- scitex/audio/mcp_server.py +355 -337
- scitex/bridge/_figrecipe.py +40 -8
- scitex/bridge/_stats_plt.py +2 -4
- scitex/bridge/_stats_vis.py +7 -5
- scitex/browser/automation/CookieHandler.py +0 -0
- scitex/browser/collaboration/__init__.py +0 -1
- scitex/browser/core/BrowserMixin.py +0 -0
- scitex/browser/core/ChromeProfileManager.py +10 -3
- scitex/browser/debugging/_browser_logger.py +6 -9
- scitex/browser/debugging/_highlight_element.py +0 -0
- scitex/browser/debugging/_show_grid.py +0 -0
- scitex/browser/interaction/click_center.py +0 -0
- scitex/browser/interaction/click_with_fallbacks.py +0 -0
- scitex/browser/interaction/close_popups.py +0 -0
- scitex/browser/interaction/fill_with_fallbacks.py +0 -0
- scitex/browser/pdf/click_download_for_chrome_pdf_viewer.py +0 -0
- scitex/browser/pdf/detect_chrome_pdf_viewer.py +0 -0
- scitex/browser/stealth/HumanBehavior.py +0 -0
- scitex/browser/stealth/StealthManager.py +0 -0
- scitex/canvas/README.md +1 -1
- scitex/canvas/_mcp/__init__.py +4 -0
- scitex/canvas/_mcp/handlers.py +372 -0
- scitex/canvas/_mcp/tool_schemas.py +219 -0
- scitex/canvas/editor/_dearpygui/__init__.py +25 -0
- scitex/canvas/editor/_dearpygui/_editor.py +147 -0
- scitex/canvas/editor/_dearpygui/_handlers.py +476 -0
- scitex/canvas/editor/_dearpygui/_panels/__init__.py +17 -0
- scitex/canvas/editor/_dearpygui/_panels/_control.py +119 -0
- scitex/canvas/editor/_dearpygui/_panels/_element_controls.py +190 -0
- scitex/canvas/editor/_dearpygui/_panels/_preview.py +43 -0
- scitex/canvas/editor/_dearpygui/_panels/_sections.py +390 -0
- scitex/canvas/editor/_dearpygui/_plotting.py +187 -0
- scitex/canvas/editor/_dearpygui/_rendering.py +504 -0
- scitex/canvas/editor/_dearpygui/_selection.py +295 -0
- scitex/canvas/editor/_dearpygui/_state.py +93 -0
- scitex/canvas/editor/_dearpygui/_utils.py +61 -0
- scitex/canvas/editor/flask_editor/templates/__init__.py +32 -70
- scitex/canvas/mcp_server.py +2 -2
- scitex/capture/__init__.py +0 -1
- scitex/capture/_mcp/__init__.py +11 -0
- scitex/capture/_mcp/handlers.py +438 -0
- scitex/capture/_mcp/tool_schemas.py +270 -0
- scitex/cli/__init__.py +44 -2
- scitex/cli/audio.py +150 -3
- scitex/cli/browser.py +310 -0
- scitex/cli/capture.py +14 -3
- scitex/cli/introspect.py +443 -0
- scitex/cli/main.py +230 -103
- scitex/cli/mcp.py +362 -0
- scitex/cli/repro.py +18 -0
- scitex/cli/resource.py +18 -0
- scitex/cli/scholar/__init__.py +97 -0
- scitex/cli/scholar/_crossref_scitex.py +296 -0
- scitex/cli/scholar/_fetch.py +369 -0
- scitex/cli/scholar/_jobs.py +306 -0
- scitex/cli/scholar/_library.py +152 -0
- scitex/cli/scholar/_utils.py +35 -0
- scitex/cli/social.py +314 -0
- scitex/cli/stats.py +18 -0
- scitex/cli/template.py +18 -0
- scitex/cli/tex.py +18 -0
- scitex/cli/writer.py +190 -20
- scitex/compat/__init__.py +74 -0
- scitex/config/README.md +1 -1
- scitex/config/__init__.py +16 -2
- scitex/config/_env_registry.py +191 -0
- scitex/config/default.yaml +31 -0
- scitex/cv/__init__.py +87 -0
- scitex/cv/_draw.py +236 -0
- scitex/cv/_filters.py +217 -0
- scitex/cv/_io.py +157 -0
- scitex/cv/_transform.py +184 -0
- scitex/dev/__init__.py +2 -0
- scitex/dev/cv/__init__.py +60 -0
- scitex/dev/cv/_compose.py +330 -0
- scitex/dev/cv/_title_card.py +351 -0
- scitex/dev/plt/__init__.py +0 -0
- scitex/dev/plt/demo_plotters/__init__.py +0 -0
- scitex/dev/plt/mpl/get_dir_ax.py +0 -0
- scitex/dev/plt/mpl/get_signatures.py +0 -0
- scitex/dev/plt/mpl/get_signatures_details.py +0 -0
- scitex/diagram/__init__.py +42 -19
- scitex/diagram/mcp_server.py +13 -125
- scitex/dt/_normalize_timestamp.py +0 -0
- scitex/gen/__init__.py +0 -0
- scitex/gen/misc.py +0 -0
- scitex/git/_init.py +2 -2
- scitex/git/_session.py +0 -0
- scitex/introspect/__init__.py +75 -0
- scitex/introspect/_call_graph.py +303 -0
- scitex/introspect/_class_hierarchy.py +163 -0
- scitex/introspect/_core.py +42 -0
- scitex/introspect/_docstring.py +131 -0
- scitex/introspect/_examples.py +113 -0
- scitex/introspect/_imports.py +271 -0
- scitex/introspect/_mcp/__init__.py +37 -0
- scitex/introspect/_mcp/handlers.py +208 -0
- scitex/introspect/_members.py +151 -0
- scitex/introspect/_resolve.py +89 -0
- scitex/introspect/_signature.py +131 -0
- scitex/introspect/_source.py +80 -0
- scitex/introspect/_type_hints.py +172 -0
- scitex/io/bundle/README.md +1 -1
- scitex/io/bundle/kinds/__init__.py +0 -0
- scitex/io/bundle/kinds/_figure/__init__.py +0 -0
- scitex/io/bundle/kinds/_plot/__init__.py +0 -0
- scitex/io/bundle/kinds/_shape/__init__.py +0 -0
- scitex/io/bundle/kinds/_text/__init__.py +0 -0
- scitex/logging/_context.py +5 -4
- scitex/mcp_server.py +170 -145
- scitex/plt/__init__.py +249 -548
- scitex/plt/_figrecipe_integration.py +121 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/_wrappers.py +5 -10
- scitex/plt/_subplots/_FigWrapper.py +139 -88
- scitex/plt/_subplots/_export_as_csv_formatters/_format_pcolormesh.py +0 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stackplot.py +0 -0
- scitex/plt/docs/EXTERNAL_PACKAGE_BRANDING.md +149 -0
- scitex/plt/gallery/README.md +1 -1
- scitex/plt/styles/_plot_postprocess.py +35 -117
- scitex/plt/styles/_postprocess_helpers.py +158 -0
- scitex/plt/utils/_hitmap/__init__.py +82 -0
- scitex/plt/utils/_hitmap/_artist_extraction.py +343 -0
- scitex/plt/utils/_hitmap/_color_application.py +346 -0
- scitex/plt/utils/_hitmap/_color_conversion.py +121 -0
- scitex/plt/utils/_hitmap/_constants.py +40 -0
- scitex/plt/utils/_hitmap/_hitmap_core.py +334 -0
- scitex/plt/utils/_hitmap/_path_extraction.py +357 -0
- scitex/plt/utils/_hitmap/_query.py +113 -0
- scitex/plt/utils/_hitmap.py +46 -1616
- scitex/plt/utils/_metadata/__init__.py +80 -0
- scitex/plt/utils/_metadata/_artists/__init__.py +25 -0
- scitex/plt/utils/_metadata/_artists/_base.py +195 -0
- scitex/plt/utils/_metadata/_artists/_collections.py +356 -0
- scitex/plt/utils/_metadata/_artists/_extract.py +57 -0
- scitex/plt/utils/_metadata/_artists/_images.py +80 -0
- scitex/plt/utils/_metadata/_artists/_lines.py +261 -0
- scitex/plt/utils/_metadata/_artists/_patches.py +247 -0
- scitex/plt/utils/_metadata/_artists/_text.py +106 -0
- scitex/plt/utils/_metadata/_csv.py +416 -0
- scitex/plt/utils/_metadata/_detect.py +225 -0
- scitex/plt/utils/_metadata/_legend.py +127 -0
- scitex/plt/utils/_metadata/_rounding.py +117 -0
- scitex/plt/utils/_metadata/_verification.py +202 -0
- scitex/repro/_RandomStateManager.py +0 -0
- scitex/repro/_gen_ID.py +0 -0
- scitex/repro/_gen_timestamp.py +0 -0
- scitex/repro/_hash_array.py +0 -0
- scitex/schema/README.md +1 -1
- scitex/scholar/__init__.py +8 -0
- scitex/scholar/_mcp/__init__.py +4 -0
- scitex/scholar/_mcp/all_handlers.py +74 -0
- scitex/scholar/_mcp/crossref_handlers.py +265 -0
- scitex/scholar/_mcp/handlers.py +1478 -0
- scitex/scholar/_mcp/job_handlers.py +172 -0
- scitex/scholar/_mcp/job_tool_schemas.py +166 -0
- scitex/scholar/_mcp/tool_schemas.py +505 -0
- scitex/scholar/auth/core/BrowserAuthenticator.py +126 -9
- scitex/scholar/auth/providers/OpenAthensAuthenticator.py +55 -210
- scitex/scholar/auth/providers/_notifications.py +417 -0
- scitex/scholar/auth/sso/BaseSSOAutomator.py +36 -17
- scitex/scholar/auth/sso/UniversityOfMelbourneSSOAutomator.py +8 -15
- scitex/scholar/citation_graph/__init__.py +0 -1
- scitex/scholar/config/core/_PathManager.py +5 -1
- scitex/scholar/config/default.yaml +1 -1
- scitex/scholar/core/Paper.py +19 -41
- scitex/scholar/core/Scholar.py +64 -1688
- scitex/scholar/core/_mixins/__init__.py +36 -0
- scitex/scholar/core/_mixins/_enrichers.py +270 -0
- scitex/scholar/core/_mixins/_library_handlers.py +100 -0
- scitex/scholar/core/_mixins/_loaders.py +103 -0
- scitex/scholar/core/_mixins/_pdf_download.py +375 -0
- scitex/scholar/core/_mixins/_pipeline.py +312 -0
- scitex/scholar/core/_mixins/_project_handlers.py +125 -0
- scitex/scholar/core/_mixins/_savers.py +69 -0
- scitex/scholar/core/_mixins/_search.py +103 -0
- scitex/scholar/core/_mixins/_services.py +88 -0
- scitex/scholar/core/_mixins/_url_finding.py +105 -0
- scitex/scholar/core/journal_normalizer.py +36 -25
- scitex/scholar/crossref_scitex.py +367 -0
- scitex/scholar/docs/EXTERNAL_PACKAGE_BRANDING.md +149 -0
- scitex/scholar/examples/00_run_all.sh +120 -0
- scitex/scholar/examples/07_storage_integration.py +0 -0
- scitex/scholar/impact_factor/estimation/__init__.py +0 -1
- scitex/scholar/impact_factor/jcr/ImpactFactorJCREngine.py +19 -6
- scitex/scholar/impact_factor/jcr/build_database.py +0 -0
- scitex/scholar/jobs/_Job.py +266 -0
- scitex/scholar/jobs/_JobManager.py +458 -0
- scitex/scholar/jobs/__init__.py +74 -0
- scitex/scholar/jobs/_errors.py +346 -0
- scitex/scholar/jobs/_executors.py +397 -0
- scitex/scholar/mcp_server.py +52 -2
- scitex/scholar/pdf_download/ScholarPDFDownloader.py +38 -416
- scitex/scholar/pdf_download/_cli.py +154 -0
- scitex/scholar/pdf_download/strategies/__init__.py +11 -8
- scitex/scholar/pdf_download/strategies/chrome_pdf_viewer.py +11 -11
- scitex/scholar/pdf_download/strategies/manual_download_fallback.py +80 -3
- scitex/scholar/pipelines/ScholarPipelineBibTeX.py +73 -121
- scitex/scholar/pipelines/ScholarPipelineParallel.py +83 -140
- scitex/scholar/pipelines/ScholarPipelineSearchParallel.py +11 -13
- scitex/scholar/pipelines/ScholarPipelineSingle.py +83 -656
- scitex/scholar/pipelines/_single_steps.py +465 -0
- scitex/scholar/storage/BibTeXHandler.py +71 -23
- scitex/scholar/storage/PaperIO.py +53 -18
- scitex/scholar/storage/_BibTeXValidator.py +571 -0
- scitex/scholar/storage/_LibraryManager.py +97 -1695
- scitex/scholar/storage/__init__.py +17 -3
- scitex/scholar/storage/_mixins/__init__.py +30 -0
- scitex/scholar/storage/_mixins/_bibtex_handlers.py +128 -0
- scitex/scholar/storage/_mixins/_library_operations.py +218 -0
- scitex/scholar/storage/_mixins/_metadata_conversion.py +226 -0
- scitex/scholar/storage/_mixins/_paper_saving.py +456 -0
- scitex/scholar/storage/_mixins/_resolution.py +376 -0
- scitex/scholar/storage/_mixins/_storage_helpers.py +121 -0
- scitex/scholar/storage/_mixins/_symlink_handlers.py +226 -0
- scitex/scholar/url_finder/translators/individual/cell_press.py +131 -4
- scitex/security/README.md +3 -3
- scitex/security/__init__.py +0 -1
- scitex/session/README.md +1 -1
- scitex/session/__init__.py +0 -0
- scitex/session/_decorator.py +0 -0
- scitex/session/_lifecycle.py +0 -0
- scitex/sh/README.md +1 -1
- scitex/social/__init__.py +153 -0
- scitex/social/docs/EXTERNAL_PACKAGE_BRANDING.md +149 -0
- scitex/stats/__init__.py +14 -2
- scitex/stats/__main__.py +2 -2
- scitex/stats/_figrecipe_integration.py +116 -0
- scitex/stats/_mcp/__init__.py +4 -0
- scitex/stats/_mcp/handlers.py +1191 -0
- scitex/stats/_mcp/tool_schemas.py +384 -0
- scitex/stats/auto/__init__.py +0 -1
- scitex/stats/correct/_correct_bonferroni.py +0 -0
- scitex/stats/correct/_correct_fdr.py +0 -0
- scitex/stats/correct/_correct_fdr_.py +0 -0
- scitex/stats/correct/_correct_holm.py +0 -0
- scitex/stats/correct/_correct_sidak.py +0 -0
- scitex/stats/effect_sizes/_cliffs_delta.py +0 -0
- scitex/stats/effect_sizes/_cohens_d.py +0 -0
- scitex/stats/effect_sizes/_epsilon_squared.py +0 -0
- scitex/stats/effect_sizes/_eta_squared.py +0 -0
- scitex/stats/effect_sizes/_prob_superiority.py +0 -0
- scitex/stats/mcp_server.py +2 -2
- scitex/stats/posthoc/_dunnett.py +0 -0
- scitex/stats/posthoc/_games_howell.py +0 -0
- scitex/stats/posthoc/_tukey_hsd.py +0 -0
- scitex/stats/power/_power.py +0 -0
- scitex/stats/utils/_effect_size.py +0 -0
- scitex/stats/utils/_formatters.py +0 -0
- scitex/stats/utils/_power.py +0 -0
- scitex/template/README.md +1 -1
- scitex/template/_mcp/__init__.py +4 -0
- scitex/template/_mcp/handlers.py +259 -0
- scitex/template/_mcp/tool_schemas.py +112 -0
- scitex/template/clone_writer_directory.py +6 -6
- scitex/template/mcp_server.py +2 -2
- scitex/ui/__init__.py +173 -0
- scitex/ui/_backends/__init__.py +66 -0
- scitex/ui/_backends/_audio.py +86 -0
- scitex/ui/_backends/_config.py +250 -0
- scitex/ui/_backends/_desktop.py +184 -0
- scitex/ui/_backends/_emacs.py +210 -0
- scitex/ui/_backends/_email.py +78 -0
- scitex/ui/_backends/_matplotlib.py +118 -0
- scitex/ui/_backends/_playwright.py +109 -0
- scitex/ui/_backends/_types.py +58 -0
- scitex/ui/_backends/_webhook.py +77 -0
- scitex/ui/_backends.py +37 -0
- scitex/ui/_mcp/__init__.py +23 -0
- scitex/ui/_mcp/handlers.py +260 -0
- scitex/ui/_mcp/tool_schemas.py +107 -0
- scitex/ui/mcp_server.py +151 -0
- scitex/utils/_email.py +85 -7
- scitex/utils/_notify.py +16 -5
- scitex/utils/_search.py +11 -9
- scitex/utils/_verify_scitex_format.py +0 -0
- scitex/writer/README.md +1 -1
- scitex/writer/Writer.py +110 -111
- scitex/writer/__init__.py +26 -48
- scitex/writer/_clone_writer_project.py +0 -0
- scitex/writer/_compile/__init__.py +5 -4
- scitex/writer/_compile/_compile_async.py +130 -0
- scitex/writer/_compile/_compile_unified.py +148 -0
- scitex/writer/_compile/_runner.py +2 -2
- scitex/writer/_compile/_validator.py +3 -3
- scitex/writer/_compile/manuscript.py +1 -1
- scitex/writer/_compile/revision.py +1 -1
- scitex/writer/_compile/supplementary.py +1 -1
- scitex/writer/_dataclasses/config/_WriterConfig.py +175 -0
- scitex/writer/_dataclasses/contents/_ManuscriptContents.py +236 -0
- scitex/writer/_dataclasses/core/_Document.py +146 -0
- scitex/writer/_dataclasses/core/_DocumentSection.py +546 -0
- scitex/writer/_dataclasses/results/_CompilationResult.py +165 -0
- scitex/writer/_dataclasses/results/_LaTeXIssue.py +102 -0
- scitex/writer/_dataclasses/tree/MINIMUM_FILES.md +121 -0
- scitex/writer/_mcp/__init__.py +4 -0
- scitex/writer/_mcp/handlers.py +32 -0
- scitex/writer/_mcp/tool_schemas.py +33 -0
- scitex/writer/_project/_trees.py +2 -2
- scitex/writer/utils/__init__.py +19 -2
- scitex/writer/utils/_converters.py +635 -0
- scitex/writer/utils/_parse_latex_logs.py +1 -1
- scitex/writer/utils/_verify_tree_structure.py +205 -0
- scitex-2.15.1.dist-info/METADATA +648 -0
- scitex-2.15.1.dist-info/RECORD +2553 -0
- scitex-2.15.1.dist-info/entry_points.txt +12 -0
- scitex/audio/_mcp_handlers.py +0 -256
- scitex/audio/_mcp_tool_schemas.py +0 -203
- scitex/canvas/_mcp_handlers.py +0 -372
- scitex/canvas/_mcp_tool_schemas.py +0 -219
- scitex/canvas/editor/flask_editor/templates/_scripts.py +0 -4933
- scitex/canvas/editor/flask_editor/templates/_styles.py +0 -1658
- scitex/capture/mcp_handlers.py +0 -401
- scitex/capture/mcp_tool_defs.py +0 -192
- scitex/capture/mcp_tools.py +0 -241
- scitex/capture/mcp_utils.py +0 -30
- scitex/cli/scholar.py +0 -313
- scitex/diagram/_compile.py +0 -312
- scitex/diagram/_diagram.py +0 -355
- scitex/diagram/_mcp_handlers.py +0 -400
- scitex/diagram/_mcp_tool_schemas.py +0 -157
- scitex/diagram/_presets.py +0 -173
- scitex/diagram/_schema.py +0 -182
- scitex/diagram/_split.py +0 -278
- scitex/plt/_mcp_handlers.py +0 -361
- scitex/plt/_mcp_tool_schemas.py +0 -169
- scitex/plt/mcp_server.py +0 -205
- scitex/scholar/.legacy/Scholar.py +0 -400
- scitex/scholar/.legacy/_Scholar.py +0 -1763
- scitex/scholar/.legacy/_ScholarAPI.py +0 -316
- scitex/scholar/.legacy/_tmp/search_engine/_BaseSearchEngine.py +0 -101
- scitex/scholar/.legacy/_tmp/search_engine/_UnifiedSearcher.py +0 -392
- scitex/scholar/.legacy/_tmp/search_engine/__init__.py +0 -53
- scitex/scholar/.legacy/_tmp/search_engine/local/_LocalSearchEngine.py +0 -134
- scitex/scholar/.legacy/_tmp/search_engine/local/_VectorSearchEngine.py +0 -129
- scitex/scholar/.legacy/_tmp/search_engine/web/_ArxivSearchEngine.py +0 -279
- scitex/scholar/.legacy/_tmp/search_engine/web/_CrossRefSearchEngine.py +0 -319
- scitex/scholar/.legacy/_tmp/search_engine/web/_GoogleScholarSearchEngine.py +0 -209
- scitex/scholar/.legacy/_tmp/search_engine/web/_PubMedSearchEngine.py +0 -374
- scitex/scholar/.legacy/_tmp/search_engine/web/_SemanticScholarSearchEngine.py +0 -362
- scitex/scholar/.legacy/database/README.md +0 -121
- scitex/scholar/.legacy/database/README_CONCURRENT_ACCESS.md +0 -103
- scitex/scholar/.legacy/database/_DatabaseEntry.py +0 -232
- scitex/scholar/.legacy/database/_DatabaseIndex.py +0 -426
- scitex/scholar/.legacy/database/_LibraryManager.py +0 -276
- scitex/scholar/.legacy/database/_PaperDatabase.py +0 -543
- scitex/scholar/.legacy/database/_ScholarDatabaseIntegration.py +0 -391
- scitex/scholar/.legacy/database/_StorageIntegratedDB.py +0 -619
- scitex/scholar/.legacy/database/_ZoteroCompatibleDB.py +0 -1194
- scitex/scholar/.legacy/database/__init__.py +0 -28
- scitex/scholar/.legacy/database/manage.py +0 -274
- scitex/scholar/.legacy/lookup/_LookupIndex.py +0 -470
- scitex/scholar/.legacy/lookup/__init__.py +0 -22
- scitex/scholar/.legacy/metadata/README.md +0 -62
- scitex/scholar/.legacy/metadata/__init__.py +0 -1
- scitex/scholar/.legacy/metadata/doi/README.md +0 -368
- scitex/scholar/.legacy/metadata/doi/__init__.py +0 -7
- scitex/scholar/.legacy/metadata/doi/batch/_MetadataHandlerForBatchDOIResolution.py +0 -304
- scitex/scholar/.legacy/metadata/doi/batch/_ProgressManagerForBatchDOIResolution.py +0 -304
- scitex/scholar/.legacy/metadata/doi/batch/_SourceStatsManagerForBatchDOIResolution.py +0 -299
- scitex/scholar/.legacy/metadata/doi/batch/__init__.py +0 -26
- scitex/scholar/.legacy/metadata/doi/resolvers/_BatchDOIResolver.py +0 -586
- scitex/scholar/.legacy/metadata/doi/resolvers/_BibTeXDOIResolver.py +0 -609
- scitex/scholar/.legacy/metadata/doi/resolvers/_DOIResolver.py +0 -192
- scitex/scholar/.legacy/metadata/doi/resolvers/_SingleDOIResolver.py +0 -395
- scitex/scholar/.legacy/metadata/doi/resolvers/__init__.py +0 -2
- scitex/scholar/.legacy/metadata/doi/sources/.combined-SemanticScholarSource/_SemanticScholarSource.py +0 -289
- scitex/scholar/.legacy/metadata/doi/sources/.combined-SemanticScholarSource/_SemanticScholarSourceEnhanced.py +0 -229
- scitex/scholar/.legacy/metadata/doi/sources/_ArXivSource.py +0 -306
- scitex/scholar/.legacy/metadata/doi/sources/_BaseDOISource.py +0 -347
- scitex/scholar/.legacy/metadata/doi/sources/_CrossRefLocalSource.py +0 -79
- scitex/scholar/.legacy/metadata/doi/sources/_CrossRefSource.py +0 -225
- scitex/scholar/.legacy/metadata/doi/sources/_OpenAlexSource.py +0 -306
- scitex/scholar/.legacy/metadata/doi/sources/_PubMedSource.py +0 -302
- scitex/scholar/.legacy/metadata/doi/sources/_SemanticScholarSource.py +0 -341
- scitex/scholar/.legacy/metadata/doi/sources/_SourceManager.py +0 -317
- scitex/scholar/.legacy/metadata/doi/sources/_SourceResolutionStrategy.py +0 -595
- scitex/scholar/.legacy/metadata/doi/sources/_SourceRotationManager.py +0 -585
- scitex/scholar/.legacy/metadata/doi/sources/_URLDOISource.py +0 -394
- scitex/scholar/.legacy/metadata/doi/sources/_UnifiedSource.py +0 -412
- scitex/scholar/.legacy/metadata/doi/sources/__init__.py +0 -38
- scitex/scholar/.legacy/metadata/doi/utils/_PubMedConverter.py +0 -465
- scitex/scholar/.legacy/metadata/doi/utils/_RateLimitHandler.py +0 -707
- scitex/scholar/.legacy/metadata/doi/utils/_TextNormalizer.py +0 -587
- scitex/scholar/.legacy/metadata/doi/utils/_URLDOIExtractor.py +0 -278
- scitex/scholar/.legacy/metadata/doi/utils/__init__.py +0 -40
- scitex/scholar/.legacy/metadata/doi/utils/_to_complete_metadata_structure.py +0 -315
- scitex/scholar/.legacy/metadata/enrichment/README.md +0 -51
- scitex/scholar/.legacy/metadata/enrichment/_LibraryEnricher.py +0 -99
- scitex/scholar/.legacy/metadata/enrichment/__init__.py +0 -2
- scitex/scholar/.legacy/metadata/enrichment/enrichers/_ImpactFactorEnricher.py +0 -107
- scitex/scholar/.legacy/metadata/enrichment/enrichers/_SmartEnricher.py +0 -164
- scitex/scholar/.legacy/metadata/enrichment/enrichers/__init__.py +0 -4
- scitex/scholar/.legacy/metadata/enrichment/sources/_UnifiedMetadataSource.py +0 -126
- scitex/scholar/.legacy/metadata/enrichment/sources/__init__.py +0 -3
- scitex/scholar/.legacy/metadata/query_to_full_meta_json.py +0 -184
- scitex/scholar/.legacy/metadata/urls/.tmp/open_url/KNOWN_RESOLVERS.py +0 -462
- scitex/scholar/.legacy/metadata/urls/.tmp/open_url/README.md +0 -223
- scitex/scholar/.legacy/metadata/urls/.tmp/open_url/_DOIToURLResolver.py +0 -694
- scitex/scholar/.legacy/metadata/urls/.tmp/open_url/_OpenURLResolver.py +0 -1160
- scitex/scholar/.legacy/metadata/urls/.tmp/open_url/_ResolverLinkFinder.py +0 -344
- scitex/scholar/.legacy/metadata/urls/.tmp/open_url/__init__.py +0 -24
- scitex/scholar/.legacy/metadata/urls/README.md +0 -142
- scitex/scholar/.legacy/metadata/urls/_URLMetadataHandler.py +0 -383
- scitex/scholar/.legacy/metadata/urls/_ZoteroTranslatorRunner.py +0 -294
- scitex/scholar/.legacy/metadata/urls/__init__.py +0 -39
- scitex/scholar/.legacy/metadata/urls/_finder.py +0 -319
- scitex/scholar/.legacy/metadata/urls/_handler.py +0 -326
- scitex/scholar/.legacy/metadata/urls/_resolver.py +0 -287
- scitex/scholar/.legacy/metadata/urls/docs/CORE_URL_TYPES.md +0 -187
- scitex/scholar/.legacy/metadata/urls/docs/URL_SCHEMA.md +0 -223
- scitex/scholar/.legacy/metadata/urls/zotero_translators/.ci/.eslintrc +0 -11
- scitex/scholar/.legacy/metadata/urls/zotero_translators/.ci/AGPL +0 -22
- scitex/scholar/.legacy/metadata/urls/zotero_translators/.ci/checkDeletedTxt.sh +0 -46
- scitex/scholar/.legacy/metadata/urls/zotero_translators/.ci/eslint-plugin-zotero-translator/bin/teslint.js +0 -9
- scitex/scholar/.legacy/metadata/urls/zotero_translators/.ci/eslint-plugin-zotero-translator/index.js +0 -15
- scitex/scholar/.legacy/metadata/urls/zotero_translators/.ci/eslint-plugin-zotero-translator/package-lock.json +0 -151
- scitex/scholar/.legacy/metadata/urls/zotero_translators/.ci/eslint-plugin-zotero-translator/package.json +0 -21
- scitex/scholar/.legacy/metadata/urls/zotero_translators/.ci/eslint-plugin-zotero-translator/processor.js +0 -257
- scitex/scholar/.legacy/metadata/urls/zotero_translators/.ci/helper.sh +0 -29
- scitex/scholar/.legacy/metadata/urls/zotero_translators/.ci/lint.sh +0 -12
- scitex/scholar/.legacy/metadata/urls/zotero_translators/.ci/pull-request-check/check-pull-request.sh +0 -39
- scitex/scholar/.legacy/metadata/urls/zotero_translators/.ci/pull-request-check/selenium-test.js +0 -147
- scitex/scholar/.legacy/metadata/urls/zotero_translators/.ci/pull-request-check/translator-server.js +0 -72
- scitex/scholar/.legacy/metadata/urls/zotero_translators/.ci/updateTypes.mjs +0 -75
- scitex/scholar/.legacy/metadata/urls/zotero_translators/.editorconfig +0 -8
- scitex/scholar/.legacy/metadata/urls/zotero_translators/.eslintrc +0 -70
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ABC News Australia.js +0 -224
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ACLS Humanities EBook.js +0 -165
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ACLWeb.js +0 -600
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ACM Digital Library.js +0 -710
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ACS Publications.js +0 -633
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ADS Bibcode.js +0 -664
- scitex/scholar/.legacy/metadata/urls/zotero_translators/AEA Web.js +0 -450
- scitex/scholar/.legacy/metadata/urls/zotero_translators/AGRIS.js +0 -311
- scitex/scholar/.legacy/metadata/urls/zotero_translators/AIP.js +0 -295
- scitex/scholar/.legacy/metadata/urls/zotero_translators/AMS Journals.js +0 -136
- scitex/scholar/.legacy/metadata/urls/zotero_translators/AMS MathSciNet (Legacy).js +0 -313
- scitex/scholar/.legacy/metadata/urls/zotero_translators/AMS MathSciNet.js +0 -288
- scitex/scholar/.legacy/metadata/urls/zotero_translators/APA PsycNET.js +0 -915
- scitex/scholar/.legacy/metadata/urls/zotero_translators/APN.ru.js +0 -132
- scitex/scholar/.legacy/metadata/urls/zotero_translators/APS-Physics.js +0 -204
- scitex/scholar/.legacy/metadata/urls/zotero_translators/APS.js +0 -542
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ARTFL Encyclopedie.js +0 -283
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ARTnews.js +0 -155
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ARTstor.js +0 -619
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ASCE.js +0 -199
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ASCO Meeting Library.js +0 -153
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ASTIS.js +0 -337
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ATS International Journal.js +0 -290
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Access Engineering.js +0 -384
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Access Medicine.js +0 -343
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Access Science.js +0 -391
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Adam Matthew Digital.js +0 -405
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Agencia del ISBN.js +0 -77
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Ahval News.js +0 -309
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Air University Journals.js +0 -236
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Airiti.js +0 -423
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Alexander Street Press.js +0 -198
- scitex/scholar/.legacy/metadata/urls/zotero_translators/AllAfrica.js +0 -291
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Alsharekh.js +0 -242
- scitex/scholar/.legacy/metadata/urls/zotero_translators/AlterNet.js +0 -134
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Aluka.js +0 -261
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Amazon.js +0 -1043
- scitex/scholar/.legacy/metadata/urls/zotero_translators/American Archive of Public Broadcasting.js +0 -592
- scitex/scholar/.legacy/metadata/urls/zotero_translators/American Institute of Aeronautics and Astronautics.js +0 -210
- scitex/scholar/.legacy/metadata/urls/zotero_translators/American Prospect.js +0 -114
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Ancestry.com US Federal Census.js +0 -164
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Annual Reviews.js +0 -329
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Antikvarium.hu.js +0 -280
- scitex/scholar/.legacy/metadata/urls/zotero_translators/AquaDocs.js +0 -390
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Archeion.js +0 -249
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Archiv fuer Sozialgeschichte.js +0 -157
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Archive Ouverte en Sciences de l'Information et de la Communication (AOSIC).js +0 -179
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Archives Canada.js +0 -142
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Ariana News.js +0 -203
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Art Institute of Chicago.js +0 -279
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Artefacts Canada.js +0 -192
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Artforum.js +0 -438
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Atlanta Journal-Constitution.js +0 -311
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Atypon Journals.js +0 -1204
- scitex/scholar/.legacy/metadata/urls/zotero_translators/AustLII and NZLII.js +0 -604
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Australian Dictionary of Biography.js +0 -196
- scitex/scholar/.legacy/metadata/urls/zotero_translators/BAILII.js +0 -176
- scitex/scholar/.legacy/metadata/urls/zotero_translators/BBC Genome.js +0 -254
- scitex/scholar/.legacy/metadata/urls/zotero_translators/BBC.js +0 -430
- scitex/scholar/.legacy/metadata/urls/zotero_translators/BIBSYS.js +0 -112
- scitex/scholar/.legacy/metadata/urls/zotero_translators/BOCC.js +0 -217
- scitex/scholar/.legacy/metadata/urls/zotero_translators/BOE.js +0 -229
- scitex/scholar/.legacy/metadata/urls/zotero_translators/BOFiP-Impots.js +0 -132
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Baidu Scholar.js +0 -276
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Bangkok Post.js +0 -216
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Baruch Foundation.js +0 -175
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Beobachter.js +0 -175
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Bezneng Gajit.js +0 -92
- scitex/scholar/.legacy/metadata/urls/zotero_translators/BibLaTeX.js +0 -888
- scitex/scholar/.legacy/metadata/urls/zotero_translators/BibTeX.js +0 -4236
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Biblio.com.js +0 -216
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Bibliontology RDF.js +0 -1166
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Biblioteca Nacional de Maestros.js +0 -213
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Bibliotheque et Archives Nationale du Quebec (Pistard).js +0 -147
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Bibliotheque et Archives Nationales du Quebec.js +0 -266
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Bibliotheque nationale de France.js +0 -872
- scitex/scholar/.legacy/metadata/urls/zotero_translators/BioMed Central.js +0 -585
- scitex/scholar/.legacy/metadata/urls/zotero_translators/BioOne.js +0 -233
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Bioconductor.js +0 -343
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Blaetter.js +0 -192
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Blogger.js +0 -244
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Bloomberg.js +0 -205
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Bloomsbury Food Library.js +0 -296
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Bluesky.js +0 -195
- scitex/scholar/.legacy/metadata/urls/zotero_translators/BnF ISBN.js +0 -129
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Bookmarks.js +0 -282
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Bookshop.org.js +0 -223
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Boston Review.js +0 -332
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Bosworth Toller's Anglo-Saxon Dictionary Online.js +0 -496
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Bracero History Archive.js +0 -200
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Brill.js +0 -434
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Brukerhandboken.js +0 -153
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Bryn Mawr Classical Review.js +0 -303
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Bundesgesetzblatt.js +0 -231
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Business Standard.js +0 -151
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CABI - CAB Abstracts.js +0 -317
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CAOD.js +0 -260
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CBC.js +0 -439
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CCfr (BnF).js +0 -162
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CERN Document Server.js +0 -277
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CEUR Workshop Proceedings.js +0 -145
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CFF References.js +0 -170
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CFF.js +0 -113
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CIA World Factbook.js +0 -128
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CLACSO.js +0 -226
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CLASE.js +0 -135
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CNKI.js +0 -731
- scitex/scholar/.legacy/metadata/urls/zotero_translators/COBISS.js +0 -1945
- scitex/scholar/.legacy/metadata/urls/zotero_translators/COinS.js +0 -336
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CQ Press.js +0 -418
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CROSBI.js +0 -227
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CSIRO Publishing.js +0 -139
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CSL JSON.js +0 -203
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CSV.js +0 -294
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Cairn.info.js +0 -368
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CalMatters.js +0 -228
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Calisphere.js +0 -355
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Camara Brasileira do Livro ISBN.js +0 -842
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Cambridge Core.js +0 -580
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Cambridge Engage Preprints.js +0 -276
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CanLII.js +0 -284
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Canada.com.js +0 -171
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Canadian Letters and Images.js +0 -148
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Canadiana.ca.js +0 -196
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Cascadilla Proceedings Project.js +0 -390
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Cell Press.js +0 -516
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Central and Eastern European Online Library Journals.js +0 -313
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Champlain Society - Collection.js +0 -220
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Chicago Journal of Theoretical Computer Science.js +0 -203
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Christian Science Monitor.js +0 -148
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Chronicling America.js +0 -131
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CiNii Research.js +0 -168
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Citavi 5 XML.js +0 -516
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CiteSeer.js +0 -196
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Citizen Lab.js +0 -347
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Civilization.ca.js +0 -146
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Climate Change and Human Health Literature Portal.js +0 -283
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Clinical Key.js +0 -367
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Code4Lib Journal.js +0 -143
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Colorado State Legislature.js +0 -215
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Columbia University Press.js +0 -238
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Common-Place.js +0 -218
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Computer History Museum Archive.js +0 -1319
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Copernicus.js +0 -461
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Cornell LII.js +0 -252
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Cornell University Press.js +0 -235
- scitex/scholar/.legacy/metadata/urls/zotero_translators/CourtListener.js +0 -265
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Crossref REST.js +0 -1757
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Crossref Unixref XML.js +0 -965
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Current Affairs.js +0 -160
- scitex/scholar/.legacy/metadata/urls/zotero_translators/DABI.js +0 -476
- scitex/scholar/.legacy/metadata/urls/zotero_translators/DAI-Zenon.js +0 -392
- scitex/scholar/.legacy/metadata/urls/zotero_translators/DART-Europe.js +0 -176
- scitex/scholar/.legacy/metadata/urls/zotero_translators/DBLP Computer Science Bibliography.js +0 -462
- scitex/scholar/.legacy/metadata/urls/zotero_translators/DBpia.js +0 -233
- scitex/scholar/.legacy/metadata/urls/zotero_translators/DEPATISnet.js +0 -373
- scitex/scholar/.legacy/metadata/urls/zotero_translators/DOAJ.js +0 -242
- scitex/scholar/.legacy/metadata/urls/zotero_translators/DOI Content Negotiation.js +0 -352
- scitex/scholar/.legacy/metadata/urls/zotero_translators/DOI.js +0 -322
- scitex/scholar/.legacy/metadata/urls/zotero_translators/DPLA.js +0 -425
- scitex/scholar/.legacy/metadata/urls/zotero_translators/DSpace Intermediate Metadata.js +0 -208
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Dagens Nyheter.js +0 -369
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Dagstuhl Research Online Publication Server.js +0 -278
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Dar Almandumah.js +0 -253
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Data.gov.js +0 -225
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Databrary.js +0 -184
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Datacite JSON.js +0 -1182
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Dataverse.js +0 -418
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Daum News.js +0 -139
- scitex/scholar/.legacy/metadata/urls/zotero_translators/De Gruyter Brill.js +0 -674
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Defense Technical Information Center.js +0 -146
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Delpher.js +0 -413
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Demographic Research.js +0 -164
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Denik CZ.js +0 -273
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Der Freitag.js +0 -236
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Der Spiegel.js +0 -479
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Desiring God.js +0 -216
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Deutsche Fotothek.js +0 -364
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Deutsche Nationalbibliothek.js +0 -594
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Dialnet.js +0 -258
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Die Zeit.js +0 -378
- scitex/scholar/.legacy/metadata/urls/zotero_translators/DigiZeitschriften.js +0 -269
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Digital Humanities Quarterly.js +0 -207
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Digital Spy.js +0 -215
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Dimensions.js +0 -233
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Douban.js +0 -316
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Dreier Neuerscheinungsdienst.js +0 -209
- scitex/scholar/.legacy/metadata/urls/zotero_translators/DrugBank.ca.js +0 -209
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Dryad Digital Repository.js +0 -323
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Duke University Press Books.js +0 -250
- scitex/scholar/.legacy/metadata/urls/zotero_translators/E-periodica Switzerland.js +0 -347
- scitex/scholar/.legacy/metadata/urls/zotero_translators/EBSCO Discovery Layer.js +0 -147
- scitex/scholar/.legacy/metadata/urls/zotero_translators/EBSCOhost.js +0 -592
- scitex/scholar/.legacy/metadata/urls/zotero_translators/EIDR.js +0 -184
- scitex/scholar/.legacy/metadata/urls/zotero_translators/EPA National Library Catalog.js +0 -245
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ERIC.js +0 -986
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ESpacenet.js +0 -465
- scitex/scholar/.legacy/metadata/urls/zotero_translators/EUR-Lex.js +0 -423
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Eastview.js +0 -336
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Edinburgh University Press Journals.js +0 -178
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Education Week.js +0 -197
- scitex/scholar/.legacy/metadata/urls/zotero_translators/El Comercio (Peru).js +0 -347
- scitex/scholar/.legacy/metadata/urls/zotero_translators/El Pais.js +0 -262
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Electronic Colloquium on Computational Complexity.js +0 -230
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Elicit.js +0 -120
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Elsevier Health Journals.js +0 -531
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Elsevier Pure.js +0 -420
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Embedded Metadata.js +0 -1951
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Emerald Insight.js +0 -626
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Encyclopedia of Chicago.js +0 -162
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Encyclopedia of Korean Culture.js +0 -221
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Endnote XML.js +0 -1407
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Engineering Village.js +0 -139
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Envidat.js +0 -331
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Epicurious.js +0 -144
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Erudit.js +0 -272
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Euclid.js +0 -220
- scitex/scholar/.legacy/metadata/urls/zotero_translators/EurasiaNet.js +0 -109
- scitex/scholar/.legacy/metadata/urls/zotero_translators/EurogamerUSgamer.js +0 -380
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Europe PMC.js +0 -448
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Evernote.js +0 -104
- scitex/scholar/.legacy/metadata/urls/zotero_translators/F1000 Research.js +0 -655
- scitex/scholar/.legacy/metadata/urls/zotero_translators/FAO Publications.js +0 -1139
- scitex/scholar/.legacy/metadata/urls/zotero_translators/FAZ.NET.js +0 -231
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Fachportal Padagogik.js +0 -839
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Factiva.js +0 -302
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Failed Architecture.js +0 -114
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Fairfax Australia.js +0 -200
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Fatcat.js +0 -425
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Figshare.js +0 -191
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Financial Times.js +0 -187
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Finna.js +0 -357
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Flickr.js +0 -318
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Foreign Affairs.js +0 -485
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Foreign Policy.js +0 -146
- scitex/scholar/.legacy/metadata/urls/zotero_translators/FreeCite.js +0 -95
- scitex/scholar/.legacy/metadata/urls/zotero_translators/FreePatentsOnline.js +0 -265
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Frieze.js +0 -243
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Frontiers.js +0 -667
- scitex/scholar/.legacy/metadata/urls/zotero_translators/GMS German Medical Science.js +0 -319
- scitex/scholar/.legacy/metadata/urls/zotero_translators/GPO Access e-CFR.js +0 -134
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Gale Databases.js +0 -324
- scitex/scholar/.legacy/metadata/urls/zotero_translators/GaleGDC.js +0 -189
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Galegroup.js +0 -327
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Gallica.js +0 -194
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Game Studies.js +0 -155
- scitex/scholar/.legacy/metadata/urls/zotero_translators/GameSpot.js +0 -199
- scitex/scholar/.legacy/metadata/urls/zotero_translators/GameStar GamePro.js +0 -198
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Gasyrlar Awazy.js +0 -156
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Gemeinsamer Bibliotheksverbund ISBN.js +0 -23
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Gene Ontology.js +0 -128
- scitex/scholar/.legacy/metadata/urls/zotero_translators/GitHub.js +0 -501
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Globes.js +0 -243
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Gmail.js +0 -64
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Goodreads.js +0 -219
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Google Books.js +0 -552
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Google Patents.js +0 -959
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Google Play.js +0 -186
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Google Presentation.js +0 -104
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Google Research.js +0 -221
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Google Scholar.js +0 -1361
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Gulag Many Days, Many Lives.js +0 -179
- scitex/scholar/.legacy/metadata/urls/zotero_translators/HAL Archives Ouvertes.js +0 -429
- scitex/scholar/.legacy/metadata/urls/zotero_translators/HCSP.js +0 -312
- scitex/scholar/.legacy/metadata/urls/zotero_translators/HUDOC.js +0 -650
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Haaretz.js +0 -562
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Habr.js +0 -232
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Handelszeitung.js +0 -273
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Hanrei Watch.js +0 -123
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Harper's Magazine.js +0 -365
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Harvard Business Review.js +0 -326
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Harvard Caselaw Access Project.js +0 -244
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Harvard University Press Books.js +0 -286
- scitex/scholar/.legacy/metadata/urls/zotero_translators/HathiTrust.js +0 -311
- scitex/scholar/.legacy/metadata/urls/zotero_translators/HeinOnline.js +0 -266
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Heise.js +0 -200
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Herder.js +0 -236
- scitex/scholar/.legacy/metadata/urls/zotero_translators/HighBeam.js +0 -198
- scitex/scholar/.legacy/metadata/urls/zotero_translators/HighWire 2.0.js +0 -1355
- scitex/scholar/.legacy/metadata/urls/zotero_translators/HighWire.js +0 -209
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Hindawi Publishers.js +0 -177
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Hispanic-American Periodical Index.js +0 -236
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Homeland Security Digital Library.js +0 -426
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Huff Post.js +0 -223
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Human Rights Watch.js +0 -450
- scitex/scholar/.legacy/metadata/urls/zotero_translators/IBISWorld.js +0 -171
- scitex/scholar/.legacy/metadata/urls/zotero_translators/IDEA ALM.js +0 -536
- scitex/scholar/.legacy/metadata/urls/zotero_translators/IEEE Computer Society.js +0 -429
- scitex/scholar/.legacy/metadata/urls/zotero_translators/IEEE Xplore.js +0 -1000
- scitex/scholar/.legacy/metadata/urls/zotero_translators/IETF.js +0 -451
- scitex/scholar/.legacy/metadata/urls/zotero_translators/IGN.js +0 -136
- scitex/scholar/.legacy/metadata/urls/zotero_translators/IMDb.js +0 -566
- scitex/scholar/.legacy/metadata/urls/zotero_translators/INSPIRE.js +0 -247
- scitex/scholar/.legacy/metadata/urls/zotero_translators/IPCC.js +0 -757
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ISTC.js +0 -181
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Idref.js +0 -179
- scitex/scholar/.legacy/metadata/urls/zotero_translators/In These Times.js +0 -196
- scitex/scholar/.legacy/metadata/urls/zotero_translators/InfoTrac.js +0 -279
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Informationssystem Medienpaedagogik.js +0 -305
- scitex/scholar/.legacy/metadata/urls/zotero_translators/IngentaConnect.js +0 -312
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Inside Higher Ed.js +0 -167
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Insignia OPAC.js +0 -114
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Institute of Contemporary Art.js +0 -180
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Institute of Physics.js +0 -340
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Integrum.js +0 -173
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Intellixir.js +0 -264
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Inter-Research Science Center.js +0 -185
- scitex/scholar/.legacy/metadata/urls/zotero_translators/International Nuclear Information System.js +0 -285
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Internet Archive Scholar.js +0 -106
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Internet Archive Wayback Machine.js +0 -152
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Internet Archive.js +0 -552
- scitex/scholar/.legacy/metadata/urls/zotero_translators/InvenioRDM.js +0 -1260
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Isidore.js +0 -235
- scitex/scholar/.legacy/metadata/urls/zotero_translators/J-Stage.js +0 -272
- scitex/scholar/.legacy/metadata/urls/zotero_translators/JETS.js +0 -122
- scitex/scholar/.legacy/metadata/urls/zotero_translators/JISC Historical Texts.js +0 -273
- scitex/scholar/.legacy/metadata/urls/zotero_translators/JRC Publications Repository.js +0 -569
- scitex/scholar/.legacy/metadata/urls/zotero_translators/JSTOR.js +0 -821
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Jahrbuch.js +0 -213
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Japan Times Online.js +0 -138
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Journal of Electronic Publishing.js +0 -147
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Journal of Extension.js +0 -288
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Journal of Machine Learning Research.js +0 -441
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Journal of Religion and Society.js +0 -174
- scitex/scholar/.legacy/metadata/urls/zotero_translators/JurPC.js +0 -274
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Juricaf.js +0 -141
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Juris.js +0 -728
- scitex/scholar/.legacy/metadata/urls/zotero_translators/K10plus ISBN.js +0 -386
- scitex/scholar/.legacy/metadata/urls/zotero_translators/KStudy.js +0 -632
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Kanopy.js +0 -358
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Khaama Press.js +0 -249
- scitex/scholar/.legacy/metadata/urls/zotero_translators/KitapYurdu.com.js +0 -376
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Kommersant.js +0 -174
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Korean National Library.js +0 -621
- scitex/scholar/.legacy/metadata/urls/zotero_translators/L'Annee Philologique.js +0 -267
- scitex/scholar/.legacy/metadata/urls/zotero_translators/LA Times.js +0 -239
- scitex/scholar/.legacy/metadata/urls/zotero_translators/LIBRIS ISBN.js +0 -103
- scitex/scholar/.legacy/metadata/urls/zotero_translators/LIVIVO.js +0 -260
- scitex/scholar/.legacy/metadata/urls/zotero_translators/LWN.net.js +0 -315
- scitex/scholar/.legacy/metadata/urls/zotero_translators/La Croix.js +0 -237
- scitex/scholar/.legacy/metadata/urls/zotero_translators/La Nacion (Argentina).js +0 -231
- scitex/scholar/.legacy/metadata/urls/zotero_translators/La Presse.js +0 -218
- scitex/scholar/.legacy/metadata/urls/zotero_translators/La Republica (Peru).js +0 -174
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Lagen.nu.js +0 -214
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Landesbibliographie Baden-Wurttemberg.js +0 -324
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Lapham's Quarterly.js +0 -1062
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Le Devoir.js +0 -167
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Le Figaro.js +0 -225
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Le Maitron.js +0 -484
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Le Monde.js +0 -258
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Le monde diplomatique.js +0 -200
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Legifrance.js +0 -641
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Legislative Insight.js +0 -406
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Lexis+.js +0 -264
- scitex/scholar/.legacy/metadata/urls/zotero_translators/LexisNexis.js +0 -505
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Libraries Tasmania.js +0 -778
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (Aleph).js +0 -385
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (Amicus).js +0 -254
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (Aquabrowser).js +0 -253
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (BiblioCommons).js +0 -249
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (Blacklight).js +0 -341
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (Capita Prism).js +0 -162
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (DRA).js +0 -203
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (Dynix).js +0 -315
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (Encore).js +0 -211
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (InnoPAC).js +0 -305
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (Koha).js +0 -225
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (Mango).js +0 -285
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (OPALS).js +0 -200
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (PICA).js +0 -2120
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (PICA2).js +0 -331
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (Pika).js +0 -488
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (Polaris).js +0 -183
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (Quolto).js +0 -320
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (RERO ILS).js +0 -754
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (SIRSI eLibrary).js +0 -407
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (SIRSI).js +0 -452
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (SLIMS).js +0 -146
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (TIND ILS).js +0 -773
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (TLCYouSeeMore).js +0 -132
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (TinREAD).js +0 -277
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (VTLS).js +0 -125
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (Visual Library 2021).js +0 -765
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (Voyager 7).js +0 -199
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Catalog (Voyager).js +0 -212
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Genesis.js +0 -337
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library Hub Discover.js +0 -359
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library of Congress Digital Collections.js +0 -869
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Library of Congress ISBN.js +0 -86
- scitex/scholar/.legacy/metadata/urls/zotero_translators/LingBuzz.js +0 -359
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Lippincott Williams and Wilkins.js +0 -341
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Literary Hub.js +0 -950
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Litres.js +0 -236
- scitex/scholar/.legacy/metadata/urls/zotero_translators/LiveJournal.js +0 -219
- scitex/scholar/.legacy/metadata/urls/zotero_translators/London Review of Books.js +0 -291
- scitex/scholar/.legacy/metadata/urls/zotero_translators/LookUs.js +0 -260
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Lulu.js +0 -264
- scitex/scholar/.legacy/metadata/urls/zotero_translators/MAB2.js +0 -373
- scitex/scholar/.legacy/metadata/urls/zotero_translators/MARC.js +0 -1080
- scitex/scholar/.legacy/metadata/urls/zotero_translators/MARCXML.js +0 -489
- scitex/scholar/.legacy/metadata/urls/zotero_translators/MCV.js +0 -258
- scitex/scholar/.legacy/metadata/urls/zotero_translators/MDPI Journals.js +0 -356
- scitex/scholar/.legacy/metadata/urls/zotero_translators/MEDLINEnbib.js +0 -1561
- scitex/scholar/.legacy/metadata/urls/zotero_translators/METS.js +0 -384
- scitex/scholar/.legacy/metadata/urls/zotero_translators/MIDAS Journals.js +0 -343
- scitex/scholar/.legacy/metadata/urls/zotero_translators/MIT Press Books.js +0 -637
- scitex/scholar/.legacy/metadata/urls/zotero_translators/MODS.js +0 -2545
- scitex/scholar/.legacy/metadata/urls/zotero_translators/MPG PuRe.js +0 -541
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Mailman.js +0 -136
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Mainichi Daily News.js +0 -189
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Mastodon.js +0 -198
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Matbugat.ru.js +0 -110
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Max Planck Institute for the History of Science Virtual Laboratory Library.js +0 -136
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Medium.js +0 -208
- scitex/scholar/.legacy/metadata/urls/zotero_translators/MetaLib.js +0 -126
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Microbiology Society Journals.js +0 -343
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Microsoft Academic.js +0 -424
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Mikromarc.js +0 -207
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Milli Kutuphane.js +0 -244
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Musee du Louvre.js +0 -265
- scitex/scholar/.legacy/metadata/urls/zotero_translators/NASA ADS.js +0 -889
- scitex/scholar/.legacy/metadata/urls/zotero_translators/NASA NTRS.js +0 -610
- scitex/scholar/.legacy/metadata/urls/zotero_translators/NCBI Nucleotide.js +0 -227
- scitex/scholar/.legacy/metadata/urls/zotero_translators/NPR.js +0 -341
- scitex/scholar/.legacy/metadata/urls/zotero_translators/NRC Research Press.js +0 -181
- scitex/scholar/.legacy/metadata/urls/zotero_translators/NRC.nl.js +0 -226
- scitex/scholar/.legacy/metadata/urls/zotero_translators/NTSB Accident Reports.js +0 -226
- scitex/scholar/.legacy/metadata/urls/zotero_translators/NYPL Menus.js +0 -275
- scitex/scholar/.legacy/metadata/urls/zotero_translators/NYPL Research Catalog.js +0 -458
- scitex/scholar/.legacy/metadata/urls/zotero_translators/NYTimes.com.js +0 -858
- scitex/scholar/.legacy/metadata/urls/zotero_translators/NZZ.ch.js +0 -272
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Nagoya University OPAC.js +0 -336
- scitex/scholar/.legacy/metadata/urls/zotero_translators/National Academies Press.js +0 -243
- scitex/scholar/.legacy/metadata/urls/zotero_translators/National Agriculture Library.js +0 -524
- scitex/scholar/.legacy/metadata/urls/zotero_translators/National Archives of Australia.js +0 -522
- scitex/scholar/.legacy/metadata/urls/zotero_translators/National Archives of South Africa.js +0 -122
- scitex/scholar/.legacy/metadata/urls/zotero_translators/National Bureau of Economic Research.js +0 -363
- scitex/scholar/.legacy/metadata/urls/zotero_translators/National Diet Library Catalogue.js +0 -333
- scitex/scholar/.legacy/metadata/urls/zotero_translators/National Gallery of Art - USA.js +0 -149
- scitex/scholar/.legacy/metadata/urls/zotero_translators/National Gallery of Australia.js +0 -252
- scitex/scholar/.legacy/metadata/urls/zotero_translators/National Library of Australia (new catalog).js +0 -223
- scitex/scholar/.legacy/metadata/urls/zotero_translators/National Library of Belarus.js +0 -171
- scitex/scholar/.legacy/metadata/urls/zotero_translators/National Library of Norway.js +0 -310
- scitex/scholar/.legacy/metadata/urls/zotero_translators/National Library of Poland ISBN.js +0 -140
- scitex/scholar/.legacy/metadata/urls/zotero_translators/National Post.js +0 -186
- scitex/scholar/.legacy/metadata/urls/zotero_translators/National Technical Reports Library.js +0 -276
- scitex/scholar/.legacy/metadata/urls/zotero_translators/National Transportation Library ROSA P.js +0 -562
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Nature Publishing Group.js +0 -3394
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Neural Information Processing Systems.js +0 -385
- scitex/scholar/.legacy/metadata/urls/zotero_translators/New Left Review.js +0 -245
- scitex/scholar/.legacy/metadata/urls/zotero_translators/New Zealand Herald.js +0 -282
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Newlines Magazine.js +0 -190
- scitex/scholar/.legacy/metadata/urls/zotero_translators/News Corp Australia.js +0 -251
- scitex/scholar/.legacy/metadata/urls/zotero_translators/NewsBank.js +0 -202
- scitex/scholar/.legacy/metadata/urls/zotero_translators/NewsnetTamedia.js +0 -509
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Noor Digital Library.js +0 -267
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Note HTML.js +0 -206
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Note Markdown.js +0 -1638
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Notre Dame Philosophical Reviews.js +0 -201
- scitex/scholar/.legacy/metadata/urls/zotero_translators/OAPEN.js +0 -331
- scitex/scholar/.legacy/metadata/urls/zotero_translators/OCLC WorldCat FirstSearch.js +0 -213
- scitex/scholar/.legacy/metadata/urls/zotero_translators/OECD.js +0 -216
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ORCID.js +0 -104
- scitex/scholar/.legacy/metadata/urls/zotero_translators/OSF Preprints.js +0 -417
- scitex/scholar/.legacy/metadata/urls/zotero_translators/OSTI Energy Citations.js +0 -202
- scitex/scholar/.legacy/metadata/urls/zotero_translators/OVID Tagged.js +0 -1226
- scitex/scholar/.legacy/metadata/urls/zotero_translators/OZON.ru.js +0 -465
- scitex/scholar/.legacy/metadata/urls/zotero_translators/OhioLINK.js +0 -43
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Old Bailey Online.js +0 -315
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Open Conf.js +0 -172
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Open Knowledge Repository.js +0 -811
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Open WorldCat.js +0 -1401
- scitex/scholar/.legacy/metadata/urls/zotero_translators/OpenAlex JSON.js +0 -740
- scitex/scholar/.legacy/metadata/urls/zotero_translators/OpenAlex.js +0 -444
- scitex/scholar/.legacy/metadata/urls/zotero_translators/OpenEdition Books.js +0 -155
- scitex/scholar/.legacy/metadata/urls/zotero_translators/OpenEdition Journals.js +0 -432
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Optical Society of America.js +0 -562
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Optimization Online.js +0 -418
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Ovid.js +0 -302
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Oxford Dictionaries Premium.js +0 -194
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Oxford English Dictionary.js +0 -122
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Oxford Music and Art Online.js +0 -120
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Oxford Reference.js +0 -202
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Oxford University Press.js +0 -277
- scitex/scholar/.legacy/metadata/urls/zotero_translators/PC Gamer.js +0 -302
- scitex/scholar/.legacy/metadata/urls/zotero_translators/PC Games.js +0 -128
- scitex/scholar/.legacy/metadata/urls/zotero_translators/PEI Archival Information Network.js +0 -242
- scitex/scholar/.legacy/metadata/urls/zotero_translators/PEP Web.js +0 -165
- scitex/scholar/.legacy/metadata/urls/zotero_translators/PKP Catalog Systems.js +0 -1455
- scitex/scholar/.legacy/metadata/urls/zotero_translators/PLoS Journals.js +0 -284
- scitex/scholar/.legacy/metadata/urls/zotero_translators/PRC History Review.js +0 -298
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Pajhwok Afghan News.js +0 -198
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Papers Past.js +0 -297
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Paris Review.js +0 -227
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Pastebin.js +0 -199
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Patents - USPTO.js +0 -210
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Peeters.js +0 -587
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Perceiving Systems.js +0 -350
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Perlego.js +0 -416
- scitex/scholar/.legacy/metadata/urls/zotero_translators/PhilPapers.js +0 -249
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Philosopher's Imprint.js +0 -169
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Pleade.js +0 -329
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Polygon.js +0 -270
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Potsdamer Neueste Nachrichten.js +0 -188
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Preprints.org.js +0 -305
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Primo 2018.js +0 -126
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Primo Normalized XML.js +0 -987
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Primo.js +0 -322
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ProMED.js +0 -66
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ProQuest Ebook Central.js +0 -226
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ProQuest PolicyFile.js +0 -115
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ProQuest.js +0 -2210
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Probing the Past.js +0 -151
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Project Gutenberg.js +0 -191
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Project MUSE.js +0 -451
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Protein Data Bank.js +0 -445
- scitex/scholar/.legacy/metadata/urls/zotero_translators/PubFactory Journals.js +0 -712
- scitex/scholar/.legacy/metadata/urls/zotero_translators/PubMed Central.js +0 -577
- scitex/scholar/.legacy/metadata/urls/zotero_translators/PubMed XML.js +0 -1139
- scitex/scholar/.legacy/metadata/urls/zotero_translators/PubMed.js +0 -1317
- scitex/scholar/.legacy/metadata/urls/zotero_translators/PubPub.js +0 -530
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Public Record Office Victoria.js +0 -252
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Publications Office of the European Union.js +0 -540
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Publications du Quebec.js +0 -225
- scitex/scholar/.legacy/metadata/urls/zotero_translators/PyPI.js +0 -288
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Qatar Digital Library.js +0 -802
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Queensland State Archives.js +0 -303
- scitex/scholar/.legacy/metadata/urls/zotero_translators/R-Packages.js +0 -410
- scitex/scholar/.legacy/metadata/urls/zotero_translators/RAND.js +0 -283
- scitex/scholar/.legacy/metadata/urls/zotero_translators/RDF.js +0 -1777
- scitex/scholar/.legacy/metadata/urls/zotero_translators/REDALYC.js +0 -196
- scitex/scholar/.legacy/metadata/urls/zotero_translators/RIS.js +0 -7265
- scitex/scholar/.legacy/metadata/urls/zotero_translators/RSC Publishing.js +0 -250
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Radio Free Europe Radio Liberty.js +0 -706
- scitex/scholar/.legacy/metadata/urls/zotero_translators/RePEc - Econpapers.js +0 -725
- scitex/scholar/.legacy/metadata/urls/zotero_translators/RePEc - IDEAS.js +0 -337
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Rechtspraak.nl.js +0 -295
- scitex/scholar/.legacy/metadata/urls/zotero_translators/RefWorks Tagged.js +0 -1185
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ReferBibIX.js +0 -463
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Regeringskansliet.js +0 -89
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Research Square.js +0 -335
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ResearchGate.js +0 -394
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Retsinformation.js +0 -348
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Reuters.js +0 -255
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Rock, Paper, Shotgun.js +0 -304
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Roll Call.js +0 -173
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Russian State Library.js +0 -1517
- scitex/scholar/.legacy/metadata/urls/zotero_translators/SAE Papers.js +0 -241
- scitex/scholar/.legacy/metadata/urls/zotero_translators/SAGE Journals.js +0 -427
- scitex/scholar/.legacy/metadata/urls/zotero_translators/SAGE Knowledge.js +0 -505
- scitex/scholar/.legacy/metadata/urls/zotero_translators/SAILDART.js +0 -364
- scitex/scholar/.legacy/metadata/urls/zotero_translators/SALT Research Archives.js +0 -196
- scitex/scholar/.legacy/metadata/urls/zotero_translators/SFU IPinCH.js +0 -946
- scitex/scholar/.legacy/metadata/urls/zotero_translators/SIPRI.js +0 -256
- scitex/scholar/.legacy/metadata/urls/zotero_translators/SIRS Knowledge Source.js +0 -546
- scitex/scholar/.legacy/metadata/urls/zotero_translators/SLUB Dresden.js +0 -300
- scitex/scholar/.legacy/metadata/urls/zotero_translators/SORA.js +0 -340
- scitex/scholar/.legacy/metadata/urls/zotero_translators/SSOAR.js +0 -399
- scitex/scholar/.legacy/metadata/urls/zotero_translators/SSRN.js +0 -235
- scitex/scholar/.legacy/metadata/urls/zotero_translators/SVT Nyheter.js +0 -381
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Sacramento Bee.js +0 -274
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Safari Books Online.js +0 -391
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Scholars Portal Journals.js +0 -220
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Scholia.js +0 -189
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Schweizer Radio und Fernsehen SRF.js +0 -152
- scitex/scholar/.legacy/metadata/urls/zotero_translators/SciELO.js +0 -440
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ScienceDirect.js +0 -1304
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Scopus.js +0 -418
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Semantic Scholar.js +0 -513
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Silverchair.js +0 -886
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Slate.js +0 -228
- scitex/scholar/.legacy/metadata/urls/zotero_translators/SlideShare.js +0 -112
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Springer Link.js +0 -696
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Stack Exchange.js +0 -134
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Standard Ebooks.js +0 -198
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Stanford Encyclopedia of Philosophy.js +0 -285
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Stanford University Press.js +0 -343
- scitex/scholar/.legacy/metadata/urls/zotero_translators/State Records Office of Western Australia.js +0 -439
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Stitcher.js +0 -141
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Store norske leksikon.js +0 -291
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Stuff.co.nz.js +0 -446
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Substack.js +0 -237
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Sud Ouest.js +0 -181
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Sueddeutsche.de.js +0 -205
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Summon 2.js +0 -117
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Superlib.js +0 -647
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Svenska Dagbladet.js +0 -274
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Sveriges radio.js +0 -416
- scitex/scholar/.legacy/metadata/urls/zotero_translators/TEI.js +0 -648
- scitex/scholar/.legacy/metadata/urls/zotero_translators/TV by the Numbers.js +0 -194
- scitex/scholar/.legacy/metadata/urls/zotero_translators/TVNZ.js +0 -165
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Tagesspiegel.js +0 -249
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Talis Aspire.js +0 -316
- scitex/scholar/.legacy/metadata/urls/zotero_translators/TalisPrism.js +0 -445
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Tatknigafund.js +0 -174
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Tatpressa.ru.js +0 -121
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Taylor & Francis eBooks.js +0 -334
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Taylor and Francis+NEJM.js +0 -813
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Tesis Doctorals en Xarxa.js +0 -233
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Art Newspaper.js +0 -268
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Atlantic.js +0 -535
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Boston Globe.js +0 -285
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Chronicle of Higher Education.js +0 -308
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Daily Beast.js +0 -183
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Economic Times - The Times of India.js +0 -305
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Economist.js +0 -207
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Free Dictionary.js +0 -58
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Globe and Mail.js +0 -241
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Guardian.js +0 -717
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Hamilton Spectator.js +0 -129
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Hindu.js +0 -318
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Independent.js +0 -184
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Intercept.js +0 -258
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Met.js +0 -300
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Microfinance Gateway.js +0 -174
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Nation.js +0 -188
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The National Archives (UK).js +0 -242
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The New Republic.js +0 -160
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The New York Review of Books.js +0 -467
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The New Yorker.js +0 -360
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Open Library.js +0 -220
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Straits Times.js +0 -528
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Telegraph.js +0 -337
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Times and Sunday Times.js +0 -180
- scitex/scholar/.legacy/metadata/urls/zotero_translators/The Times of Israel.js +0 -151
- scitex/scholar/.legacy/metadata/urls/zotero_translators/TheMarker.js +0 -108
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Theory of Computing.js +0 -488
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ThesesFR.js +0 -298
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Thieme.js +0 -326
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Time.com.js +0 -557
- scitex/scholar/.legacy/metadata/urls/zotero_translators/TimesMachine.js +0 -222
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Tony Blair Institute for Global Change.js +0 -195
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Toronto Star.js +0 -331
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Transportation Research Board.js +0 -253
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Treesearch.js +0 -535
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Trove.js +0 -616
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Tumblr.js +0 -179
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Twitter.js +0 -413
- scitex/scholar/.legacy/metadata/urls/zotero_translators/UChicago VuFind.js +0 -907
- scitex/scholar/.legacy/metadata/urls/zotero_translators/UNZ Print Archive.js +0 -276
- scitex/scholar/.legacy/metadata/urls/zotero_translators/UPCommons.js +0 -227
- scitex/scholar/.legacy/metadata/urls/zotero_translators/US National Archives Research Catalog.js +0 -275
- scitex/scholar/.legacy/metadata/urls/zotero_translators/USENIX.js +0 -151
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Ubiquity Journals.js +0 -228
- scitex/scholar/.legacy/metadata/urls/zotero_translators/University Press Scholarship.js +0 -301
- scitex/scholar/.legacy/metadata/urls/zotero_translators/University of California Press Books.js +0 -403
- scitex/scholar/.legacy/metadata/urls/zotero_translators/University of Chicago Press Books.js +0 -378
- scitex/scholar/.legacy/metadata/urls/zotero_translators/University of Wisconsin-Madison Libraries Catalog.js +0 -298
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Unqualified Dublin Core RDF.js +0 -153
- scitex/scholar/.legacy/metadata/urls/zotero_translators/UpToDate References.js +0 -203
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Vanity Fair.js +0 -242
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Verniana-Jules Verne Studies.js +0 -190
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Verso Books.js +0 -311
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Vice.js +0 -445
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Victoria & Albert Museum.js +0 -277
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Vimeo.js +0 -188
- scitex/scholar/.legacy/metadata/urls/zotero_translators/VoxEU.js +0 -151
- scitex/scholar/.legacy/metadata/urls/zotero_translators/WHO.js +0 -458
- scitex/scholar/.legacy/metadata/urls/zotero_translators/WIPO.js +0 -189
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Wall Street Journal.js +0 -525
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Wanfang Data.js +0 -310
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Washington Monthly.js +0 -195
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Washington Post.js +0 -447
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Web of Science Nextgen.js +0 -715
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Web of Science Tagged.js +0 -1242
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Web of Science.js +0 -228
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Welt Online.js +0 -161
- scitex/scholar/.legacy/metadata/urls/zotero_translators/WestLaw UK.js +0 -190
- scitex/scholar/.legacy/metadata/urls/zotero_translators/WikiLeaks PlusD.js +0 -182
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Wikidata QuickStatements.js +0 -306
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Wikidata.js +0 -911
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Wikimedia Commons.js +0 -285
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Wikipedia Citation Templates.js +0 -432
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Wikipedia.js +0 -385
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Wikisource.js +0 -399
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Wikiwand.js +0 -122
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Wiktionary.js +0 -141
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Wildlife Biology in Practice.js +0 -172
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Wiley Online Library.js +0 -1412
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Wilson Center Digital Archive.js +0 -321
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Winnipeg Free Press.js +0 -204
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Wired.js +0 -249
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Womennews.js +0 -230
- scitex/scholar/.legacy/metadata/urls/zotero_translators/World Digital Library.js +0 -403
- scitex/scholar/.legacy/metadata/urls/zotero_translators/World History Connected.js +0 -185
- scitex/scholar/.legacy/metadata/urls/zotero_translators/World Shakespeare Bibliography Online.js +0 -595
- scitex/scholar/.legacy/metadata/urls/zotero_translators/WorldCat Discovery Service.js +0 -630
- scitex/scholar/.legacy/metadata/urls/zotero_translators/XML ContextObject.js +0 -274
- scitex/scholar/.legacy/metadata/urls/zotero_translators/YPSF.js +0 -224
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Yandex Books.js +0 -265
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Ynet.js +0 -171
- scitex/scholar/.legacy/metadata/urls/zotero_translators/YouTube.js +0 -209
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ZIPonline.js +0 -267
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ZOBODAT.js +0 -341
- scitex/scholar/.legacy/metadata/urls/zotero_translators/Zotero RDF.js +0 -583
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ZoteroBib.js +0 -94
- scitex/scholar/.legacy/metadata/urls/zotero_translators/arXiv.org.js +0 -1099
- scitex/scholar/.legacy/metadata/urls/zotero_translators/artnet.js +0 -207
- scitex/scholar/.legacy/metadata/urls/zotero_translators/beck-online.js +0 -1339
- scitex/scholar/.legacy/metadata/urls/zotero_translators/clinicaltrials.gov.js +0 -331
- scitex/scholar/.legacy/metadata/urls/zotero_translators/dLibra.js +0 -367
- scitex/scholar/.legacy/metadata/urls/zotero_translators/dejure.org.js +0 -242
- scitex/scholar/.legacy/metadata/urls/zotero_translators/deleted.txt +0 -132
- scitex/scholar/.legacy/metadata/urls/zotero_translators/dhistory.js +0 -103
- scitex/scholar/.legacy/metadata/urls/zotero_translators/digibib.net.js +0 -245
- scitex/scholar/.legacy/metadata/urls/zotero_translators/eLibrary.ru.js +0 -867
- scitex/scholar/.legacy/metadata/urls/zotero_translators/eLife.js +0 -462
- scitex/scholar/.legacy/metadata/urls/zotero_translators/eMJA.js +0 -246
- scitex/scholar/.legacy/metadata/urls/zotero_translators/eMedicine.js +0 -123
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ePrint IACR.js +0 -608
- scitex/scholar/.legacy/metadata/urls/zotero_translators/ebrary.js +0 -140
- scitex/scholar/.legacy/metadata/urls/zotero_translators/etatar.ru.js +0 -104
- scitex/scholar/.legacy/metadata/urls/zotero_translators/feb-web.ru.js +0 -167
- scitex/scholar/.legacy/metadata/urls/zotero_translators/fishpond.co.nz.js +0 -224
- scitex/scholar/.legacy/metadata/urls/zotero_translators/fr-online.de.js +0 -209
- scitex/scholar/.legacy/metadata/urls/zotero_translators/govinfo.js +0 -189
- scitex/scholar/.legacy/metadata/urls/zotero_translators/index.d.ts +0 -1646
- scitex/scholar/.legacy/metadata/urls/zotero_translators/informIT database.js +0 -248
- scitex/scholar/.legacy/metadata/urls/zotero_translators/io-port.js +0 -68
- scitex/scholar/.legacy/metadata/urls/zotero_translators/jsconfig.json +0 -10
- scitex/scholar/.legacy/metadata/urls/zotero_translators/jurion.js +0 -377
- scitex/scholar/.legacy/metadata/urls/zotero_translators/mEDRA.js +0 -597
- scitex/scholar/.legacy/metadata/urls/zotero_translators/magazines.russ.ru.js +0 -120
- scitex/scholar/.legacy/metadata/urls/zotero_translators/medes.js +0 -284
- scitex/scholar/.legacy/metadata/urls/zotero_translators/newshub.co.nz.js +0 -206
- scitex/scholar/.legacy/metadata/urls/zotero_translators/newspapers.com.js +0 -335
- scitex/scholar/.legacy/metadata/urls/zotero_translators/openJur.js +0 -161
- scitex/scholar/.legacy/metadata/urls/zotero_translators/package-lock.json +0 -2345
- scitex/scholar/.legacy/metadata/urls/zotero_translators/package.json +0 -24
- scitex/scholar/.legacy/metadata/urls/zotero_translators/reddit.js +0 -275
- scitex/scholar/.legacy/metadata/urls/zotero_translators/sbn.it.js +0 -186
- scitex/scholar/.legacy/metadata/urls/zotero_translators/scinapse.js +0 -273
- scitex/scholar/.legacy/metadata/urls/zotero_translators/semantics Visual Library.js +0 -643
- scitex/scholar/.legacy/metadata/urls/zotero_translators/taz.de.js +0 -200
- scitex/scholar/.legacy/metadata/urls/zotero_translators/unAPI.js +0 -481
- scitex/scholar/.legacy/metadata/urls/zotero_translators/wiso.js +0 -314
- scitex/scholar/.legacy/metadata/urls/zotero_translators/zbMATH.js +0 -278
- scitex/scholar/.legacy/metadata/urls/zotero_translators/zotero.org.js +0 -311
- scitex/scholar/.legacy/search/README.md +0 -205
- scitex/scholar/.legacy/search/_Embedder.py +0 -329
- scitex/scholar/.legacy/search/_SemanticSearch.py +0 -278
- scitex/scholar/.legacy/search/_SemanticSearchEngine.py +0 -452
- scitex/scholar/.legacy/search/_UnifiedSearcher.py +0 -1353
- scitex/scholar/.legacy/search/_VectorDatabase.py +0 -443
- scitex/scholar/.legacy/search/__init__.py +0 -25
- scitex/scholar/.legacy/storage/_EnhancedStorageManager.py +0 -617
- scitex/scholar/.legacy/storage/__init__.py +0 -19
- scitex/scholar/CLAUDE.md +0 -257
- scitex/scholar/TODO.md +0 -174
- scitex/scholar/_mcp_handlers.py +0 -685
- scitex/scholar/_mcp_tool_schemas.py +0 -339
- scitex/scholar/docs/backup/papers-orig.bib +0 -698
- scitex/scholar/docs/backup/papers.bib.zip +0 -0
- scitex/scholar/docs/to_claude/bin/elisp/check_parens.sh +0 -56
- scitex/scholar/docs/to_claude/bin/elisp/elisp-ci/README.md +0 -412
- scitex/scholar/docs/to_claude/bin/elisp/elisp-ci/elisp-ci +0 -622
- scitex/scholar/docs/to_claude/bin/elisp/elisp-ci/elisp-ci-simple +0 -105
- scitex/scholar/docs/to_claude/bin/elisp/find_incorrect_require_provide_statements.sh +0 -113
- scitex/scholar/docs/to_claude/bin/elisp/run_tests_elisp.sh +0 -532
- scitex/scholar/docs/to_claude/bin/elisp/run_tests_elisp_v02.sh +0 -555
- scitex/scholar/docs/to_claude/bin/elisp/sync_elisp_tdd.sh +0 -626
- scitex/scholar/docs/to_claude/bin/general/claude_emacs_server.sh +0 -192
- scitex/scholar/docs/to_claude/bin/general/create_github_release.sh +0 -36
- scitex/scholar/docs/to_claude/bin/general/find_errors.sh +0 -75
- scitex/scholar/docs/to_claude/bin/general/rename.sh +0 -145
- scitex/scholar/docs/to_claude/bin/general/render_mermaid.sh +0 -116
- scitex/scholar/docs/to_claude/bin/general/safe_rm.sh +0 -75
- scitex/scholar/docs/to_claude/bin/general/view_repo.sh +0 -4
- scitex/scholar/docs/to_claude/bin/general/wsl2-buzzer.sh +0 -73
- scitex/scholar/docs/to_claude/bin/python/black_all.sh +0 -41
- scitex/scholar/docs/to_claude/bin/python/run_tests_python_pip_package.sh +0 -291
- scitex/scholar/docs/to_claude/bin/safe_rm.sh +0 -3
- scitex/scholar/docs/to_claude/bin/slurm/README.md +0 -54
- scitex/scholar/docs/to_claude/bin/slurm/login.sh +0 -23
- scitex/scholar/docs/to_claude/bin/slurm/request.sh +0 -62
- scitex/scholar/docs/to_claude/bin/slurm/run.sh +0 -73
- scitex/scholar/docs/to_claude/examples/README.md +0 -9
- scitex/scholar/docs/to_claude/examples/example-elisp-project-emacs-hello-world/ELISP-TEST-REPORT-20250513-012234-48-PASSED-49-TOTAL-97-PERCENT.org +0 -105
- scitex/scholar/docs/to_claude/examples/example-elisp-project-emacs-hello-world/LATEST-ELISP-REPORT.org +0 -105
- scitex/scholar/docs/to_claude/examples/example-elisp-project-emacs-hello-world/README.md +0 -11
- scitex/scholar/docs/to_claude/examples/example-elisp-project-emacs-hello-world/run_tests.sh +0 -652
- scitex/scholar/docs/to_claude/examples/example-elisp-project-emacs-hello-world/tests/test-ehw-core/ELISP-TEST-REPORT-20250512-235622-0-SUCCESS-4-TOTAL-0-PERCENT.org +0 -25
- scitex/scholar/docs/to_claude/examples/example-elisp-project-emacs-hello-world/tests/test-ehw-friends/ELISP-TEST-REPORT-20250512-235622-0-SUCCESS-34-TOTAL-0-PERCENT.org +0 -66
- scitex/scholar/docs/to_claude/examples/example-elisp-project-emacs-hello-world/tests/test-ehw-prep/ELISP-TEST-REPORT-20250512-235622-0-SUCCESS-5-TOTAL-0-PERCENT.org +0 -26
- scitex/scholar/docs/to_claude/examples/example-elisp-project-emacs-hello-world/tests/test-ehw-utils/ELISP-TEST-REPORT-20250512-235622-0-SUCCESS-4-TOTAL-0-PERCENT.org +0 -25
- scitex/scholar/docs/to_claude/examples/example-python-project-scitex/.gitignore +0 -626
- scitex/scholar/docs/to_claude/examples/example-python-project-scitex/README.md +0 -155
- scitex/scholar/docs/to_claude/examples/example-python-project-scitex/config/MNIST.yaml +0 -24
- scitex/scholar/docs/to_claude/examples/example-python-project-scitex/config/PATH.yaml +0 -30
- scitex/scholar/docs/to_claude/examples/example-python-project-scitex/data/.gitkeep +0 -0
- scitex/scholar/docs/to_claude/examples/example-python-project-scitex/scripts/mnist/clf_svm.py +0 -124
- scitex/scholar/docs/to_claude/examples/example-python-project-scitex/scripts/mnist/download.py +0 -165
- scitex/scholar/docs/to_claude/examples/example-python-project-scitex/scripts/mnist/main.sh +0 -26
- scitex/scholar/docs/to_claude/examples/example-python-project-scitex/scripts/mnist/plot_conf_mat.py +0 -86
- scitex/scholar/docs/to_claude/examples/example-python-project-scitex/scripts/mnist/plot_digits.py +0 -118
- scitex/scholar/docs/to_claude/examples/example-python-project-scitex/scripts/mnist/plot_umap_space.py +0 -110
- scitex/scholar/docs/to_claude/guidelines/README.md +0 -9
- scitex/scholar/docs/to_claude/guidelines/USER_PHILOSOPHY/01_DEVELOPMENT_CYCLE.md +0 -47
- scitex/scholar/docs/to_claude/guidelines/USER_PHILOSOPHY/02_NAMING_CONVENSIONS.md +0 -91
- scitex/scholar/docs/to_claude/guidelines/USER_PHILOSOPHY/03_ARCHITECTUAL_AGREEMENT_PROCESS.md +0 -86
- scitex/scholar/docs/to_claude/guidelines/USER_PHILOSOPHY/04_ARCHITECTURE_PREDEFINED.md +0 -77
- scitex/scholar/docs/to_claude/guidelines/USER_PHILOSOPHY/05_PRIORITY_CONFIG.md +0 -22
- scitex/scholar/docs/to_claude/guidelines/USER_PHILOSOPHY/06_MULTIPLE_SPECIAL_AGENTS.md +0 -35
- scitex/scholar/docs/to_claude/guidelines/USER_PHILOSOPHY/07_DEBUGGING_TECHNIQUES.md +0 -153
- scitex/scholar/docs/to_claude/guidelines/command/IMPORTANT-rm.md +0 -69
- scitex/scholar/docs/to_claude/guidelines/command/IMPORTANT-tree.md +0 -162
- scitex/scholar/docs/to_claude/guidelines/elisp/IMPORTANT-ELISP-01-basic.md +0 -65
- scitex/scholar/docs/to_claude/guidelines/elisp/IMPORTANT-ELISP-02-project-structure.md +0 -97
- scitex/scholar/docs/to_claude/guidelines/elisp/IMPORTANT-ELISP-03-file-template.md +0 -70
- scitex/scholar/docs/to_claude/guidelines/elisp/IMPORTANT-ELISP-04-coding-style.md +0 -42
- scitex/scholar/docs/to_claude/guidelines/elisp/IMPORTANT-ELISP-05-testing-guide.md +0 -190
- scitex/scholar/docs/to_claude/guidelines/elisp/IMPORTANT-ELISP-99-example-project.md +0 -15
- scitex/scholar/docs/to_claude/guidelines/elisp/ci.md +0 -650
- scitex/scholar/docs/to_claude/guidelines/elisp/testing-with-docker.md +0 -243
- scitex/scholar/docs/to_claude/guidelines/programming_common/EXAMPLE-README-MODULE-ROOT.md +0 -32
- scitex/scholar/docs/to_claude/guidelines/programming_common/EXAMPLE-README-REPOSITORY-ROOT.md +0 -60
- scitex/scholar/docs/to_claude/guidelines/programming_common/IMPORTANT-art-of-readable-code.md +0 -1317
- scitex/scholar/docs/to_claude/guidelines/programming_common/IMPORTANT-art-of-testing.md +0 -799
- scitex/scholar/docs/to_claude/guidelines/programming_common/IMPORTANT-cleanliness.md +0 -18
- scitex/scholar/docs/to_claude/guidelines/programming_common/IMPORTANT-documentation-performance-claims.md +0 -163
- scitex/scholar/docs/to_claude/guidelines/programming_common/IMPORTANT-general.md +0 -156
- scitex/scholar/docs/to_claude/guidelines/programming_common/IMPORTANT-refactoring.md +0 -32
- scitex/scholar/docs/to_claude/guidelines/programming_common/IMPORTANT-regression-prevention.md +0 -14
- scitex/scholar/docs/to_claude/guidelines/programming_common/IMPORTANT-slurm.md +0 -73
- scitex/scholar/docs/to_claude/guidelines/programming_common/IMPORTANT-start-from-small.md +0 -30
- scitex/scholar/docs/to_claude/guidelines/programming_common/IMPORTANT-test-driven-workflow.md +0 -80
- scitex/scholar/docs/to_claude/guidelines/programming_common/IMPORTANT-version-control.md +0 -47
- scitex/scholar/docs/to_claude/guidelines/programming_common/clean-code.md +0 -305
- scitex/scholar/docs/to_claude/guidelines/programming_common/debugging-message.md +0 -52
- scitex/scholar/docs/to_claude/guidelines/programming_common/do-not-repeat-yourself.md +0 -27
- scitex/scholar/docs/to_claude/guidelines/programming_common/emacs-server.md +0 -39
- scitex/scholar/docs/to_claude/guidelines/programming_common/keep-it-simple-stupid.md +0 -19
- scitex/scholar/docs/to_claude/guidelines/programming_common/renaming-and-cleaning-workflow.md +0 -311
- scitex/scholar/docs/to_claude/guidelines/programming_common/screen.md +0 -32
- scitex/scholar/docs/to_claude/guidelines/project/IMPORTANT-CLAUDE_ID.md +0 -15
- scitex/scholar/docs/to_claude/guidelines/project/IMPORTANT-beyond-control.md +0 -14
- scitex/scholar/docs/to_claude/guidelines/project/IMPORTANT-bug-report.md +0 -43
- scitex/scholar/docs/to_claude/guidelines/project/IMPORTANT-cleanliness.md +0 -162
- scitex/scholar/docs/to_claude/guidelines/project/IMPORTANT-communication.md +0 -13
- scitex/scholar/docs/to_claude/guidelines/project/IMPORTANT-do-not-create-any-new-file-nor-directory-in-project-root.md +0 -9
- scitex/scholar/docs/to_claude/guidelines/project/IMPORTANT-documentation.md +0 -11
- scitex/scholar/docs/to_claude/guidelines/project/IMPORTANT-feature-request.md +0 -33
- scitex/scholar/docs/to_claude/guidelines/project/IMPORTANT-general-multi-agent-coordination.md +0 -311
- scitex/scholar/docs/to_claude/guidelines/project/IMPORTANT-multi-agent-protocol.md +0 -97
- scitex/scholar/docs/to_claude/guidelines/project/IMPORTANT-project-management-bulletin-board.md +0 -48
- scitex/scholar/docs/to_claude/guidelines/project/IMPORTANT-project-management-markdown.md +0 -156
- scitex/scholar/docs/to_claude/guidelines/project/IMPORTANT-project-management-org.org +0 -161
- scitex/scholar/docs/to_claude/guidelines/project/IMPORTANT-tools.md +0 -10
- scitex/scholar/docs/to_claude/guidelines/project/IMPORTANT-understand-message-in-filename.md +0 -12
- scitex/scholar/docs/to_claude/guidelines/project/general.md +0 -7
- scitex/scholar/docs/to_claude/guidelines/project/report.md +0 -50
- scitex/scholar/docs/to_claude/guidelines/project/timeline-gantt-chart.md +0 -49
- scitex/scholar/docs/to_claude/guidelines/python/CHECKLIST.md +0 -51
- scitex/scholar/docs/to_claude/guidelines/python/HOW-TO-DEBUG-with-MULTIPLE_AGENTS.md +0 -191
- scitex/scholar/docs/to_claude/guidelines/python/Machine-Learning.md +0 -15
- scitex/scholar/docs/to_claude/guidelines/python/NOT-FULL-PYTEST-BUT-PARTIAL-PYTEST.md +0 -21
- scitex/scholar/docs/to_claude/guidelines/python/django.md +0 -217
- scitex/scholar/docs/to_claude/guidelines/python/env.md +0 -10
- scitex/scholar/docs/to_claude/guidelines/python/general.md +0 -55
- scitex/scholar/docs/to_claude/guidelines/python/official/cipdb-README.md +0 -219
- scitex/scholar/docs/to_claude/guidelines/python/official/fastmcp-README.md +0 -442
- scitex/scholar/docs/to_claude/guidelines/python/official/fastmcp-TESTING.md +0 -146
- scitex/scholar/docs/to_claude/guidelines/python/official/icecream-README.md +0 -433
- scitex/scholar/docs/to_claude/guidelines/python/official/priority_config-README.md +0 -126
- scitex/scholar/docs/to_claude/guidelines/python/scitex/01-basic.md +0 -42
- scitex/scholar/docs/to_claude/guidelines/python/scitex/02-file-template.md +0 -132
- scitex/scholar/docs/to_claude/guidelines/python/scitex/03-configuration.md +0 -53
- scitex/scholar/docs/to_claude/guidelines/python/scitex/04-coding-style.md +0 -126
- scitex/scholar/docs/to_claude/guidelines/python/scitex/05-testing-guide.md +0 -56
- scitex/scholar/docs/to_claude/guidelines/python/scitex/06-examples-guide.md +0 -42
- scitex/scholar/docs/to_claude/guidelines/python/scitex/11-gen-module.md +0 -15
- scitex/scholar/docs/to_claude/guidelines/python/scitex/11-session-module.md +0 -24
- scitex/scholar/docs/to_claude/guidelines/python/scitex/12-io-module.md +0 -112
- scitex/scholar/docs/to_claude/guidelines/python/scitex/13-plt-module.md +0 -101
- scitex/scholar/docs/to_claude/guidelines/python/scitex/14-dsp-module.md +0 -78
- scitex/scholar/docs/to_claude/guidelines/python/scitex/15-pd-module.md +0 -24
- scitex/scholar/docs/to_claude/guidelines/python/scitex/16-stats-module.md +0 -79
- scitex/scholar/docs/to_claude/guidelines/python/scitex/17-other-modules.md +0 -23
- scitex/scholar/docs/to_claude/guidelines/python/scitex/17-str-module.md +0 -24
- scitex/scholar/docs/to_claude/guidelines/python/scitex/18-directory-structure-for-scientific-work.md +0 -48
- scitex/scholar/docs/to_claude/guidelines/python/scitex/19-directory-structure-for-pip-package.md +0 -234
- scitex/scholar/docs/to_claude/guidelines/python/scitex/99-example-project.md +0 -19
- scitex/scholar/docs/to_claude/guidelines/python/zen_of_python.md +0 -82
- scitex/scholar/docs/to_claude/guidelines/science/IMPORTANT-general.md +0 -16
- scitex/scholar/docs/to_claude/guidelines/science/IMPORTANT-scientific-attitude.md +0 -25
- scitex/scholar/docs/to_claude/guidelines/science/scientific-writing-abstract.md +0 -93
- scitex/scholar/docs/to_claude/guidelines/science/scientific-writing-discussion.md +0 -116
- scitex/scholar/docs/to_claude/guidelines/science/scientific-writing-general-1.md +0 -157
- scitex/scholar/docs/to_claude/guidelines/science/scientific-writing-general-2.md +0 -83
- scitex/scholar/docs/to_claude/guidelines/science/scientific-writing-introduction.md +0 -123
- scitex/scholar/docs/to_claude/guidelines/science/scientific-writing-methods.md +0 -88
- scitex/scholar/docs/to_claude/guidelines/shell/IMPORTANT-general.md +0 -196
- scitex/scholar/examples/SUGGESTIONS.md +0 -865
- scitex/scholar/examples/dev.py +0 -38
- scitex/scholar/library/neurovista/info/bibtex/seizure_prediction_enriched.bib +0 -1092
- scitex/stats/_mcp_handlers.py +0 -1191
- scitex/stats/_mcp_tool_schemas.py +0 -384
- scitex/template/.legacy/_clone_project.py +0 -267
- scitex/template/_mcp_handlers.py +0 -259
- scitex/template/_mcp_tool_schemas.py +0 -112
- scitex/writer/.legacy/Writer_v01-refactored.py +0 -189
- scitex/writer/.legacy/_compile.py +0 -342
- scitex/writer/_compile_async.py +0 -126
- scitex/writer/_validate_tree_structures.py +0 -197
- scitex/writer/dataclasses/config/_WriterConfig.py +0 -175
- scitex/writer/dataclasses/contents/_ManuscriptContents.py +0 -236
- scitex/writer/dataclasses/core/_Document.py +0 -146
- scitex/writer/dataclasses/core/_DocumentSection.py +0 -546
- scitex/writer/dataclasses/results/_CompilationResult.py +0 -165
- scitex/writer/dataclasses/results/_LaTeXIssue.py +0 -102
- scitex/writer/dataclasses/tree/MINIMUM_FILES.md +0 -121
- scitex/writer/tests/__init__.py +0 -3
- scitex/writer/tests/test_diff_between.py +0 -451
- scitex/writer/tests/test_document_section.py +0 -311
- scitex/writer/tests/test_document_workflow.py +0 -393
- scitex/writer/tests/test_writer.py +0 -361
- scitex/writer/tests/test_writer_integration.py +0 -303
- scitex-2.13.0.dist-info/METADATA +0 -1231
- scitex-2.13.0.dist-info/RECORD +0 -3402
- scitex-2.13.0.dist-info/entry_points.txt +0 -11
- /scitex/scholar/docs/{SUMMARY.md → 00_SUMMARY.md} +0 -0
- /scitex/scholar/docs/{STORAGE_ARCHITECTURE.md → 01_STORAGE_ARCHITECTURE.md} +0 -0
- /scitex/scholar/docs/{PIPELINE_ORGANIZATION.md → 02_PIPELINE_ORGANIZATION.md} +0 -0
- /scitex/scholar/docs/{PIPELINE_IMPLEMENTATION_PLAN.md → 03_PIPELINE_IMPLEMENTATION_PLAN.md} +0 -0
- /scitex/scholar/docs/{PIPELINE_IMPLEMENTATION_COMPLETE.md → 04_PIPELINE_IMPLEMENTATION_COMPLETE.md} +0 -0
- /scitex/scholar/docs/{DETAILS_FOR_DEVELOPERS.md → 05_DETAILS_FOR_DEVELOPERS.md} +0 -0
- /scitex/scholar/docs/{IMPACT_FACTOR_CITATION_INTEGRATION.md → 06_IMPACT_FACTOR_CITATION_INTEGRATION.md} +0 -0
- /scitex/writer/{dataclasses → _dataclasses}/__init__.py +0 -0
- /scitex/writer/{dataclasses → _dataclasses}/config/_CONSTANTS.py +0 -0
- /scitex/writer/{dataclasses → _dataclasses}/config/__init__.py +0 -0
- /scitex/writer/{dataclasses → _dataclasses}/contents/_RevisionContents.py +0 -0
- /scitex/writer/{dataclasses → _dataclasses}/contents/_SupplementaryContents.py +0 -0
- /scitex/writer/{dataclasses → _dataclasses}/contents/__init__.py +0 -0
- /scitex/writer/{dataclasses → _dataclasses}/core/__init__.py +0 -0
- /scitex/writer/{dataclasses → _dataclasses}/results/_SaveSectionsResponse.py +0 -0
- /scitex/writer/{dataclasses → _dataclasses}/results/_SectionReadResponse.py +0 -0
- /scitex/writer/{dataclasses → _dataclasses}/results/__init__.py +0 -0
- /scitex/writer/{dataclasses → _dataclasses}/tree/_ConfigTree.py +0 -0
- /scitex/writer/{dataclasses → _dataclasses}/tree/_ManuscriptTree.py +0 -0
- /scitex/writer/{dataclasses → _dataclasses}/tree/_RevisionTree.py +0 -0
- /scitex/writer/{dataclasses → _dataclasses}/tree/_ScriptsTree.py +0 -0
- /scitex/writer/{dataclasses → _dataclasses}/tree/_SharedTree.py +0 -0
- /scitex/writer/{dataclasses → _dataclasses}/tree/_SupplementaryTree.py +0 -0
- /scitex/writer/{dataclasses → _dataclasses}/tree/__init__.py +0 -0
- {scitex-2.13.0.dist-info → scitex-2.15.1.dist-info}/WHEEL +0 -0
- {scitex-2.13.0.dist-info → scitex-2.15.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,1638 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"translatorID": "1412e9e2-51e1-42ec-aa35-e036a895534b",
|
|
3
|
-
"label": "Note Markdown",
|
|
4
|
-
"creator": "Martynas Bagdonas",
|
|
5
|
-
"target": "md",
|
|
6
|
-
"minVersion": "5.0.97",
|
|
7
|
-
"maxVersion": "",
|
|
8
|
-
"priority": 50,
|
|
9
|
-
"configOptions": {
|
|
10
|
-
"noteTranslator": true
|
|
11
|
-
},
|
|
12
|
-
"displayOptions": {
|
|
13
|
-
"includeAppLinks": true
|
|
14
|
-
},
|
|
15
|
-
"inRepository": true,
|
|
16
|
-
"translatorType": 2,
|
|
17
|
-
"lastUpdated": "2024-07-10 16:00:00"
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/*
|
|
21
|
-
***** BEGIN LICENSE BLOCK *****
|
|
22
|
-
|
|
23
|
-
Copyright © 2021 Corporation for Digital Scholarship
|
|
24
|
-
Vienna, Virginia, USA
|
|
25
|
-
http://digitalscholar.org/
|
|
26
|
-
|
|
27
|
-
This file is part of Zotero.
|
|
28
|
-
|
|
29
|
-
Zotero is free software: you can redistribute it and/or modify
|
|
30
|
-
it under the terms of the GNU Affero General Public License as published by
|
|
31
|
-
the Free Software Foundation, either version 3 of the License, or
|
|
32
|
-
(at your option) any later version.
|
|
33
|
-
|
|
34
|
-
Zotero is distributed in the hope that it will be useful,
|
|
35
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
36
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
37
|
-
GNU Affero General Public License for more details.
|
|
38
|
-
|
|
39
|
-
You should have received a copy of the GNU Affero General Public License
|
|
40
|
-
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
|
|
41
|
-
|
|
42
|
-
***** END LICENSE BLOCK *****
|
|
43
|
-
*/
|
|
44
|
-
|
|
45
|
-
let bundle;
|
|
46
|
-
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
|
|
47
|
-
// shim for using process in browser
|
|
48
|
-
var process = module.exports = {};
|
|
49
|
-
|
|
50
|
-
// cached from whatever global is present so that test runners that stub it
|
|
51
|
-
// don't break things. But we need to wrap it in a try catch in case it is
|
|
52
|
-
// wrapped in strict mode code which doesn't define any globals. It's inside a
|
|
53
|
-
// function because try/catches deoptimize in certain engines.
|
|
54
|
-
|
|
55
|
-
var cachedSetTimeout;
|
|
56
|
-
var cachedClearTimeout;
|
|
57
|
-
|
|
58
|
-
function defaultSetTimout() {
|
|
59
|
-
throw new Error('setTimeout has not been defined');
|
|
60
|
-
}
|
|
61
|
-
function defaultClearTimeout () {
|
|
62
|
-
throw new Error('clearTimeout has not been defined');
|
|
63
|
-
}
|
|
64
|
-
(function () {
|
|
65
|
-
try {
|
|
66
|
-
if (typeof setTimeout === 'function') {
|
|
67
|
-
cachedSetTimeout = setTimeout;
|
|
68
|
-
} else {
|
|
69
|
-
cachedSetTimeout = defaultSetTimout;
|
|
70
|
-
}
|
|
71
|
-
} catch (e) {
|
|
72
|
-
cachedSetTimeout = defaultSetTimout;
|
|
73
|
-
}
|
|
74
|
-
try {
|
|
75
|
-
if (typeof clearTimeout === 'function') {
|
|
76
|
-
cachedClearTimeout = clearTimeout;
|
|
77
|
-
} else {
|
|
78
|
-
cachedClearTimeout = defaultClearTimeout;
|
|
79
|
-
}
|
|
80
|
-
} catch (e) {
|
|
81
|
-
cachedClearTimeout = defaultClearTimeout;
|
|
82
|
-
}
|
|
83
|
-
} ())
|
|
84
|
-
function runTimeout(fun) {
|
|
85
|
-
if (cachedSetTimeout === setTimeout) {
|
|
86
|
-
//normal enviroments in sane situations
|
|
87
|
-
return setTimeout(fun, 0);
|
|
88
|
-
}
|
|
89
|
-
// if setTimeout wasn't available but was latter defined
|
|
90
|
-
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
|
|
91
|
-
cachedSetTimeout = setTimeout;
|
|
92
|
-
return setTimeout(fun, 0);
|
|
93
|
-
}
|
|
94
|
-
try {
|
|
95
|
-
// when when somebody has screwed with setTimeout but no I.E. maddness
|
|
96
|
-
return cachedSetTimeout(fun, 0);
|
|
97
|
-
} catch(e){
|
|
98
|
-
try {
|
|
99
|
-
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
|
|
100
|
-
return cachedSetTimeout.call(null, fun, 0);
|
|
101
|
-
} catch(e){
|
|
102
|
-
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
|
|
103
|
-
return cachedSetTimeout.call(this, fun, 0);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
function runClearTimeout(marker) {
|
|
110
|
-
if (cachedClearTimeout === clearTimeout) {
|
|
111
|
-
//normal enviroments in sane situations
|
|
112
|
-
return clearTimeout(marker);
|
|
113
|
-
}
|
|
114
|
-
// if clearTimeout wasn't available but was latter defined
|
|
115
|
-
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
|
|
116
|
-
cachedClearTimeout = clearTimeout;
|
|
117
|
-
return clearTimeout(marker);
|
|
118
|
-
}
|
|
119
|
-
try {
|
|
120
|
-
// when when somebody has screwed with setTimeout but no I.E. maddness
|
|
121
|
-
return cachedClearTimeout(marker);
|
|
122
|
-
} catch (e){
|
|
123
|
-
try {
|
|
124
|
-
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
|
|
125
|
-
return cachedClearTimeout.call(null, marker);
|
|
126
|
-
} catch (e){
|
|
127
|
-
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
|
|
128
|
-
// Some versions of I.E. have different rules for clearTimeout vs setTimeout
|
|
129
|
-
return cachedClearTimeout.call(this, marker);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
}
|
|
136
|
-
var queue = [];
|
|
137
|
-
var draining = false;
|
|
138
|
-
var currentQueue;
|
|
139
|
-
var queueIndex = -1;
|
|
140
|
-
|
|
141
|
-
function cleanUpNextTick() {
|
|
142
|
-
if (!draining || !currentQueue) {
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
draining = false;
|
|
146
|
-
if (currentQueue.length) {
|
|
147
|
-
queue = currentQueue.concat(queue);
|
|
148
|
-
} else {
|
|
149
|
-
queueIndex = -1;
|
|
150
|
-
}
|
|
151
|
-
if (queue.length) {
|
|
152
|
-
drainQueue();
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
function drainQueue() {
|
|
157
|
-
if (draining) {
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
var timeout = runTimeout(cleanUpNextTick);
|
|
161
|
-
draining = true;
|
|
162
|
-
|
|
163
|
-
var len = queue.length;
|
|
164
|
-
while(len) {
|
|
165
|
-
currentQueue = queue;
|
|
166
|
-
queue = [];
|
|
167
|
-
while (++queueIndex < len) {
|
|
168
|
-
if (currentQueue) {
|
|
169
|
-
currentQueue[queueIndex].run();
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
queueIndex = -1;
|
|
173
|
-
len = queue.length;
|
|
174
|
-
}
|
|
175
|
-
currentQueue = null;
|
|
176
|
-
draining = false;
|
|
177
|
-
runClearTimeout(timeout);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
process.nextTick = function (fun) {
|
|
181
|
-
var args = new Array(arguments.length - 1);
|
|
182
|
-
if (arguments.length > 1) {
|
|
183
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
184
|
-
args[i - 1] = arguments[i];
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
queue.push(new Item(fun, args));
|
|
188
|
-
if (queue.length === 1 && !draining) {
|
|
189
|
-
runTimeout(drainQueue);
|
|
190
|
-
}
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
// v8 likes predictible objects
|
|
194
|
-
function Item(fun, array) {
|
|
195
|
-
this.fun = fun;
|
|
196
|
-
this.array = array;
|
|
197
|
-
}
|
|
198
|
-
Item.prototype.run = function () {
|
|
199
|
-
this.fun.apply(null, this.array);
|
|
200
|
-
};
|
|
201
|
-
process.title = 'browser';
|
|
202
|
-
process.browser = true;
|
|
203
|
-
process.env = {};
|
|
204
|
-
process.argv = [];
|
|
205
|
-
process.version = ''; // empty string to avoid regexp issues
|
|
206
|
-
process.versions = {};
|
|
207
|
-
|
|
208
|
-
function noop() {}
|
|
209
|
-
|
|
210
|
-
process.on = noop;
|
|
211
|
-
process.addListener = noop;
|
|
212
|
-
process.once = noop;
|
|
213
|
-
process.off = noop;
|
|
214
|
-
process.removeListener = noop;
|
|
215
|
-
process.removeAllListeners = noop;
|
|
216
|
-
process.emit = noop;
|
|
217
|
-
process.prependListener = noop;
|
|
218
|
-
process.prependOnceListener = noop;
|
|
219
|
-
|
|
220
|
-
process.listeners = function (name) { return [] }
|
|
221
|
-
|
|
222
|
-
process.binding = function (name) {
|
|
223
|
-
throw new Error('process.binding is not supported');
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
process.cwd = function () { return '/' };
|
|
227
|
-
process.chdir = function (dir) {
|
|
228
|
-
throw new Error('process.chdir is not supported');
|
|
229
|
-
};
|
|
230
|
-
process.umask = function() { return 0; };
|
|
231
|
-
|
|
232
|
-
},{}],2:[function(require,module,exports){
|
|
233
|
-
'use strict';
|
|
234
|
-
|
|
235
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
236
|
-
|
|
237
|
-
var highlightRegExp = /highlight-(?:text|source)-([a-z0-9]+)/;
|
|
238
|
-
|
|
239
|
-
function highlightedCodeBlock (turndownService) {
|
|
240
|
-
turndownService.addRule('highlightedCodeBlock', {
|
|
241
|
-
filter: function (node) {
|
|
242
|
-
var firstChild = node.firstChild;
|
|
243
|
-
return (
|
|
244
|
-
node.nodeName === 'DIV' &&
|
|
245
|
-
highlightRegExp.test(node.className) &&
|
|
246
|
-
firstChild &&
|
|
247
|
-
firstChild.nodeName === 'PRE'
|
|
248
|
-
)
|
|
249
|
-
},
|
|
250
|
-
replacement: function (content, node, options) {
|
|
251
|
-
var className = node.className || '';
|
|
252
|
-
var language = (className.match(highlightRegExp) || [null, ''])[1];
|
|
253
|
-
|
|
254
|
-
return (
|
|
255
|
-
'\n\n' + options.fence + language + '\n' +
|
|
256
|
-
node.firstChild.textContent +
|
|
257
|
-
'\n' + options.fence + '\n\n'
|
|
258
|
-
)
|
|
259
|
-
}
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
function strikethrough (turndownService) {
|
|
264
|
-
turndownService.addRule('strikethrough', {
|
|
265
|
-
filter: ['del', 's', 'strike'],
|
|
266
|
-
replacement: function (content) {
|
|
267
|
-
return '~' + content + '~'
|
|
268
|
-
}
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
var indexOf = Array.prototype.indexOf;
|
|
273
|
-
var every = Array.prototype.every;
|
|
274
|
-
var rules = {};
|
|
275
|
-
|
|
276
|
-
rules.tableCell = {
|
|
277
|
-
filter: ['th', 'td'],
|
|
278
|
-
replacement: function (content, node) {
|
|
279
|
-
return cell(content, node)
|
|
280
|
-
}
|
|
281
|
-
};
|
|
282
|
-
|
|
283
|
-
rules.tableRow = {
|
|
284
|
-
filter: 'tr',
|
|
285
|
-
replacement: function (content, node) {
|
|
286
|
-
var borderCells = '';
|
|
287
|
-
var alignMap = { left: ':--', right: '--:', center: ':-:' };
|
|
288
|
-
|
|
289
|
-
if (isHeadingRow(node)) {
|
|
290
|
-
for (var i = 0; i < node.childNodes.length; i++) {
|
|
291
|
-
var border = '---';
|
|
292
|
-
var align = (
|
|
293
|
-
node.childNodes[i].getAttribute('align') || ''
|
|
294
|
-
).toLowerCase();
|
|
295
|
-
|
|
296
|
-
if (align) border = alignMap[align] || border;
|
|
297
|
-
|
|
298
|
-
borderCells += cell(border, node.childNodes[i]);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
return '\n' + content + (borderCells ? '\n' + borderCells : '')
|
|
302
|
-
}
|
|
303
|
-
};
|
|
304
|
-
|
|
305
|
-
rules.table = {
|
|
306
|
-
// Only convert tables with a heading row.
|
|
307
|
-
// Tables with no heading row are kept using `keep` (see below).
|
|
308
|
-
filter: function (node) {
|
|
309
|
-
return node.nodeName === 'TABLE' && isHeadingRow(node.rows[0])
|
|
310
|
-
},
|
|
311
|
-
|
|
312
|
-
replacement: function (content) {
|
|
313
|
-
// Ensure there are no blank lines
|
|
314
|
-
content = content.replace('\n\n', '\n');
|
|
315
|
-
return '\n\n' + content + '\n\n'
|
|
316
|
-
}
|
|
317
|
-
};
|
|
318
|
-
|
|
319
|
-
rules.tableSection = {
|
|
320
|
-
filter: ['thead', 'tbody', 'tfoot'],
|
|
321
|
-
replacement: function (content) {
|
|
322
|
-
return content
|
|
323
|
-
}
|
|
324
|
-
};
|
|
325
|
-
|
|
326
|
-
// A tr is a heading row if:
|
|
327
|
-
// - the parent is a THEAD
|
|
328
|
-
// - or if its the first child of the TABLE or the first TBODY (possibly
|
|
329
|
-
// following a blank THEAD)
|
|
330
|
-
// - and every cell is a TH
|
|
331
|
-
function isHeadingRow (tr) {
|
|
332
|
-
var parentNode = tr.parentNode;
|
|
333
|
-
return (
|
|
334
|
-
parentNode.nodeName === 'THEAD' ||
|
|
335
|
-
(
|
|
336
|
-
parentNode.firstChild === tr &&
|
|
337
|
-
(parentNode.nodeName === 'TABLE' || isFirstTbody(parentNode)) &&
|
|
338
|
-
every.call(tr.childNodes, function (n) { return n.nodeName === 'TH' })
|
|
339
|
-
)
|
|
340
|
-
)
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
function isFirstTbody (element) {
|
|
344
|
-
var previousSibling = element.previousSibling;
|
|
345
|
-
return (
|
|
346
|
-
element.nodeName === 'TBODY' && (
|
|
347
|
-
!previousSibling ||
|
|
348
|
-
(
|
|
349
|
-
previousSibling.nodeName === 'THEAD' &&
|
|
350
|
-
/^\s*$/i.test(previousSibling.textContent)
|
|
351
|
-
)
|
|
352
|
-
)
|
|
353
|
-
)
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
function cell (content, node) {
|
|
357
|
-
var index = indexOf.call(node.parentNode.childNodes, node);
|
|
358
|
-
var prefix = ' ';
|
|
359
|
-
if (index === 0) prefix = '| ';
|
|
360
|
-
return prefix + content + ' |'
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
function tables (turndownService) {
|
|
364
|
-
turndownService.keep(function (node) {
|
|
365
|
-
return node.nodeName === 'TABLE' && !isHeadingRow(node.rows[0])
|
|
366
|
-
});
|
|
367
|
-
for (var key in rules) turndownService.addRule(key, rules[key]);
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
function taskListItems (turndownService) {
|
|
371
|
-
turndownService.addRule('taskListItems', {
|
|
372
|
-
filter: function (node) {
|
|
373
|
-
return node.type === 'checkbox' && node.parentNode.nodeName === 'LI'
|
|
374
|
-
},
|
|
375
|
-
replacement: function (content, node) {
|
|
376
|
-
return (node.checked ? '[x]' : '[ ]') + ' '
|
|
377
|
-
}
|
|
378
|
-
});
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
function gfm (turndownService) {
|
|
382
|
-
turndownService.use([
|
|
383
|
-
highlightedCodeBlock,
|
|
384
|
-
strikethrough,
|
|
385
|
-
tables,
|
|
386
|
-
taskListItems
|
|
387
|
-
]);
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
exports.gfm = gfm;
|
|
391
|
-
exports.highlightedCodeBlock = highlightedCodeBlock;
|
|
392
|
-
exports.strikethrough = strikethrough;
|
|
393
|
-
exports.tables = tables;
|
|
394
|
-
exports.taskListItems = taskListItems;
|
|
395
|
-
|
|
396
|
-
},{}],3:[function(require,module,exports){
|
|
397
|
-
(function (process){(function (){
|
|
398
|
-
(function (global, factory) {
|
|
399
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
400
|
-
typeof define === 'function' && define.amd ? define(factory) :
|
|
401
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.TurndownService = factory());
|
|
402
|
-
}(this, (function () { 'use strict';
|
|
403
|
-
|
|
404
|
-
function extend (destination) {
|
|
405
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
406
|
-
var source = arguments[i];
|
|
407
|
-
for (var key in source) {
|
|
408
|
-
if (source.hasOwnProperty(key)) destination[key] = source[key];
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
return destination
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
function repeat (character, count) {
|
|
415
|
-
return Array(count + 1).join(character)
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
function trimLeadingNewlines (string) {
|
|
419
|
-
return string.replace(/^\n*/, '')
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
function trimTrailingNewlines (string) {
|
|
423
|
-
// avoid match-at-end regexp bottleneck, see #370
|
|
424
|
-
var indexEnd = string.length;
|
|
425
|
-
while (indexEnd > 0 && string[indexEnd - 1] === '\n') indexEnd--;
|
|
426
|
-
return string.substring(0, indexEnd)
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
var blockElements = [
|
|
430
|
-
'ADDRESS', 'ARTICLE', 'ASIDE', 'AUDIO', 'BLOCKQUOTE', 'BODY', 'CANVAS',
|
|
431
|
-
'CENTER', 'DD', 'DIR', 'DIV', 'DL', 'DT', 'FIELDSET', 'FIGCAPTION', 'FIGURE',
|
|
432
|
-
'FOOTER', 'FORM', 'FRAMESET', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HEADER',
|
|
433
|
-
'HGROUP', 'HR', 'HTML', 'ISINDEX', 'LI', 'MAIN', 'MENU', 'NAV', 'NOFRAMES',
|
|
434
|
-
'NOSCRIPT', 'OL', 'OUTPUT', 'P', 'PRE', 'SECTION', 'TABLE', 'TBODY', 'TD',
|
|
435
|
-
'TFOOT', 'TH', 'THEAD', 'TR', 'UL'
|
|
436
|
-
];
|
|
437
|
-
|
|
438
|
-
function isBlock (node) {
|
|
439
|
-
return is(node, blockElements)
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
var voidElements = [
|
|
443
|
-
'AREA', 'BASE', 'BR', 'COL', 'COMMAND', 'EMBED', 'HR', 'IMG', 'INPUT',
|
|
444
|
-
'KEYGEN', 'LINK', 'META', 'PARAM', 'SOURCE', 'TRACK', 'WBR'
|
|
445
|
-
];
|
|
446
|
-
|
|
447
|
-
function isVoid (node) {
|
|
448
|
-
return is(node, voidElements)
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
function hasVoid (node) {
|
|
452
|
-
return has(node, voidElements)
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
var meaningfulWhenBlankElements = [
|
|
456
|
-
'A', 'TABLE', 'THEAD', 'TBODY', 'TFOOT', 'TH', 'TD', 'IFRAME', 'SCRIPT',
|
|
457
|
-
'AUDIO', 'VIDEO'
|
|
458
|
-
];
|
|
459
|
-
|
|
460
|
-
function isMeaningfulWhenBlank (node) {
|
|
461
|
-
return is(node, meaningfulWhenBlankElements)
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
function hasMeaningfulWhenBlank (node) {
|
|
465
|
-
return has(node, meaningfulWhenBlankElements)
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
function is (node, tagNames) {
|
|
469
|
-
return tagNames.indexOf(node.nodeName) >= 0
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
function has (node, tagNames) {
|
|
473
|
-
return (
|
|
474
|
-
node.getElementsByTagName &&
|
|
475
|
-
tagNames.some(function (tagName) {
|
|
476
|
-
return node.getElementsByTagName(tagName).length
|
|
477
|
-
})
|
|
478
|
-
)
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
var rules = {};
|
|
482
|
-
|
|
483
|
-
rules.paragraph = {
|
|
484
|
-
filter: 'p',
|
|
485
|
-
|
|
486
|
-
replacement: function (content) {
|
|
487
|
-
return '\n\n' + content + '\n\n'
|
|
488
|
-
}
|
|
489
|
-
};
|
|
490
|
-
|
|
491
|
-
rules.lineBreak = {
|
|
492
|
-
filter: 'br',
|
|
493
|
-
|
|
494
|
-
replacement: function (content, node, options) {
|
|
495
|
-
return options.br + '\n'
|
|
496
|
-
}
|
|
497
|
-
};
|
|
498
|
-
|
|
499
|
-
rules.heading = {
|
|
500
|
-
filter: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'],
|
|
501
|
-
|
|
502
|
-
replacement: function (content, node, options) {
|
|
503
|
-
var hLevel = Number(node.nodeName.charAt(1));
|
|
504
|
-
|
|
505
|
-
if (options.headingStyle === 'setext' && hLevel < 3) {
|
|
506
|
-
var underline = repeat((hLevel === 1 ? '=' : '-'), content.length);
|
|
507
|
-
return (
|
|
508
|
-
'\n\n' + content + '\n' + underline + '\n\n'
|
|
509
|
-
)
|
|
510
|
-
} else {
|
|
511
|
-
return '\n\n' + repeat('#', hLevel) + ' ' + content + '\n\n'
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
};
|
|
515
|
-
|
|
516
|
-
rules.blockquote = {
|
|
517
|
-
filter: 'blockquote',
|
|
518
|
-
|
|
519
|
-
replacement: function (content) {
|
|
520
|
-
content = content.replace(/^\n+|\n+$/g, '');
|
|
521
|
-
content = content.replace(/^/gm, '> ');
|
|
522
|
-
return '\n\n' + content + '\n\n'
|
|
523
|
-
}
|
|
524
|
-
};
|
|
525
|
-
|
|
526
|
-
rules.list = {
|
|
527
|
-
filter: ['ul', 'ol'],
|
|
528
|
-
|
|
529
|
-
replacement: function (content, node) {
|
|
530
|
-
var parent = node.parentNode;
|
|
531
|
-
if (parent.nodeName === 'LI' && parent.lastElementChild === node) {
|
|
532
|
-
return '\n' + content
|
|
533
|
-
} else {
|
|
534
|
-
return '\n\n' + content + '\n\n'
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
};
|
|
538
|
-
|
|
539
|
-
rules.listItem = {
|
|
540
|
-
filter: 'li',
|
|
541
|
-
|
|
542
|
-
replacement: function (content, node, options) {
|
|
543
|
-
content = content
|
|
544
|
-
.replace(/^\n+/, '') // remove leading newlines
|
|
545
|
-
.replace(/\n+$/, '\n') // replace trailing newlines with just a single one
|
|
546
|
-
.replace(/\n/gm, '\n '); // indent
|
|
547
|
-
var prefix = options.bulletListMarker + ' ';
|
|
548
|
-
var parent = node.parentNode;
|
|
549
|
-
if (parent.nodeName === 'OL') {
|
|
550
|
-
var start = parent.getAttribute('start');
|
|
551
|
-
var index = Array.prototype.indexOf.call(parent.children, node);
|
|
552
|
-
prefix = (start ? Number(start) + index : index + 1) + '. ';
|
|
553
|
-
}
|
|
554
|
-
return (
|
|
555
|
-
prefix + content + (node.nextSibling && !/\n$/.test(content) ? '\n' : '')
|
|
556
|
-
)
|
|
557
|
-
}
|
|
558
|
-
};
|
|
559
|
-
|
|
560
|
-
rules.indentedCodeBlock = {
|
|
561
|
-
filter: function (node, options) {
|
|
562
|
-
return (
|
|
563
|
-
options.codeBlockStyle === 'indented' &&
|
|
564
|
-
node.nodeName === 'PRE' &&
|
|
565
|
-
node.firstChild &&
|
|
566
|
-
node.firstChild.nodeName === 'CODE'
|
|
567
|
-
)
|
|
568
|
-
},
|
|
569
|
-
|
|
570
|
-
replacement: function (content, node, options) {
|
|
571
|
-
return (
|
|
572
|
-
'\n\n ' +
|
|
573
|
-
node.firstChild.textContent.replace(/\n/g, '\n ') +
|
|
574
|
-
'\n\n'
|
|
575
|
-
)
|
|
576
|
-
}
|
|
577
|
-
};
|
|
578
|
-
|
|
579
|
-
rules.fencedCodeBlock = {
|
|
580
|
-
filter: function (node, options) {
|
|
581
|
-
return (
|
|
582
|
-
options.codeBlockStyle === 'fenced' &&
|
|
583
|
-
node.nodeName === 'PRE' &&
|
|
584
|
-
node.firstChild &&
|
|
585
|
-
node.firstChild.nodeName === 'CODE'
|
|
586
|
-
)
|
|
587
|
-
},
|
|
588
|
-
|
|
589
|
-
replacement: function (content, node, options) {
|
|
590
|
-
var className = node.firstChild.getAttribute('class') || '';
|
|
591
|
-
var language = (className.match(/language-(\S+)/) || [null, ''])[1];
|
|
592
|
-
var code = node.firstChild.textContent;
|
|
593
|
-
|
|
594
|
-
var fenceChar = options.fence.charAt(0);
|
|
595
|
-
var fenceSize = 3;
|
|
596
|
-
var fenceInCodeRegex = new RegExp('^' + fenceChar + '{3,}', 'gm');
|
|
597
|
-
|
|
598
|
-
var match;
|
|
599
|
-
while ((match = fenceInCodeRegex.exec(code))) {
|
|
600
|
-
if (match[0].length >= fenceSize) {
|
|
601
|
-
fenceSize = match[0].length + 1;
|
|
602
|
-
}
|
|
603
|
-
}
|
|
604
|
-
|
|
605
|
-
var fence = repeat(fenceChar, fenceSize);
|
|
606
|
-
|
|
607
|
-
return (
|
|
608
|
-
'\n\n' + fence + language + '\n' +
|
|
609
|
-
code.replace(/\n$/, '') +
|
|
610
|
-
'\n' + fence + '\n\n'
|
|
611
|
-
)
|
|
612
|
-
}
|
|
613
|
-
};
|
|
614
|
-
|
|
615
|
-
rules.horizontalRule = {
|
|
616
|
-
filter: 'hr',
|
|
617
|
-
|
|
618
|
-
replacement: function (content, node, options) {
|
|
619
|
-
return '\n\n' + options.hr + '\n\n'
|
|
620
|
-
}
|
|
621
|
-
};
|
|
622
|
-
|
|
623
|
-
rules.inlineLink = {
|
|
624
|
-
filter: function (node, options) {
|
|
625
|
-
return (
|
|
626
|
-
options.linkStyle === 'inlined' &&
|
|
627
|
-
node.nodeName === 'A' &&
|
|
628
|
-
node.getAttribute('href')
|
|
629
|
-
)
|
|
630
|
-
},
|
|
631
|
-
|
|
632
|
-
replacement: function (content, node) {
|
|
633
|
-
var href = node.getAttribute('href');
|
|
634
|
-
var title = cleanAttribute(node.getAttribute('title'));
|
|
635
|
-
if (title) title = ' "' + title + '"';
|
|
636
|
-
return '[' + content + '](' + href + title + ')'
|
|
637
|
-
}
|
|
638
|
-
};
|
|
639
|
-
|
|
640
|
-
rules.referenceLink = {
|
|
641
|
-
filter: function (node, options) {
|
|
642
|
-
return (
|
|
643
|
-
options.linkStyle === 'referenced' &&
|
|
644
|
-
node.nodeName === 'A' &&
|
|
645
|
-
node.getAttribute('href')
|
|
646
|
-
)
|
|
647
|
-
},
|
|
648
|
-
|
|
649
|
-
replacement: function (content, node, options) {
|
|
650
|
-
var href = node.getAttribute('href');
|
|
651
|
-
var title = cleanAttribute(node.getAttribute('title'));
|
|
652
|
-
if (title) title = ' "' + title + '"';
|
|
653
|
-
var replacement;
|
|
654
|
-
var reference;
|
|
655
|
-
|
|
656
|
-
switch (options.linkReferenceStyle) {
|
|
657
|
-
case 'collapsed':
|
|
658
|
-
replacement = '[' + content + '][]';
|
|
659
|
-
reference = '[' + content + ']: ' + href + title;
|
|
660
|
-
break
|
|
661
|
-
case 'shortcut':
|
|
662
|
-
replacement = '[' + content + ']';
|
|
663
|
-
reference = '[' + content + ']: ' + href + title;
|
|
664
|
-
break
|
|
665
|
-
default:
|
|
666
|
-
var id = this.references.length + 1;
|
|
667
|
-
replacement = '[' + content + '][' + id + ']';
|
|
668
|
-
reference = '[' + id + ']: ' + href + title;
|
|
669
|
-
}
|
|
670
|
-
|
|
671
|
-
this.references.push(reference);
|
|
672
|
-
return replacement
|
|
673
|
-
},
|
|
674
|
-
|
|
675
|
-
references: [],
|
|
676
|
-
|
|
677
|
-
append: function (options) {
|
|
678
|
-
var references = '';
|
|
679
|
-
if (this.references.length) {
|
|
680
|
-
references = '\n\n' + this.references.join('\n') + '\n\n';
|
|
681
|
-
this.references = []; // Reset references
|
|
682
|
-
}
|
|
683
|
-
return references
|
|
684
|
-
}
|
|
685
|
-
};
|
|
686
|
-
|
|
687
|
-
rules.emphasis = {
|
|
688
|
-
filter: ['em', 'i'],
|
|
689
|
-
|
|
690
|
-
replacement: function (content, node, options) {
|
|
691
|
-
if (!content.trim()) return ''
|
|
692
|
-
return options.emDelimiter + content + options.emDelimiter
|
|
693
|
-
}
|
|
694
|
-
};
|
|
695
|
-
|
|
696
|
-
rules.strong = {
|
|
697
|
-
filter: ['strong', 'b'],
|
|
698
|
-
|
|
699
|
-
replacement: function (content, node, options) {
|
|
700
|
-
if (!content.trim()) return ''
|
|
701
|
-
return options.strongDelimiter + content + options.strongDelimiter
|
|
702
|
-
}
|
|
703
|
-
};
|
|
704
|
-
|
|
705
|
-
rules.code = {
|
|
706
|
-
filter: function (node) {
|
|
707
|
-
var hasSiblings = node.previousSibling || node.nextSibling;
|
|
708
|
-
var isCodeBlock = node.parentNode.nodeName === 'PRE' && !hasSiblings;
|
|
709
|
-
|
|
710
|
-
return node.nodeName === 'CODE' && !isCodeBlock
|
|
711
|
-
},
|
|
712
|
-
|
|
713
|
-
replacement: function (content) {
|
|
714
|
-
if (!content) return ''
|
|
715
|
-
content = content.replace(/\r?\n|\r/g, ' ');
|
|
716
|
-
|
|
717
|
-
var extraSpace = /^`|^ .*?[^ ].* $|`$/.test(content) ? ' ' : '';
|
|
718
|
-
var delimiter = '`';
|
|
719
|
-
var matches = content.match(/`+/gm) || [];
|
|
720
|
-
while (matches.indexOf(delimiter) !== -1) delimiter = delimiter + '`';
|
|
721
|
-
|
|
722
|
-
return delimiter + extraSpace + content + extraSpace + delimiter
|
|
723
|
-
}
|
|
724
|
-
};
|
|
725
|
-
|
|
726
|
-
rules.image = {
|
|
727
|
-
filter: 'img',
|
|
728
|
-
|
|
729
|
-
replacement: function (content, node) {
|
|
730
|
-
var alt = cleanAttribute(node.getAttribute('alt'));
|
|
731
|
-
var src = node.getAttribute('src') || '';
|
|
732
|
-
var title = cleanAttribute(node.getAttribute('title'));
|
|
733
|
-
var titlePart = title ? ' "' + title + '"' : '';
|
|
734
|
-
return src ? '![' + alt + ']' + '(' + src + titlePart + ')' : ''
|
|
735
|
-
}
|
|
736
|
-
};
|
|
737
|
-
|
|
738
|
-
function cleanAttribute (attribute) {
|
|
739
|
-
return attribute ? attribute.replace(/(\n+\s*)+/g, '\n') : ''
|
|
740
|
-
}
|
|
741
|
-
|
|
742
|
-
/**
|
|
743
|
-
* Manages a collection of rules used to convert HTML to Markdown
|
|
744
|
-
*/
|
|
745
|
-
|
|
746
|
-
function Rules (options) {
|
|
747
|
-
this.options = options;
|
|
748
|
-
this._keep = [];
|
|
749
|
-
this._remove = [];
|
|
750
|
-
|
|
751
|
-
this.blankRule = {
|
|
752
|
-
replacement: options.blankReplacement
|
|
753
|
-
};
|
|
754
|
-
|
|
755
|
-
this.keepReplacement = options.keepReplacement;
|
|
756
|
-
|
|
757
|
-
this.defaultRule = {
|
|
758
|
-
replacement: options.defaultReplacement
|
|
759
|
-
};
|
|
760
|
-
|
|
761
|
-
this.array = [];
|
|
762
|
-
for (var key in options.rules) this.array.push(options.rules[key]);
|
|
763
|
-
}
|
|
764
|
-
|
|
765
|
-
Rules.prototype = {
|
|
766
|
-
add: function (key, rule) {
|
|
767
|
-
this.array.unshift(rule);
|
|
768
|
-
},
|
|
769
|
-
|
|
770
|
-
keep: function (filter) {
|
|
771
|
-
this._keep.unshift({
|
|
772
|
-
filter: filter,
|
|
773
|
-
replacement: this.keepReplacement
|
|
774
|
-
});
|
|
775
|
-
},
|
|
776
|
-
|
|
777
|
-
remove: function (filter) {
|
|
778
|
-
this._remove.unshift({
|
|
779
|
-
filter: filter,
|
|
780
|
-
replacement: function () {
|
|
781
|
-
return ''
|
|
782
|
-
}
|
|
783
|
-
});
|
|
784
|
-
},
|
|
785
|
-
|
|
786
|
-
forNode: function (node) {
|
|
787
|
-
if (node.isBlank) return this.blankRule
|
|
788
|
-
var rule;
|
|
789
|
-
|
|
790
|
-
if ((rule = findRule(this.array, node, this.options))) return rule
|
|
791
|
-
if ((rule = findRule(this._keep, node, this.options))) return rule
|
|
792
|
-
if ((rule = findRule(this._remove, node, this.options))) return rule
|
|
793
|
-
|
|
794
|
-
return this.defaultRule
|
|
795
|
-
},
|
|
796
|
-
|
|
797
|
-
forEach: function (fn) {
|
|
798
|
-
for (var i = 0; i < this.array.length; i++) fn(this.array[i], i);
|
|
799
|
-
}
|
|
800
|
-
};
|
|
801
|
-
|
|
802
|
-
function findRule (rules, node, options) {
|
|
803
|
-
for (var i = 0; i < rules.length; i++) {
|
|
804
|
-
var rule = rules[i];
|
|
805
|
-
if (filterValue(rule, node, options)) return rule
|
|
806
|
-
}
|
|
807
|
-
return void 0
|
|
808
|
-
}
|
|
809
|
-
|
|
810
|
-
function filterValue (rule, node, options) {
|
|
811
|
-
var filter = rule.filter;
|
|
812
|
-
if (typeof filter === 'string') {
|
|
813
|
-
if (filter === node.nodeName.toLowerCase()) return true
|
|
814
|
-
} else if (Array.isArray(filter)) {
|
|
815
|
-
if (filter.indexOf(node.nodeName.toLowerCase()) > -1) return true
|
|
816
|
-
} else if (typeof filter === 'function') {
|
|
817
|
-
if (filter.call(rule, node, options)) return true
|
|
818
|
-
} else {
|
|
819
|
-
throw new TypeError('`filter` needs to be a string, array, or function')
|
|
820
|
-
}
|
|
821
|
-
}
|
|
822
|
-
|
|
823
|
-
/**
|
|
824
|
-
* The collapseWhitespace function is adapted from collapse-whitespace
|
|
825
|
-
* by Luc Thevenard.
|
|
826
|
-
*
|
|
827
|
-
* The MIT License (MIT)
|
|
828
|
-
*
|
|
829
|
-
* Copyright (c) 2014 Luc Thevenard <lucthevenard@gmail.com>
|
|
830
|
-
*
|
|
831
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
832
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
833
|
-
* in the Software without restriction, including without limitation the rights
|
|
834
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
835
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
836
|
-
* furnished to do so, subject to the following conditions:
|
|
837
|
-
*
|
|
838
|
-
* The above copyright notice and this permission notice shall be included in
|
|
839
|
-
* all copies or substantial portions of the Software.
|
|
840
|
-
*
|
|
841
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
842
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
843
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
844
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
845
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
846
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
847
|
-
* THE SOFTWARE.
|
|
848
|
-
*/
|
|
849
|
-
|
|
850
|
-
/**
|
|
851
|
-
* collapseWhitespace(options) removes extraneous whitespace from an the given element.
|
|
852
|
-
*
|
|
853
|
-
* @param {Object} options
|
|
854
|
-
*/
|
|
855
|
-
function collapseWhitespace (options) {
|
|
856
|
-
var element = options.element;
|
|
857
|
-
var isBlock = options.isBlock;
|
|
858
|
-
var isVoid = options.isVoid;
|
|
859
|
-
var isPre = options.isPre || function (node) {
|
|
860
|
-
return node.nodeName === 'PRE'
|
|
861
|
-
};
|
|
862
|
-
|
|
863
|
-
if (!element.firstChild || isPre(element)) return
|
|
864
|
-
|
|
865
|
-
var prevText = null;
|
|
866
|
-
var keepLeadingWs = false;
|
|
867
|
-
|
|
868
|
-
var prev = null;
|
|
869
|
-
var node = next(prev, element, isPre);
|
|
870
|
-
|
|
871
|
-
while (node !== element) {
|
|
872
|
-
if (node.nodeType === 3 || node.nodeType === 4) { // Node.TEXT_NODE or Node.CDATA_SECTION_NODE
|
|
873
|
-
var text = node.data.replace(/[ \r\n\t]+/g, ' ');
|
|
874
|
-
|
|
875
|
-
if ((!prevText || / $/.test(prevText.data)) &&
|
|
876
|
-
!keepLeadingWs && text[0] === ' ') {
|
|
877
|
-
text = text.substr(1);
|
|
878
|
-
}
|
|
879
|
-
|
|
880
|
-
// `text` might be empty at this point.
|
|
881
|
-
if (!text) {
|
|
882
|
-
node = remove(node);
|
|
883
|
-
continue
|
|
884
|
-
}
|
|
885
|
-
|
|
886
|
-
node.data = text;
|
|
887
|
-
|
|
888
|
-
prevText = node;
|
|
889
|
-
} else if (node.nodeType === 1) { // Node.ELEMENT_NODE
|
|
890
|
-
if (isBlock(node) || node.nodeName === 'BR') {
|
|
891
|
-
if (prevText) {
|
|
892
|
-
prevText.data = prevText.data.replace(/ $/, '');
|
|
893
|
-
}
|
|
894
|
-
|
|
895
|
-
prevText = null;
|
|
896
|
-
keepLeadingWs = false;
|
|
897
|
-
} else if (isVoid(node) || isPre(node)) {
|
|
898
|
-
// Avoid trimming space around non-block, non-BR void elements and inline PRE.
|
|
899
|
-
prevText = null;
|
|
900
|
-
keepLeadingWs = true;
|
|
901
|
-
} else if (prevText) {
|
|
902
|
-
// Drop protection if set previously.
|
|
903
|
-
keepLeadingWs = false;
|
|
904
|
-
}
|
|
905
|
-
} else {
|
|
906
|
-
node = remove(node);
|
|
907
|
-
continue
|
|
908
|
-
}
|
|
909
|
-
|
|
910
|
-
var nextNode = next(prev, node, isPre);
|
|
911
|
-
prev = node;
|
|
912
|
-
node = nextNode;
|
|
913
|
-
}
|
|
914
|
-
|
|
915
|
-
if (prevText) {
|
|
916
|
-
prevText.data = prevText.data.replace(/ $/, '');
|
|
917
|
-
if (!prevText.data) {
|
|
918
|
-
remove(prevText);
|
|
919
|
-
}
|
|
920
|
-
}
|
|
921
|
-
}
|
|
922
|
-
|
|
923
|
-
/**
|
|
924
|
-
* remove(node) removes the given node from the DOM and returns the
|
|
925
|
-
* next node in the sequence.
|
|
926
|
-
*
|
|
927
|
-
* @param {Node} node
|
|
928
|
-
* @return {Node} node
|
|
929
|
-
*/
|
|
930
|
-
function remove (node) {
|
|
931
|
-
var next = node.nextSibling || node.parentNode;
|
|
932
|
-
|
|
933
|
-
node.parentNode.removeChild(node);
|
|
934
|
-
|
|
935
|
-
return next
|
|
936
|
-
}
|
|
937
|
-
|
|
938
|
-
/**
|
|
939
|
-
* next(prev, current, isPre) returns the next node in the sequence, given the
|
|
940
|
-
* current and previous nodes.
|
|
941
|
-
*
|
|
942
|
-
* @param {Node} prev
|
|
943
|
-
* @param {Node} current
|
|
944
|
-
* @param {Function} isPre
|
|
945
|
-
* @return {Node}
|
|
946
|
-
*/
|
|
947
|
-
function next (prev, current, isPre) {
|
|
948
|
-
if ((prev && prev.parentNode === current) || isPre(current)) {
|
|
949
|
-
return current.nextSibling || current.parentNode
|
|
950
|
-
}
|
|
951
|
-
|
|
952
|
-
return current.firstChild || current.nextSibling || current.parentNode
|
|
953
|
-
}
|
|
954
|
-
|
|
955
|
-
/*
|
|
956
|
-
* Set up window for Node.js
|
|
957
|
-
*/
|
|
958
|
-
|
|
959
|
-
var root = (typeof window !== 'undefined' ? window : {});
|
|
960
|
-
|
|
961
|
-
/*
|
|
962
|
-
* Parsing HTML strings
|
|
963
|
-
*/
|
|
964
|
-
|
|
965
|
-
function canParseHTMLNatively () {
|
|
966
|
-
var Parser = root.DOMParser;
|
|
967
|
-
var canParse = false;
|
|
968
|
-
|
|
969
|
-
// Adapted from https://gist.github.com/1129031
|
|
970
|
-
// Firefox/Opera/IE throw errors on unsupported types
|
|
971
|
-
try {
|
|
972
|
-
// WebKit returns null on unsupported types
|
|
973
|
-
if (new Parser().parseFromString('', 'text/html')) {
|
|
974
|
-
canParse = true;
|
|
975
|
-
}
|
|
976
|
-
} catch (e) {}
|
|
977
|
-
|
|
978
|
-
return canParse
|
|
979
|
-
}
|
|
980
|
-
|
|
981
|
-
function createHTMLParser () {
|
|
982
|
-
var Parser = function () {};
|
|
983
|
-
|
|
984
|
-
{
|
|
985
|
-
if (shouldUseActiveX()) {
|
|
986
|
-
Parser.prototype.parseFromString = function (string) {
|
|
987
|
-
var doc = new window.ActiveXObject('htmlfile');
|
|
988
|
-
doc.designMode = 'on'; // disable on-page scripts
|
|
989
|
-
doc.open();
|
|
990
|
-
doc.write(string);
|
|
991
|
-
doc.close();
|
|
992
|
-
return doc
|
|
993
|
-
};
|
|
994
|
-
} else {
|
|
995
|
-
Parser.prototype.parseFromString = function (string) {
|
|
996
|
-
var doc = document.implementation.createHTMLDocument('');
|
|
997
|
-
doc.open();
|
|
998
|
-
doc.write(string);
|
|
999
|
-
doc.close();
|
|
1000
|
-
return doc
|
|
1001
|
-
};
|
|
1002
|
-
}
|
|
1003
|
-
}
|
|
1004
|
-
return Parser
|
|
1005
|
-
}
|
|
1006
|
-
|
|
1007
|
-
function shouldUseActiveX () {
|
|
1008
|
-
var useActiveX = false;
|
|
1009
|
-
try {
|
|
1010
|
-
document.implementation.createHTMLDocument('').open();
|
|
1011
|
-
} catch (e) {
|
|
1012
|
-
if (window.ActiveXObject) useActiveX = true;
|
|
1013
|
-
}
|
|
1014
|
-
return useActiveX
|
|
1015
|
-
}
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
function RootNode (input, options) {
|
|
1019
|
-
var root;
|
|
1020
|
-
if (typeof input === 'string') {
|
|
1021
|
-
var doc = htmlParser().parseFromString(
|
|
1022
|
-
// DOM parsers arrange elements in the <head> and <body>.
|
|
1023
|
-
// Wrapping in a custom element ensures elements are reliably arranged in
|
|
1024
|
-
// a single element.
|
|
1025
|
-
'<x-turndown id="turndown-root">' + input + '</x-turndown>',
|
|
1026
|
-
'text/html'
|
|
1027
|
-
);
|
|
1028
|
-
root = doc.getElementById('turndown-root');
|
|
1029
|
-
} else {
|
|
1030
|
-
root = input.cloneNode(true);
|
|
1031
|
-
}
|
|
1032
|
-
collapseWhitespace({
|
|
1033
|
-
element: root,
|
|
1034
|
-
isBlock: isBlock,
|
|
1035
|
-
isVoid: isVoid,
|
|
1036
|
-
isPre: options.preformattedCode ? isPreOrCode : null
|
|
1037
|
-
});
|
|
1038
|
-
|
|
1039
|
-
return root
|
|
1040
|
-
}
|
|
1041
|
-
|
|
1042
|
-
var _htmlParser;
|
|
1043
|
-
function htmlParser () {
|
|
1044
|
-
_htmlParser = _htmlParser || new HTMLParser();
|
|
1045
|
-
return _htmlParser
|
|
1046
|
-
}
|
|
1047
|
-
|
|
1048
|
-
function isPreOrCode (node) {
|
|
1049
|
-
return node.nodeName === 'PRE' || node.nodeName === 'CODE'
|
|
1050
|
-
}
|
|
1051
|
-
|
|
1052
|
-
function Node (node, options) {
|
|
1053
|
-
node.isBlock = isBlock(node);
|
|
1054
|
-
node.isCode = node.nodeName === 'CODE' || node.parentNode.isCode;
|
|
1055
|
-
node.isBlank = isBlank(node);
|
|
1056
|
-
node.flankingWhitespace = flankingWhitespace(node, options);
|
|
1057
|
-
return node
|
|
1058
|
-
}
|
|
1059
|
-
|
|
1060
|
-
function isBlank (node) {
|
|
1061
|
-
return (
|
|
1062
|
-
!isVoid(node) &&
|
|
1063
|
-
!isMeaningfulWhenBlank(node) &&
|
|
1064
|
-
/^\s*$/i.test(node.textContent) &&
|
|
1065
|
-
!hasVoid(node) &&
|
|
1066
|
-
!hasMeaningfulWhenBlank(node)
|
|
1067
|
-
)
|
|
1068
|
-
}
|
|
1069
|
-
|
|
1070
|
-
function flankingWhitespace (node, options) {
|
|
1071
|
-
if (node.isBlock || (options.preformattedCode && node.isCode)) {
|
|
1072
|
-
return { leading: '', trailing: '' }
|
|
1073
|
-
}
|
|
1074
|
-
|
|
1075
|
-
var edges = edgeWhitespace(node.textContent);
|
|
1076
|
-
|
|
1077
|
-
// abandon leading ASCII WS if left-flanked by ASCII WS
|
|
1078
|
-
if (edges.leadingAscii && isFlankedByWhitespace('left', node, options)) {
|
|
1079
|
-
edges.leading = edges.leadingNonAscii;
|
|
1080
|
-
}
|
|
1081
|
-
|
|
1082
|
-
// abandon trailing ASCII WS if right-flanked by ASCII WS
|
|
1083
|
-
if (edges.trailingAscii && isFlankedByWhitespace('right', node, options)) {
|
|
1084
|
-
edges.trailing = edges.trailingNonAscii;
|
|
1085
|
-
}
|
|
1086
|
-
|
|
1087
|
-
return { leading: edges.leading, trailing: edges.trailing }
|
|
1088
|
-
}
|
|
1089
|
-
|
|
1090
|
-
function edgeWhitespace (string) {
|
|
1091
|
-
var m = string.match(/^(([ \t\r\n]*)(\s*))[\s\S]*?((\s*?)([ \t\r\n]*))$/);
|
|
1092
|
-
return {
|
|
1093
|
-
leading: m[1], // whole string for whitespace-only strings
|
|
1094
|
-
leadingAscii: m[2],
|
|
1095
|
-
leadingNonAscii: m[3],
|
|
1096
|
-
trailing: m[4], // empty for whitespace-only strings
|
|
1097
|
-
trailingNonAscii: m[5],
|
|
1098
|
-
trailingAscii: m[6]
|
|
1099
|
-
}
|
|
1100
|
-
}
|
|
1101
|
-
|
|
1102
|
-
function isFlankedByWhitespace (side, node, options) {
|
|
1103
|
-
var sibling;
|
|
1104
|
-
var regExp;
|
|
1105
|
-
var isFlanked;
|
|
1106
|
-
|
|
1107
|
-
if (side === 'left') {
|
|
1108
|
-
sibling = node.previousSibling;
|
|
1109
|
-
regExp = / $/;
|
|
1110
|
-
} else {
|
|
1111
|
-
sibling = node.nextSibling;
|
|
1112
|
-
regExp = /^ /;
|
|
1113
|
-
}
|
|
1114
|
-
|
|
1115
|
-
if (sibling) {
|
|
1116
|
-
if (sibling.nodeType === 3) {
|
|
1117
|
-
isFlanked = regExp.test(sibling.nodeValue);
|
|
1118
|
-
} else if (options.preformattedCode && sibling.nodeName === 'CODE') {
|
|
1119
|
-
isFlanked = false;
|
|
1120
|
-
} else if (sibling.nodeType === 1 && !isBlock(sibling)) {
|
|
1121
|
-
isFlanked = regExp.test(sibling.textContent);
|
|
1122
|
-
}
|
|
1123
|
-
}
|
|
1124
|
-
return isFlanked
|
|
1125
|
-
}
|
|
1126
|
-
|
|
1127
|
-
var reduce = Array.prototype.reduce;
|
|
1128
|
-
var escapes = [
|
|
1129
|
-
[/\\/g, '\\\\'],
|
|
1130
|
-
[/\*/g, '\\*'],
|
|
1131
|
-
[/^-/g, '\\-'],
|
|
1132
|
-
[/^\+ /g, '\\+ '],
|
|
1133
|
-
[/^(=+)/g, '\\$1'],
|
|
1134
|
-
[/^(#{1,6}) /g, '\\$1 '],
|
|
1135
|
-
[/`/g, '\\`'],
|
|
1136
|
-
[/^~~~/g, '\\~~~'],
|
|
1137
|
-
[/\[/g, '\\['],
|
|
1138
|
-
[/\]/g, '\\]'],
|
|
1139
|
-
[/^>/g, '\\>'],
|
|
1140
|
-
[/_/g, '\\_'],
|
|
1141
|
-
[/^(\d+)\. /g, '$1\\. ']
|
|
1142
|
-
];
|
|
1143
|
-
|
|
1144
|
-
function TurndownService (options) {
|
|
1145
|
-
if (!(this instanceof TurndownService)) return new TurndownService(options)
|
|
1146
|
-
|
|
1147
|
-
var defaults = {
|
|
1148
|
-
rules: rules,
|
|
1149
|
-
headingStyle: 'setext',
|
|
1150
|
-
hr: '* * *',
|
|
1151
|
-
bulletListMarker: '*',
|
|
1152
|
-
codeBlockStyle: 'indented',
|
|
1153
|
-
fence: '```',
|
|
1154
|
-
emDelimiter: '_',
|
|
1155
|
-
strongDelimiter: '**',
|
|
1156
|
-
linkStyle: 'inlined',
|
|
1157
|
-
linkReferenceStyle: 'full',
|
|
1158
|
-
br: ' ',
|
|
1159
|
-
preformattedCode: false,
|
|
1160
|
-
blankReplacement: function (content, node) {
|
|
1161
|
-
return node.isBlock ? '\n\n' : ''
|
|
1162
|
-
},
|
|
1163
|
-
keepReplacement: function (content, node) {
|
|
1164
|
-
return node.isBlock ? '\n\n' + node.outerHTML + '\n\n' : node.outerHTML
|
|
1165
|
-
},
|
|
1166
|
-
defaultReplacement: function (content, node) {
|
|
1167
|
-
return node.isBlock ? '\n\n' + content + '\n\n' : content
|
|
1168
|
-
}
|
|
1169
|
-
};
|
|
1170
|
-
this.options = extend({}, defaults, options);
|
|
1171
|
-
this.rules = new Rules(this.options);
|
|
1172
|
-
}
|
|
1173
|
-
|
|
1174
|
-
TurndownService.prototype = {
|
|
1175
|
-
/**
|
|
1176
|
-
* The entry point for converting a string or DOM node to Markdown
|
|
1177
|
-
* @public
|
|
1178
|
-
* @param {String|HTMLElement} input The string or DOM node to convert
|
|
1179
|
-
* @returns A Markdown representation of the input
|
|
1180
|
-
* @type String
|
|
1181
|
-
*/
|
|
1182
|
-
|
|
1183
|
-
turndown: function (input) {
|
|
1184
|
-
if (!canConvert(input)) {
|
|
1185
|
-
throw new TypeError(
|
|
1186
|
-
input + ' is not a string, or an element/document/fragment node.'
|
|
1187
|
-
)
|
|
1188
|
-
}
|
|
1189
|
-
|
|
1190
|
-
if (input === '') return ''
|
|
1191
|
-
|
|
1192
|
-
var output = process.call(this, new RootNode(input, this.options));
|
|
1193
|
-
return postProcess.call(this, output)
|
|
1194
|
-
},
|
|
1195
|
-
|
|
1196
|
-
/**
|
|
1197
|
-
* Add one or more plugins
|
|
1198
|
-
* @public
|
|
1199
|
-
* @param {Function|Array} plugin The plugin or array of plugins to add
|
|
1200
|
-
* @returns The Turndown instance for chaining
|
|
1201
|
-
* @type Object
|
|
1202
|
-
*/
|
|
1203
|
-
|
|
1204
|
-
use: function (plugin) {
|
|
1205
|
-
if (Array.isArray(plugin)) {
|
|
1206
|
-
for (var i = 0; i < plugin.length; i++) this.use(plugin[i]);
|
|
1207
|
-
} else if (typeof plugin === 'function') {
|
|
1208
|
-
plugin(this);
|
|
1209
|
-
} else {
|
|
1210
|
-
throw new TypeError('plugin must be a Function or an Array of Functions')
|
|
1211
|
-
}
|
|
1212
|
-
return this
|
|
1213
|
-
},
|
|
1214
|
-
|
|
1215
|
-
/**
|
|
1216
|
-
* Adds a rule
|
|
1217
|
-
* @public
|
|
1218
|
-
* @param {String} key The unique key of the rule
|
|
1219
|
-
* @param {Object} rule The rule
|
|
1220
|
-
* @returns The Turndown instance for chaining
|
|
1221
|
-
* @type Object
|
|
1222
|
-
*/
|
|
1223
|
-
|
|
1224
|
-
addRule: function (key, rule) {
|
|
1225
|
-
this.rules.add(key, rule);
|
|
1226
|
-
return this
|
|
1227
|
-
},
|
|
1228
|
-
|
|
1229
|
-
/**
|
|
1230
|
-
* Keep a node (as HTML) that matches the filter
|
|
1231
|
-
* @public
|
|
1232
|
-
* @param {String|Array|Function} filter The unique key of the rule
|
|
1233
|
-
* @returns The Turndown instance for chaining
|
|
1234
|
-
* @type Object
|
|
1235
|
-
*/
|
|
1236
|
-
|
|
1237
|
-
keep: function (filter) {
|
|
1238
|
-
this.rules.keep(filter);
|
|
1239
|
-
return this
|
|
1240
|
-
},
|
|
1241
|
-
|
|
1242
|
-
/**
|
|
1243
|
-
* Remove a node that matches the filter
|
|
1244
|
-
* @public
|
|
1245
|
-
* @param {String|Array|Function} filter The unique key of the rule
|
|
1246
|
-
* @returns The Turndown instance for chaining
|
|
1247
|
-
* @type Object
|
|
1248
|
-
*/
|
|
1249
|
-
|
|
1250
|
-
remove: function (filter) {
|
|
1251
|
-
this.rules.remove(filter);
|
|
1252
|
-
return this
|
|
1253
|
-
},
|
|
1254
|
-
|
|
1255
|
-
/**
|
|
1256
|
-
* Escapes Markdown syntax
|
|
1257
|
-
* @public
|
|
1258
|
-
* @param {String} string The string to escape
|
|
1259
|
-
* @returns A string with Markdown syntax escaped
|
|
1260
|
-
* @type String
|
|
1261
|
-
*/
|
|
1262
|
-
|
|
1263
|
-
escape: function (string) {
|
|
1264
|
-
return escapes.reduce(function (accumulator, escape) {
|
|
1265
|
-
return accumulator.replace(escape[0], escape[1])
|
|
1266
|
-
}, string)
|
|
1267
|
-
}
|
|
1268
|
-
};
|
|
1269
|
-
|
|
1270
|
-
/**
|
|
1271
|
-
* Reduces a DOM node down to its Markdown string equivalent
|
|
1272
|
-
* @private
|
|
1273
|
-
* @param {HTMLElement} parentNode The node to convert
|
|
1274
|
-
* @returns A Markdown representation of the node
|
|
1275
|
-
* @type String
|
|
1276
|
-
*/
|
|
1277
|
-
|
|
1278
|
-
function process (parentNode) {
|
|
1279
|
-
var self = this;
|
|
1280
|
-
return reduce.call(parentNode.childNodes, function (output, node) {
|
|
1281
|
-
node = new Node(node, self.options);
|
|
1282
|
-
|
|
1283
|
-
var replacement = '';
|
|
1284
|
-
if (node.nodeType === 3) {
|
|
1285
|
-
replacement = node.isCode ? node.nodeValue : self.escape(node.nodeValue);
|
|
1286
|
-
} else if (node.nodeType === 1) {
|
|
1287
|
-
replacement = replacementForNode.call(self, node);
|
|
1288
|
-
}
|
|
1289
|
-
|
|
1290
|
-
return join(output, replacement)
|
|
1291
|
-
}, '')
|
|
1292
|
-
}
|
|
1293
|
-
|
|
1294
|
-
/**
|
|
1295
|
-
* Appends strings as each rule requires and trims the output
|
|
1296
|
-
* @private
|
|
1297
|
-
* @param {String} output The conversion output
|
|
1298
|
-
* @returns A trimmed version of the ouput
|
|
1299
|
-
* @type String
|
|
1300
|
-
*/
|
|
1301
|
-
|
|
1302
|
-
function postProcess (output) {
|
|
1303
|
-
var self = this;
|
|
1304
|
-
this.rules.forEach(function (rule) {
|
|
1305
|
-
if (typeof rule.append === 'function') {
|
|
1306
|
-
output = join(output, rule.append(self.options));
|
|
1307
|
-
}
|
|
1308
|
-
});
|
|
1309
|
-
|
|
1310
|
-
return output.replace(/^[\t\r\n]+/, '').replace(/[\t\r\n\s]+$/, '')
|
|
1311
|
-
}
|
|
1312
|
-
|
|
1313
|
-
/**
|
|
1314
|
-
* Converts an element node to its Markdown equivalent
|
|
1315
|
-
* @private
|
|
1316
|
-
* @param {HTMLElement} node The node to convert
|
|
1317
|
-
* @returns A Markdown representation of the node
|
|
1318
|
-
* @type String
|
|
1319
|
-
*/
|
|
1320
|
-
|
|
1321
|
-
function replacementForNode (node) {
|
|
1322
|
-
var rule = this.rules.forNode(node);
|
|
1323
|
-
var content = process.call(this, node);
|
|
1324
|
-
var whitespace = node.flankingWhitespace;
|
|
1325
|
-
if (whitespace.leading || whitespace.trailing) content = content.trim();
|
|
1326
|
-
return (
|
|
1327
|
-
whitespace.leading +
|
|
1328
|
-
rule.replacement(content, node, this.options) +
|
|
1329
|
-
whitespace.trailing
|
|
1330
|
-
)
|
|
1331
|
-
}
|
|
1332
|
-
|
|
1333
|
-
/**
|
|
1334
|
-
* Joins replacement to the current output with appropriate number of new lines
|
|
1335
|
-
* @private
|
|
1336
|
-
* @param {String} output The current conversion output
|
|
1337
|
-
* @param {String} replacement The string to append to the output
|
|
1338
|
-
* @returns Joined output
|
|
1339
|
-
* @type String
|
|
1340
|
-
*/
|
|
1341
|
-
|
|
1342
|
-
function join (output, replacement) {
|
|
1343
|
-
var s1 = trimTrailingNewlines(output);
|
|
1344
|
-
var s2 = trimLeadingNewlines(replacement);
|
|
1345
|
-
var nls = Math.max(output.length - s1.length, replacement.length - s2.length);
|
|
1346
|
-
var separator = '\n\n'.substring(0, nls);
|
|
1347
|
-
|
|
1348
|
-
return s1 + separator + s2
|
|
1349
|
-
}
|
|
1350
|
-
|
|
1351
|
-
/**
|
|
1352
|
-
* Determines whether an input can be converted
|
|
1353
|
-
* @private
|
|
1354
|
-
* @param {String|HTMLElement} input Describe this parameter
|
|
1355
|
-
* @returns Describe what it returns
|
|
1356
|
-
* @type String|Object|Array|Boolean|Number
|
|
1357
|
-
*/
|
|
1358
|
-
|
|
1359
|
-
function canConvert (input) {
|
|
1360
|
-
return (
|
|
1361
|
-
input != null && (
|
|
1362
|
-
typeof input === 'string' ||
|
|
1363
|
-
(input.nodeType && (
|
|
1364
|
-
input.nodeType === 1 || input.nodeType === 9 || input.nodeType === 11
|
|
1365
|
-
))
|
|
1366
|
-
)
|
|
1367
|
-
)
|
|
1368
|
-
}
|
|
1369
|
-
|
|
1370
|
-
return TurndownService;
|
|
1371
|
-
|
|
1372
|
-
})));
|
|
1373
|
-
|
|
1374
|
-
}).call(this)}).call(this,require('_process'))
|
|
1375
|
-
},{"_process":1}],4:[function(require,module,exports){
|
|
1376
|
-
/*
|
|
1377
|
-
***** BEGIN LICENSE BLOCK *****
|
|
1378
|
-
|
|
1379
|
-
Copyright © 2021 Corporation for Digital Scholarship
|
|
1380
|
-
Vienna, Virginia, USA
|
|
1381
|
-
http://digitalscholar.org/
|
|
1382
|
-
|
|
1383
|
-
This file is part of Zotero.
|
|
1384
|
-
|
|
1385
|
-
Zotero is free software: you can redistribute it and/or modify
|
|
1386
|
-
it under the terms of the GNU Affero General Public License as published by
|
|
1387
|
-
the Free Software Foundation, either version 3 of the License, or
|
|
1388
|
-
(at your option) any later version.
|
|
1389
|
-
|
|
1390
|
-
Zotero is distributed in the hope that it will be useful,
|
|
1391
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
1392
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
1393
|
-
GNU Affero General Public License for more details.
|
|
1394
|
-
|
|
1395
|
-
You should have received a copy of the GNU Affero General Public License
|
|
1396
|
-
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
|
|
1397
|
-
|
|
1398
|
-
***** END LICENSE BLOCK *****
|
|
1399
|
-
*/
|
|
1400
|
-
|
|
1401
|
-
let TurndownService = require('turndown/lib/turndown.browser.umd');
|
|
1402
|
-
let turndownPluginGfm = require('turndown-plugin-gfm');
|
|
1403
|
-
|
|
1404
|
-
let turndownService = new TurndownService({
|
|
1405
|
-
headingStyle: 'atx',
|
|
1406
|
-
bulletListMarker: '-',
|
|
1407
|
-
emDelimiter: '*',
|
|
1408
|
-
codeBlockStyle: 'fenced'
|
|
1409
|
-
});
|
|
1410
|
-
|
|
1411
|
-
turndownService.use(turndownPluginGfm.gfm);
|
|
1412
|
-
|
|
1413
|
-
// https://github.com/mixmark-io/turndown#overriding-turndownserviceprototypeescape
|
|
1414
|
-
let escapes = [
|
|
1415
|
-
// [/\\/g, '\\\\'],
|
|
1416
|
-
[/\*/g, '\\*'],
|
|
1417
|
-
[/^-/g, '\\-'],
|
|
1418
|
-
[/^\+ /g, '\\+ '],
|
|
1419
|
-
[/^(=+)/g, '\\$1'],
|
|
1420
|
-
[/^(#{1,6}) /g, '\\$1 '],
|
|
1421
|
-
[/`/g, '\\`'],
|
|
1422
|
-
[/^~~~/g, '\\~~~'],
|
|
1423
|
-
// [/\[/g, '\\['],
|
|
1424
|
-
// [/\]/g, '\\]'],
|
|
1425
|
-
[/^>/g, '\\>'],
|
|
1426
|
-
// [/_/g, '\\_'],
|
|
1427
|
-
[/^(\d+)\. /g, '$1\\. '],
|
|
1428
|
-
// Custom corrections for the previous escapes
|
|
1429
|
-
// [/\\\[\\\[/g, '[['],
|
|
1430
|
-
// [/\\\]\\\]/g, ']]'],
|
|
1431
|
-
[/\\`\\`\\`/g, '```']
|
|
1432
|
-
];
|
|
1433
|
-
|
|
1434
|
-
TurndownService.prototype.escape = function (string) {
|
|
1435
|
-
return escapes.reduce(function (accumulator, escape) {
|
|
1436
|
-
return accumulator.replace(escape[0], escape[1])
|
|
1437
|
-
}, string);
|
|
1438
|
-
};
|
|
1439
|
-
|
|
1440
|
-
// https://github.com/mixmark-io/turndown/issues/291
|
|
1441
|
-
turndownService.addRule('listItem', {
|
|
1442
|
-
filter: 'li',
|
|
1443
|
-
replacement: function (content, node, options) {
|
|
1444
|
-
content = content
|
|
1445
|
-
.replace(/^\n+/, '') // remove leading newlines
|
|
1446
|
-
.replace(/\n+$/, '\n') // replace trailing newlines with just a single one
|
|
1447
|
-
.replace(/\n/gm, '\n '); // indent
|
|
1448
|
-
var prefix = options.bulletListMarker + ' ';
|
|
1449
|
-
var parent = node.parentNode;
|
|
1450
|
-
if (parent.nodeName === 'OL') {
|
|
1451
|
-
var start = parent.getAttribute('start');
|
|
1452
|
-
var index = Array.prototype.indexOf.call(parent.children, node);
|
|
1453
|
-
prefix = (start ? Number(start) + index : index + 1) + '. ';
|
|
1454
|
-
}
|
|
1455
|
-
return (
|
|
1456
|
-
prefix + content + (node.nextSibling && !/\n$/.test(content) ? '\n' : '')
|
|
1457
|
-
);
|
|
1458
|
-
}
|
|
1459
|
-
});
|
|
1460
|
-
|
|
1461
|
-
function convert(doc) {
|
|
1462
|
-
// Transform `style="text-decoration: line-through"` nodes to <s> (TinyMCE doesn't support <s>)
|
|
1463
|
-
doc.querySelectorAll('span').forEach(function (span) {
|
|
1464
|
-
if (span.style.textDecoration === 'line-through') {
|
|
1465
|
-
let s = doc.createElement('s');
|
|
1466
|
-
s.append(...span.childNodes);
|
|
1467
|
-
span.replaceWith(s);
|
|
1468
|
-
}
|
|
1469
|
-
});
|
|
1470
|
-
|
|
1471
|
-
// Turndown wants pre content inside additional code block
|
|
1472
|
-
doc.querySelectorAll('pre:not(.math)').forEach(function (pre) {
|
|
1473
|
-
let code = doc.createElement('code');
|
|
1474
|
-
code.append(...pre.childNodes);
|
|
1475
|
-
pre.append(code);
|
|
1476
|
-
});
|
|
1477
|
-
|
|
1478
|
-
doc.querySelectorAll('p').forEach((p) => {
|
|
1479
|
-
let style = p.getAttribute('style');
|
|
1480
|
-
if (style) {
|
|
1481
|
-
let match = style.match(/padding-(left|right): ([0-9]+)px/);
|
|
1482
|
-
if (match) {
|
|
1483
|
-
let px = parseInt(match[2]);
|
|
1484
|
-
if (px > 0 && px % 40 === 0) {
|
|
1485
|
-
let level = px / 40;
|
|
1486
|
-
let spaces = '';
|
|
1487
|
-
for (let i = 0; i < level; i++) {
|
|
1488
|
-
spaces += '\u00A0\u00A0\u00A0\u00A0';
|
|
1489
|
-
}
|
|
1490
|
-
p.insertBefore(doc.createTextNode(spaces), p.firstChild);
|
|
1491
|
-
p.querySelectorAll('br').forEach((br) => {
|
|
1492
|
-
br.parentNode.insertBefore(doc.createTextNode(spaces), br.nextSibling);
|
|
1493
|
-
});
|
|
1494
|
-
}
|
|
1495
|
-
}
|
|
1496
|
-
}
|
|
1497
|
-
});
|
|
1498
|
-
|
|
1499
|
-
// Insert a PDF link for highlight, underline and image annotation nodes
|
|
1500
|
-
doc.querySelectorAll('span[class="highlight"], span[class="underline"], img[data-annotation]').forEach(function (node) {
|
|
1501
|
-
try {
|
|
1502
|
-
var annotation = JSON.parse(decodeURIComponent(node.getAttribute('data-annotation')));
|
|
1503
|
-
}
|
|
1504
|
-
catch (e) {
|
|
1505
|
-
}
|
|
1506
|
-
|
|
1507
|
-
if (annotation) {
|
|
1508
|
-
// annotation.uri was used before note-editor v4
|
|
1509
|
-
let uri = annotation.attachmentURI || annotation.uri;
|
|
1510
|
-
let position = annotation.position;
|
|
1511
|
-
if (Zotero.getOption("includeAppLinks")
|
|
1512
|
-
&& typeof uri === 'string'
|
|
1513
|
-
&& typeof position === 'object') {
|
|
1514
|
-
let openURI;
|
|
1515
|
-
let uriParts = uri.split('/');
|
|
1516
|
-
let libraryType = uriParts[3];
|
|
1517
|
-
let key = uriParts[uriParts.length - 1];
|
|
1518
|
-
if (libraryType === 'users') {
|
|
1519
|
-
openURI = 'zotero://open-pdf/library/items/' + key;
|
|
1520
|
-
}
|
|
1521
|
-
// groups
|
|
1522
|
-
else {
|
|
1523
|
-
let groupID = uriParts[4];
|
|
1524
|
-
openURI = 'zotero://open-pdf/groups/' + groupID + '/items/' + key;
|
|
1525
|
-
}
|
|
1526
|
-
|
|
1527
|
-
let linkText;
|
|
1528
|
-
if (position.type === 'FragmentSelector') {
|
|
1529
|
-
openURI += '?cfi=' + encodeURIComponent(position.value);
|
|
1530
|
-
linkText = 'epub';
|
|
1531
|
-
}
|
|
1532
|
-
else if (position.type === 'CssSelector') {
|
|
1533
|
-
openURI += '?sel=' + encodeURIComponent(position.value);
|
|
1534
|
-
linkText = 'snapshot';
|
|
1535
|
-
}
|
|
1536
|
-
else {
|
|
1537
|
-
openURI += '?page=' + (position.pageIndex + 1);
|
|
1538
|
-
linkText = 'pdf';
|
|
1539
|
-
}
|
|
1540
|
-
if (annotation.annotationKey) {
|
|
1541
|
-
openURI += '&annotation=' + annotation.annotationKey;
|
|
1542
|
-
}
|
|
1543
|
-
|
|
1544
|
-
let a = doc.createElement('a');
|
|
1545
|
-
a.href = openURI;
|
|
1546
|
-
a.append(linkText);
|
|
1547
|
-
let fragment = doc.createDocumentFragment();
|
|
1548
|
-
fragment.append(' (', a, ') ');
|
|
1549
|
-
|
|
1550
|
-
let nextNode = node.nextElementSibling;
|
|
1551
|
-
if (nextNode && nextNode.classList.contains('citation')) {
|
|
1552
|
-
nextNode.parentNode.insertBefore(fragment, nextNode.nextSibling);
|
|
1553
|
-
}
|
|
1554
|
-
else {
|
|
1555
|
-
node.parentNode.insertBefore(fragment, node.nextSibling);
|
|
1556
|
-
}
|
|
1557
|
-
}
|
|
1558
|
-
}
|
|
1559
|
-
});
|
|
1560
|
-
|
|
1561
|
-
// For now just insert a placeholder for embedded note images
|
|
1562
|
-
doc.querySelectorAll('img[data-attachment-key]').forEach(function (img) {
|
|
1563
|
-
img.replaceWith(doc.createTextNode('[image]'));
|
|
1564
|
-
});
|
|
1565
|
-
|
|
1566
|
-
// Transform citations to links
|
|
1567
|
-
doc.querySelectorAll('span[class="citation"]').forEach(function (span) {
|
|
1568
|
-
try {
|
|
1569
|
-
var citation = JSON.parse(decodeURIComponent(span.getAttribute('data-citation')));
|
|
1570
|
-
}
|
|
1571
|
-
catch (e) {
|
|
1572
|
-
}
|
|
1573
|
-
|
|
1574
|
-
if (citation && citation.citationItems && citation.citationItems.length) {
|
|
1575
|
-
let uris = [];
|
|
1576
|
-
for (let citationItem of citation.citationItems) {
|
|
1577
|
-
let uri = citationItem.uris[0];
|
|
1578
|
-
if (typeof uri === 'string') {
|
|
1579
|
-
let uriParts = uri.split('/');
|
|
1580
|
-
let libraryType = uriParts[3];
|
|
1581
|
-
let key = uriParts[uriParts.length - 1];
|
|
1582
|
-
if (libraryType === 'users') {
|
|
1583
|
-
uris.push('zotero://select/library/items/' + key);
|
|
1584
|
-
}
|
|
1585
|
-
// groups
|
|
1586
|
-
else {
|
|
1587
|
-
let groupID = uriParts[4];
|
|
1588
|
-
uris.push('zotero://select/groups/' + groupID + '/items/' + key);
|
|
1589
|
-
}
|
|
1590
|
-
}
|
|
1591
|
-
}
|
|
1592
|
-
|
|
1593
|
-
let items = Array.from(span.querySelectorAll('.citation-item')).map(x => x.textContent);
|
|
1594
|
-
// Fallback to pre v5 note-editor schema that was serializing citations as plain text i.e.:
|
|
1595
|
-
// <span class="citation" data-citation="...">(Jang et al., 2005, p. 14; Kongsgaard et al., 2009, p. 790)</span>
|
|
1596
|
-
if (!items.length) {
|
|
1597
|
-
items = span.textContent.slice(1, -1).split('; ');
|
|
1598
|
-
}
|
|
1599
|
-
|
|
1600
|
-
span.innerHTML = '(' + items.map((item, i) => {
|
|
1601
|
-
return Zotero.getOption('includeAppLinks')
|
|
1602
|
-
? `<a href="${uris[i]}">${item}</a>`
|
|
1603
|
-
: item
|
|
1604
|
-
}).join('; ') + ')';
|
|
1605
|
-
}
|
|
1606
|
-
});
|
|
1607
|
-
|
|
1608
|
-
let text = turndownService.turndown(doc.body);
|
|
1609
|
-
|
|
1610
|
-
// Remove lines with just two spaces which happens for `<p><br>test</p>`
|
|
1611
|
-
text = text.split('\n').filter((line) => line !== ' ').join('\n');
|
|
1612
|
-
return text;
|
|
1613
|
-
}
|
|
1614
|
-
|
|
1615
|
-
bundle = { convert };
|
|
1616
|
-
|
|
1617
|
-
},{"turndown-plugin-gfm":2,"turndown/lib/turndown.browser.umd":3}]},{},[4]);
|
|
1618
|
-
|
|
1619
|
-
function doExport() {
|
|
1620
|
-
Zotero.setCharacterSet('utf-8');
|
|
1621
|
-
let item;
|
|
1622
|
-
let first = true;
|
|
1623
|
-
while (item = Zotero.nextItem()) {
|
|
1624
|
-
if (item.itemType === 'note' || item.itemType === 'attachment') {
|
|
1625
|
-
let doc = new DOMParser().parseFromString(item.note || '', 'text/html');
|
|
1626
|
-
// Skip empty notes
|
|
1627
|
-
// TODO: Take into account image-only notes
|
|
1628
|
-
if (!doc.body.textContent.trim()) {
|
|
1629
|
-
continue;
|
|
1630
|
-
}
|
|
1631
|
-
if (!first) {
|
|
1632
|
-
Zotero.write('\n\n---\n\n');
|
|
1633
|
-
}
|
|
1634
|
-
first = false;
|
|
1635
|
-
Zotero.write(bundle.convert(doc));
|
|
1636
|
-
}
|
|
1637
|
-
}
|
|
1638
|
-
}
|