snappy 3.1.1__cp38-cp38-win_amd64.whl → 3.2__cp38-cp38-win_amd64.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.
- snappy/CyOpenGL.cp38-win_amd64.pyd +0 -0
- snappy/SnapPy.cp38-win_amd64.pyd +0 -0
- snappy/SnapPyHP.cp38-win_amd64.pyd +0 -0
- snappy/__init__.py +299 -402
- snappy/app.py +70 -20
- snappy/browser.py +18 -17
- snappy/canonical.py +249 -0
- snappy/{verify/cusp_shapes.py → cusps/__init__.py} +8 -18
- snappy/cusps/cusp_area_matrix.py +101 -0
- snappy/{verify/cusp_areas.py → cusps/cusp_areas_from_matrix.py} +23 -39
- snappy/cusps/maximal_cusp_area_matrix.py +136 -0
- snappy/cusps/test.py +21 -0
- snappy/cusps/trig_cusp_area_matrix.py +63 -0
- snappy/database.py +10 -9
- snappy/decorated_isosig.py +337 -114
- snappy/dev/extended_ptolemy/complexVolumesClosed.py +40 -7
- snappy/dev/extended_ptolemy/extended.py +3 -3
- snappy/dev/extended_ptolemy/phc_wrapper.py +10 -10
- snappy/dev/vericlosed/oneVertexTruncatedComplex.py +1 -1
- snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
- snappy/doc/_images/m125_paper_plane.jpg +0 -0
- snappy/doc/_images/o9_00000_systole_paper_plane.jpg +0 -0
- snappy/doc/_images/o9_00000_systole_paper_plane_closer.jpg +0 -0
- snappy/doc/_sources/additional_classes.rst.txt +40 -40
- snappy/doc/_sources/bugs.rst.txt +14 -14
- snappy/doc/_sources/censuses.rst.txt +51 -51
- snappy/doc/_sources/credits.rst.txt +75 -75
- snappy/doc/_sources/development.rst.txt +259 -239
- snappy/doc/_sources/index.rst.txt +182 -115
- snappy/doc/_sources/installing.rst.txt +247 -264
- snappy/doc/_sources/manifold.rst.txt +6 -6
- snappy/doc/_sources/manifoldhp.rst.txt +46 -46
- snappy/doc/_sources/news.rst.txt +355 -283
- snappy/doc/_sources/other.rst.txt +25 -25
- snappy/doc/_sources/platonic_census.rst.txt +20 -20
- snappy/doc/_sources/plink.rst.txt +102 -102
- snappy/doc/_sources/ptolemy.rst.txt +66 -66
- snappy/doc/_sources/ptolemy_classes.rst.txt +42 -42
- snappy/doc/_sources/ptolemy_examples1.rst.txt +298 -297
- snappy/doc/_sources/ptolemy_examples2.rst.txt +363 -363
- snappy/doc/_sources/ptolemy_examples3.rst.txt +301 -301
- snappy/doc/_sources/ptolemy_examples4.rst.txt +61 -61
- snappy/doc/_sources/ptolemy_prelim.rst.txt +105 -105
- snappy/doc/_sources/screenshots.rst.txt +21 -21
- snappy/doc/_sources/snap.rst.txt +87 -87
- snappy/doc/_sources/snappy.rst.txt +28 -28
- snappy/doc/_sources/spherogram.rst.txt +103 -103
- snappy/doc/_sources/todo.rst.txt +47 -47
- snappy/doc/_sources/triangulation.rst.txt +11 -11
- snappy/doc/_sources/tutorial.rst.txt +49 -49
- snappy/doc/_sources/verify.rst.txt +210 -150
- snappy/doc/_sources/verify_internals.rst.txt +79 -90
- snappy/doc/_static/basic.css +924 -902
- snappy/doc/_static/css/badge_only.css +1 -1
- snappy/doc/_static/css/theme.css +1 -1
- snappy/doc/_static/doctools.js +1 -1
- snappy/doc/_static/documentation_options.js +12 -13
- snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- snappy/doc/_static/js/versions.js +228 -0
- snappy/doc/_static/language_data.js +199 -199
- snappy/doc/_static/pygments.css +74 -73
- snappy/doc/_static/searchtools.js +125 -71
- snappy/doc/_static/snappy_furo.css +33 -33
- snappy/doc/_static/snappy_sphinx_rtd_theme.css +42 -42
- snappy/doc/_static/sphinx_highlight.js +13 -3
- snappy/doc/additional_classes.html +1499 -1330
- snappy/doc/bugs.html +131 -134
- snappy/doc/censuses.html +426 -445
- snappy/doc/credits.html +180 -183
- snappy/doc/development.html +383 -363
- snappy/doc/genindex.html +1330 -1409
- snappy/doc/index.html +261 -206
- snappy/doc/installing.html +345 -363
- snappy/doc/manifold.html +3451 -2839
- snappy/doc/manifoldhp.html +179 -182
- snappy/doc/news.html +387 -329
- snappy/doc/objects.inv +0 -0
- snappy/doc/other.html +160 -162
- snappy/doc/platonic_census.html +374 -377
- snappy/doc/plink.html +209 -212
- snappy/doc/ptolemy.html +253 -255
- snappy/doc/ptolemy_classes.html +1143 -1146
- snappy/doc/ptolemy_examples1.html +408 -410
- snappy/doc/ptolemy_examples2.html +470 -473
- snappy/doc/ptolemy_examples3.html +413 -416
- snappy/doc/ptolemy_examples4.html +194 -197
- snappy/doc/ptolemy_prelim.html +247 -250
- snappy/doc/py-modindex.html +164 -167
- snappy/doc/screenshots.html +140 -142
- snappy/doc/search.html +134 -137
- snappy/doc/searchindex.js +1 -1
- snappy/doc/snap.html +201 -204
- snappy/doc/snappy.html +180 -182
- snappy/doc/spherogram.html +1210 -1213
- snappy/doc/todo.html +165 -168
- snappy/doc/triangulation.html +1583 -1474
- snappy/doc/tutorial.html +158 -161
- snappy/doc/verify.html +329 -275
- snappy/doc/verify_internals.html +1234 -1691
- snappy/drilling/__init__.py +153 -235
- snappy/drilling/barycentric.py +103 -0
- snappy/drilling/constants.py +0 -2
- snappy/drilling/crush.py +56 -130
- snappy/drilling/cusps.py +12 -6
- snappy/drilling/debug.py +2 -1
- snappy/drilling/exceptions.py +7 -40
- snappy/drilling/moves.py +302 -243
- snappy/drilling/perturb.py +63 -37
- snappy/drilling/shorten.py +36 -0
- snappy/drilling/subdivide.py +0 -5
- snappy/drilling/test.py +23 -0
- snappy/drilling/test_cases.py +126 -0
- snappy/drilling/tracing.py +9 -37
- snappy/exceptions.py +18 -5
- snappy/exterior_to_link/barycentric_geometry.py +2 -4
- snappy/exterior_to_link/main.py +8 -7
- snappy/exterior_to_link/mcomplex_with_link.py +2 -2
- snappy/exterior_to_link/rational_linear_algebra.py +1 -1
- snappy/exterior_to_link/rational_linear_algebra_wrapped.py +1 -1
- snappy/exterior_to_link/test.py +21 -33
- snappy/geometric_structure/__init__.py +212 -0
- snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
- snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +697 -0
- snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
- snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
- snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
- snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
- snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -0
- snappy/geometric_structure/geodesic/__init__.py +0 -0
- snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
- snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
- snappy/geometric_structure/geodesic/canonical_keys.py +52 -0
- snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
- snappy/geometric_structure/geodesic/constants.py +6 -0
- snappy/geometric_structure/geodesic/exceptions.py +22 -0
- snappy/{drilling → geometric_structure/geodesic}/fixed_points.py +34 -9
- snappy/{drilling/geodesic_info.py → geometric_structure/geodesic/geodesic_start_point_info.py} +139 -180
- snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
- snappy/geometric_structure/geodesic/line.py +30 -0
- snappy/geometric_structure/geodesic/multiplicity.py +127 -0
- snappy/geometric_structure/geodesic/tiles_for_geodesic.py +101 -0
- snappy/geometric_structure/test.py +22 -0
- snappy/gui.py +23 -13
- snappy/horoviewer.py +7 -7
- snappy/hyperboloid/__init__.py +96 -31
- snappy/hyperboloid/distances.py +245 -0
- snappy/hyperboloid/horoball.py +19 -0
- snappy/hyperboloid/line.py +35 -0
- snappy/hyperboloid/point.py +9 -0
- snappy/hyperboloid/triangle.py +29 -0
- snappy/isometry_signature.py +382 -0
- snappy/len_spec/__init__.py +596 -0
- snappy/len_spec/geodesic_info.py +110 -0
- snappy/len_spec/geodesic_key_info_dict.py +117 -0
- snappy/len_spec/geodesic_piece.py +143 -0
- snappy/len_spec/geometric_structure.py +182 -0
- snappy/len_spec/geometry.py +80 -0
- snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
- snappy/len_spec/spine.py +206 -0
- snappy/len_spec/test.py +24 -0
- snappy/len_spec/test_cases.py +69 -0
- snappy/len_spec/tile.py +275 -0
- snappy/len_spec/word.py +86 -0
- snappy/math_basics.py +39 -13
- snappy/matrix.py +52 -9
- snappy/number.py +12 -6
- snappy/numeric_output_checker.py +2 -3
- snappy/pari.py +8 -4
- snappy/phone_home.py +2 -1
- snappy/polyviewer.py +8 -8
- snappy/ptolemy/__init__.py +1 -1
- snappy/ptolemy/component.py +2 -2
- snappy/ptolemy/coordinates.py +25 -25
- snappy/ptolemy/findLoops.py +9 -9
- snappy/ptolemy/manifoldMethods.py +27 -29
- snappy/ptolemy/polynomial.py +50 -57
- snappy/ptolemy/processFileBase.py +60 -0
- snappy/ptolemy/ptolemyVariety.py +109 -41
- snappy/ptolemy/reginaWrapper.py +4 -4
- snappy/ptolemy/rur.py +1 -1
- snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +9 -9
- snappy/ptolemy/test.py +99 -54
- snappy/ptolemy/utilities.py +1 -1
- snappy/raytracing/__init__.py +64 -0
- snappy/raytracing/additional_horospheres.py +64 -0
- snappy/raytracing/additional_len_spec_choices.py +63 -0
- snappy/raytracing/cohomology_fractal.py +0 -3
- snappy/raytracing/eyeball.py +123 -0
- snappy/raytracing/finite_raytracing_data.py +17 -17
- snappy/raytracing/finite_viewer.py +15 -15
- snappy/raytracing/geodesic_tube_info.py +93 -63
- snappy/raytracing/geodesics.py +94 -64
- snappy/raytracing/geodesics_window.py +56 -34
- snappy/raytracing/gui_utilities.py +21 -6
- snappy/raytracing/hyperboloid_navigation.py +29 -4
- snappy/raytracing/hyperboloid_utilities.py +73 -73
- snappy/raytracing/ideal_raytracing_data.py +121 -91
- snappy/raytracing/inside_viewer.py +199 -66
- snappy/raytracing/pack.py +22 -0
- snappy/raytracing/raytracing_data.py +37 -25
- snappy/raytracing/raytracing_view.py +70 -65
- snappy/raytracing/shaders/Eye.png +0 -0
- snappy/raytracing/shaders/NonGeometric.png +0 -0
- snappy/raytracing/shaders/__init__.py +39 -3
- snappy/raytracing/shaders/fragment.glsl +451 -133
- snappy/raytracing/test.py +29 -0
- snappy/raytracing/tooltip.py +146 -0
- snappy/raytracing/upper_halfspace_utilities.py +42 -9
- snappy/sage_helper.py +67 -134
- snappy/settings.py +90 -77
- snappy/shell.py +2 -0
- snappy/snap/character_varieties.py +2 -2
- snappy/snap/find_field.py +4 -3
- snappy/snap/fundamental_polyhedron.py +2 -2
- snappy/snap/kernel_structures.py +5 -1
- snappy/snap/nsagetools.py +9 -8
- snappy/snap/peripheral/dual_cellulation.py +4 -3
- snappy/snap/peripheral/peripheral.py +2 -2
- snappy/snap/peripheral/surface.py +5 -5
- snappy/snap/peripheral/test.py +1 -1
- snappy/snap/polished_reps.py +8 -8
- snappy/snap/slice_obs_HKL.py +16 -14
- snappy/snap/t3mlite/arrow.py +3 -3
- snappy/snap/t3mlite/edge.py +3 -3
- snappy/snap/t3mlite/homology.py +2 -2
- snappy/snap/t3mlite/mcomplex.py +3 -3
- snappy/snap/t3mlite/simplex.py +12 -0
- snappy/snap/t3mlite/spun.py +18 -17
- snappy/snap/t3mlite/test_vs_regina.py +4 -4
- snappy/snap/test.py +37 -53
- snappy/snap/utilities.py +4 -5
- snappy/test.py +121 -138
- snappy/test_cases.py +263 -0
- snappy/testing.py +131 -0
- snappy/tiling/__init__.py +2 -0
- snappy/tiling/canonical_key_dict.py +59 -0
- snappy/tiling/dict_based_set.py +79 -0
- snappy/tiling/floor.py +49 -0
- snappy/tiling/hyperboloid_dict.py +54 -0
- snappy/tiling/iter_utils.py +78 -0
- snappy/tiling/lifted_tetrahedron.py +22 -0
- snappy/tiling/lifted_tetrahedron_set.py +54 -0
- snappy/tiling/real_hash_dict.py +164 -0
- snappy/tiling/test.py +23 -0
- snappy/tiling/tile.py +215 -0
- snappy/tiling/triangle.py +33 -0
- snappy/tkterminal.py +113 -84
- snappy/twister/main.py +1 -7
- snappy/twister/twister_core.cp38-win_amd64.pyd +0 -0
- snappy/upper_halfspace/__init__.py +78 -17
- snappy/verify/__init__.py +3 -7
- snappy/verify/{verifyCanonical.py → canonical.py} +78 -70
- snappy/verify/complex_volume/adjust_torsion.py +1 -2
- snappy/verify/complex_volume/closed.py +13 -13
- snappy/verify/complex_volume/cusped.py +6 -6
- snappy/verify/complex_volume/extended_bloch.py +5 -8
- snappy/verify/{cuspTranslations.py → cusp_translations.py} +1 -1
- snappy/verify/edge_equations.py +80 -0
- snappy/verify/exceptions.py +0 -55
- snappy/verify/{verifyHyperbolicity.py → hyperbolicity.py} +3 -3
- snappy/verify/interval_newton_shapes_engine.py +7 -5
- snappy/verify/interval_tree.py +5 -5
- snappy/verify/krawczyk_shapes_engine.py +17 -18
- snappy/verify/maximal_cusp_area_matrix/__init__.py +7 -74
- snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +3 -4
- snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +1 -1
- snappy/verify/{realAlgebra.py → real_algebra.py} +1 -1
- snappy/verify/shapes.py +5 -3
- snappy/verify/short_slopes.py +39 -41
- snappy/verify/{squareExtensions.py → square_extensions.py} +14 -11
- snappy/verify/test.py +57 -60
- snappy/verify/upper_halfspace/extended_matrix.py +1 -1
- snappy/verify/upper_halfspace/finite_point.py +3 -4
- snappy/verify/upper_halfspace/ideal_point.py +9 -9
- snappy/verify/volume.py +2 -2
- snappy/version.py +2 -2
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/METADATA +14 -10
- snappy-3.2.dist-info/RECORD +503 -0
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/top_level.txt +6 -1
- snappy/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/__pycache__/browser.cpython-38.pyc +0 -0
- snappy/__pycache__/cache.cpython-38.pyc +0 -0
- snappy/__pycache__/database.cpython-38.pyc +0 -0
- snappy/__pycache__/db_utilities.cpython-38.pyc +0 -0
- snappy/__pycache__/decorated_isosig.cpython-38.pyc +0 -0
- snappy/__pycache__/exceptions.cpython-38.pyc +0 -0
- snappy/__pycache__/export_stl.cpython-38.pyc +0 -0
- snappy/__pycache__/filedialog.cpython-38.pyc +0 -0
- snappy/__pycache__/gui.cpython-38.pyc +0 -0
- snappy/__pycache__/horoviewer.cpython-38.pyc +0 -0
- snappy/__pycache__/math_basics.cpython-38.pyc +0 -0
- snappy/__pycache__/matrix.cpython-38.pyc +0 -0
- snappy/__pycache__/number.cpython-38.pyc +0 -0
- snappy/__pycache__/numeric_output_checker.cpython-38.pyc +0 -0
- snappy/__pycache__/pari.cpython-38.pyc +0 -0
- snappy/__pycache__/polyviewer.cpython-38.pyc +0 -0
- snappy/__pycache__/sage_helper.cpython-38.pyc +0 -0
- snappy/__pycache__/version.cpython-38.pyc +0 -0
- snappy/doc/_sources/verify_canon.rst.txt +0 -90
- snappy/doc/_static/jquery-3.6.0.js +0 -10881
- snappy/doc/_static/js/html5shiv-printshiv.min.js +0 -4
- snappy/doc/_static/js/html5shiv.min.js +0 -4
- snappy/doc/_static/underscore-1.13.1.js +0 -2042
- snappy/doc/_static/underscore.js +0 -6
- snappy/doc/verify_canon.html +0 -304
- snappy/drilling/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/constants.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/crush.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/cusps.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/debug.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/epsilons.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/exceptions.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/fixed_points.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/geodesic_info.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/geodesic_tube.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/geometric_structure.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/line.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/moves.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/peripheral_curves.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/perturb.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/quotient_space.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/spatial_dict.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/subdivide.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/tracing.cpython-38.pyc +0 -0
- snappy/drilling/geodesic_tube.py +0 -441
- snappy/drilling/geometric_structure.py +0 -366
- snappy/drilling/line.py +0 -122
- snappy/drilling/quotient_space.py +0 -94
- snappy/drilling/spatial_dict.py +0 -128
- snappy/exterior_to_link/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/exceptions.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/hyp_utils.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/link_projection.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/main.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/pl_utils.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/put_in_S3.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/stored_moves.cpython-38.pyc +0 -0
- snappy/hyperboloid/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/manifolds/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/component.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/coordinates.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/fieldExtensions.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/findLoops.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/homology.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/manifoldMethods.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/matrix.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/polynomial.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processComponents.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processFileBase.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processFileDispatch.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processMagmaFile.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processRurFile.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyVariety.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/rur.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/utilities.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/character_varieties.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/fundamental_polyhedron.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/interval_reps.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/kernel_structures.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/mcomplex_base.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/nsagetools.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/polished_reps.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/shapes.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/slice_obs_HKL.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/utilities.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/link.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/peripheral.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/surface.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/arrow.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/corner.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/edge.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/face.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/files.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/homology.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/linalg.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/mcomplex.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/perm4.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/simplex.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/spun.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/surface.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/vertex.cpython-38.pyc +0 -0
- snappy/togl/__init__.py +0 -3
- snappy/togl/darwin-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/darwin-tk8.6/Togl2.1/libTogl2.1.dylib +0 -0
- snappy/togl/darwin-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/darwin-tk8.7/Togl2.1/LICENSE +0 -28
- snappy/togl/darwin-tk8.7/Togl2.1/libTogl2.1.dylib +0 -0
- snappy/togl/darwin-tk8.7/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/libTogl2.1.so +0 -0
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/win32VC-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.dll +0 -0
- snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.lib +0 -0
- snappy/togl/win32VC-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.dll +0 -0
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.lib +0 -0
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
- snappy/twister/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/twister/__pycache__/main.cpython-38.pyc +0 -0
- snappy/upper_halfspace/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/upper_halfspace/__pycache__/ideal_point.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/cuspCrossSection.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/cuspTranslations.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/cusp_areas.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/cusp_shapes.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/exceptions.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/interval_tree.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/realAlgebra.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/shapes.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/short_slopes.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/squareExtensions.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/verifyCanonical.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/verifyHyperbolicity.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/volume.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/closed.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/cusped.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-38.pyc +0 -0
- snappy/verify/cuspCrossSection.py +0 -1422
- snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-38.pyc +0 -0
- snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-38.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-38.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-38.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-38.pyc +0 -0
- snappy-3.1.1.dist-info/RECORD +0 -575
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -0
@@ -4,7 +4,7 @@
|
|
4
4
|
*
|
5
5
|
* Sphinx JavaScript utilities for the full-text search.
|
6
6
|
*
|
7
|
-
* :copyright: Copyright 2007-
|
7
|
+
* :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
|
8
8
|
* :license: BSD, see LICENSE for details.
|
9
9
|
*
|
10
10
|
*/
|
@@ -57,12 +57,12 @@ const _removeChildren = (element) => {
|
|
57
57
|
const _escapeRegExp = (string) =>
|
58
58
|
string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
|
59
59
|
|
60
|
-
const _displayItem = (item, searchTerms) => {
|
60
|
+
const _displayItem = (item, searchTerms, highlightTerms) => {
|
61
61
|
const docBuilder = DOCUMENTATION_OPTIONS.BUILDER;
|
62
|
-
const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT;
|
63
62
|
const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX;
|
64
63
|
const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX;
|
65
64
|
const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
|
65
|
+
const contentRoot = document.documentElement.dataset.content_root;
|
66
66
|
|
67
67
|
const [docName, title, anchor, descr, score, _filename] = item;
|
68
68
|
|
@@ -75,28 +75,35 @@ const _displayItem = (item, searchTerms) => {
|
|
75
75
|
if (dirname.match(/\/index\/$/))
|
76
76
|
dirname = dirname.substring(0, dirname.length - 6);
|
77
77
|
else if (dirname === "index/") dirname = "";
|
78
|
-
requestUrl =
|
78
|
+
requestUrl = contentRoot + dirname;
|
79
79
|
linkUrl = requestUrl;
|
80
80
|
} else {
|
81
81
|
// normal html builders
|
82
|
-
requestUrl =
|
82
|
+
requestUrl = contentRoot + docName + docFileSuffix;
|
83
83
|
linkUrl = docName + docLinkSuffix;
|
84
84
|
}
|
85
85
|
let linkEl = listItem.appendChild(document.createElement("a"));
|
86
86
|
linkEl.href = linkUrl + anchor;
|
87
87
|
linkEl.dataset.score = score;
|
88
88
|
linkEl.innerHTML = title;
|
89
|
-
if (descr)
|
89
|
+
if (descr) {
|
90
90
|
listItem.appendChild(document.createElement("span")).innerHTML =
|
91
91
|
" (" + descr + ")";
|
92
|
+
// highlight search terms in the description
|
93
|
+
if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
|
94
|
+
highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
|
95
|
+
}
|
92
96
|
else if (showSearchSummary)
|
93
97
|
fetch(requestUrl)
|
94
98
|
.then((responseData) => responseData.text())
|
95
99
|
.then((data) => {
|
96
100
|
if (data)
|
97
101
|
listItem.appendChild(
|
98
|
-
Search.makeSearchSummary(data, searchTerms)
|
102
|
+
Search.makeSearchSummary(data, searchTerms, anchor)
|
99
103
|
);
|
104
|
+
// highlight search terms in the summary
|
105
|
+
if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
|
106
|
+
highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
|
100
107
|
});
|
101
108
|
Search.output.appendChild(listItem);
|
102
109
|
};
|
@@ -109,26 +116,43 @@ const _finishSearch = (resultCount) => {
|
|
109
116
|
);
|
110
117
|
else
|
111
118
|
Search.status.innerText = _(
|
112
|
-
|
113
|
-
);
|
119
|
+
"Search finished, found ${resultCount} page(s) matching the search query."
|
120
|
+
).replace('${resultCount}', resultCount);
|
114
121
|
};
|
115
122
|
const _displayNextItem = (
|
116
123
|
results,
|
117
124
|
resultCount,
|
118
|
-
searchTerms
|
125
|
+
searchTerms,
|
126
|
+
highlightTerms,
|
119
127
|
) => {
|
120
128
|
// results left, load the summary and display it
|
121
129
|
// this is intended to be dynamic (don't sub resultsCount)
|
122
130
|
if (results.length) {
|
123
|
-
_displayItem(results.pop(), searchTerms);
|
131
|
+
_displayItem(results.pop(), searchTerms, highlightTerms);
|
124
132
|
setTimeout(
|
125
|
-
() => _displayNextItem(results, resultCount, searchTerms),
|
133
|
+
() => _displayNextItem(results, resultCount, searchTerms, highlightTerms),
|
126
134
|
5
|
127
135
|
);
|
128
136
|
}
|
129
137
|
// search finished, update title and status message
|
130
138
|
else _finishSearch(resultCount);
|
131
139
|
};
|
140
|
+
// Helper function used by query() to order search results.
|
141
|
+
// Each input is an array of [docname, title, anchor, descr, score, filename].
|
142
|
+
// Order the results by score (in opposite order of appearance, since the
|
143
|
+
// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically.
|
144
|
+
const _orderResultsByScoreThenName = (a, b) => {
|
145
|
+
const leftScore = a[4];
|
146
|
+
const rightScore = b[4];
|
147
|
+
if (leftScore === rightScore) {
|
148
|
+
// same score: sort alphabetically
|
149
|
+
const leftTitle = a[1].toLowerCase();
|
150
|
+
const rightTitle = b[1].toLowerCase();
|
151
|
+
if (leftTitle === rightTitle) return 0;
|
152
|
+
return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
|
153
|
+
}
|
154
|
+
return leftScore > rightScore ? 1 : -1;
|
155
|
+
};
|
132
156
|
|
133
157
|
/**
|
134
158
|
* Default splitQuery function. Can be overridden in ``sphinx.search`` with a
|
@@ -152,13 +176,26 @@ const Search = {
|
|
152
176
|
_queued_query: null,
|
153
177
|
_pulse_status: -1,
|
154
178
|
|
155
|
-
htmlToText: (htmlString) => {
|
179
|
+
htmlToText: (htmlString, anchor) => {
|
156
180
|
const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html');
|
157
|
-
|
181
|
+
for (const removalQuery of [".headerlink", "script", "style"]) {
|
182
|
+
htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() });
|
183
|
+
}
|
184
|
+
if (anchor) {
|
185
|
+
const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`);
|
186
|
+
if (anchorContent) return anchorContent.textContent;
|
187
|
+
|
188
|
+
console.warn(
|
189
|
+
`Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.`
|
190
|
+
);
|
191
|
+
}
|
192
|
+
|
193
|
+
// if anchor not specified or not found, fall back to main content
|
158
194
|
const docContent = htmlElement.querySelector('[role="main"]');
|
159
|
-
if (docContent
|
195
|
+
if (docContent) return docContent.textContent;
|
196
|
+
|
160
197
|
console.warn(
|
161
|
-
"Content block not found. Sphinx search tries to obtain it via '[role=main]'.
|
198
|
+
"Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template."
|
162
199
|
);
|
163
200
|
return "";
|
164
201
|
},
|
@@ -231,16 +268,7 @@ const Search = {
|
|
231
268
|
else Search.deferQuery(query);
|
232
269
|
},
|
233
270
|
|
234
|
-
|
235
|
-
* execute search (requires search index to be loaded)
|
236
|
-
*/
|
237
|
-
query: (query) => {
|
238
|
-
const filenames = Search._index.filenames;
|
239
|
-
const docNames = Search._index.docnames;
|
240
|
-
const titles = Search._index.titles;
|
241
|
-
const allTitles = Search._index.alltitles;
|
242
|
-
const indexEntries = Search._index.indexentries;
|
243
|
-
|
271
|
+
_parseQuery: (query) => {
|
244
272
|
// stem the search terms and add them to the correct list
|
245
273
|
const stemmer = new Stemmer();
|
246
274
|
const searchTerms = new Set();
|
@@ -276,21 +304,38 @@ const Search = {
|
|
276
304
|
// console.info("required: ", [...searchTerms]);
|
277
305
|
// console.info("excluded: ", [...excludedTerms]);
|
278
306
|
|
279
|
-
|
280
|
-
|
307
|
+
return [query, searchTerms, excludedTerms, highlightTerms, objectTerms];
|
308
|
+
},
|
309
|
+
|
310
|
+
/**
|
311
|
+
* execute search (requires search index to be loaded)
|
312
|
+
*/
|
313
|
+
_performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => {
|
314
|
+
const filenames = Search._index.filenames;
|
315
|
+
const docNames = Search._index.docnames;
|
316
|
+
const titles = Search._index.titles;
|
317
|
+
const allTitles = Search._index.alltitles;
|
318
|
+
const indexEntries = Search._index.indexentries;
|
319
|
+
|
320
|
+
// Collect multiple result groups to be sorted separately and then ordered.
|
321
|
+
// Each is an array of [docname, title, anchor, descr, score, filename].
|
322
|
+
const normalResults = [];
|
323
|
+
const nonMainIndexResults = [];
|
324
|
+
|
281
325
|
_removeChildren(document.getElementById("search-progress"));
|
282
326
|
|
283
|
-
const queryLower = query.toLowerCase();
|
327
|
+
const queryLower = query.toLowerCase().trim();
|
284
328
|
for (const [title, foundTitles] of Object.entries(allTitles)) {
|
285
|
-
if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) {
|
329
|
+
if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) {
|
286
330
|
for (const [file, id] of foundTitles) {
|
287
|
-
|
288
|
-
|
331
|
+
const score = Math.round(Scorer.title * queryLower.length / title.length);
|
332
|
+
const boost = titles[file] === title ? 1 : 0; // add a boost for document titles
|
333
|
+
normalResults.push([
|
289
334
|
docNames[file],
|
290
335
|
titles[file] !== title ? `${titles[file]} > ${title}` : title,
|
291
336
|
id !== null ? "#" + id : "",
|
292
337
|
null,
|
293
|
-
score,
|
338
|
+
score + boost,
|
294
339
|
filenames[file],
|
295
340
|
]);
|
296
341
|
}
|
@@ -300,46 +345,47 @@ const Search = {
|
|
300
345
|
// search for explicit entries in index directives
|
301
346
|
for (const [entry, foundEntries] of Object.entries(indexEntries)) {
|
302
347
|
if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) {
|
303
|
-
for (const [file, id] of foundEntries) {
|
304
|
-
|
305
|
-
|
348
|
+
for (const [file, id, isMain] of foundEntries) {
|
349
|
+
const score = Math.round(100 * queryLower.length / entry.length);
|
350
|
+
const result = [
|
306
351
|
docNames[file],
|
307
352
|
titles[file],
|
308
353
|
id ? "#" + id : "",
|
309
354
|
null,
|
310
355
|
score,
|
311
356
|
filenames[file],
|
312
|
-
]
|
357
|
+
];
|
358
|
+
if (isMain) {
|
359
|
+
normalResults.push(result);
|
360
|
+
} else {
|
361
|
+
nonMainIndexResults.push(result);
|
362
|
+
}
|
313
363
|
}
|
314
364
|
}
|
315
365
|
}
|
316
366
|
|
317
367
|
// lookup as object
|
318
368
|
objectTerms.forEach((term) =>
|
319
|
-
|
369
|
+
normalResults.push(...Search.performObjectSearch(term, objectTerms))
|
320
370
|
);
|
321
371
|
|
322
372
|
// lookup as search terms in fulltext
|
323
|
-
|
373
|
+
normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms));
|
324
374
|
|
325
375
|
// let the scorer override scores with a custom scoring function
|
326
|
-
if (Scorer.score)
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
results
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
|
340
|
-
}
|
341
|
-
return leftScore > rightScore ? 1 : -1;
|
342
|
-
});
|
376
|
+
if (Scorer.score) {
|
377
|
+
normalResults.forEach((item) => (item[4] = Scorer.score(item)));
|
378
|
+
nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item)));
|
379
|
+
}
|
380
|
+
|
381
|
+
// Sort each group of results by score and then alphabetically by name.
|
382
|
+
normalResults.sort(_orderResultsByScoreThenName);
|
383
|
+
nonMainIndexResults.sort(_orderResultsByScoreThenName);
|
384
|
+
|
385
|
+
// Combine the result groups in (reverse) order.
|
386
|
+
// Non-main index entries are typically arbitrary cross-references,
|
387
|
+
// so display them after other results.
|
388
|
+
let results = [...nonMainIndexResults, ...normalResults];
|
343
389
|
|
344
390
|
// remove duplicate search results
|
345
391
|
// note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
|
@@ -353,14 +399,19 @@ const Search = {
|
|
353
399
|
return acc;
|
354
400
|
}, []);
|
355
401
|
|
356
|
-
|
402
|
+
return results.reverse();
|
403
|
+
},
|
404
|
+
|
405
|
+
query: (query) => {
|
406
|
+
const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query);
|
407
|
+
const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms);
|
357
408
|
|
358
409
|
// for debugging
|
359
410
|
//Search.lastresults = results.slice(); // a copy
|
360
411
|
// console.info("search results:", Search.lastresults);
|
361
412
|
|
362
413
|
// print the results
|
363
|
-
_displayNextItem(results, results.length, searchTerms);
|
414
|
+
_displayNextItem(results, results.length, searchTerms, highlightTerms);
|
364
415
|
},
|
365
416
|
|
366
417
|
/**
|
@@ -458,14 +509,18 @@ const Search = {
|
|
458
509
|
// add support for partial matches
|
459
510
|
if (word.length > 2) {
|
460
511
|
const escapedWord = _escapeRegExp(word);
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
512
|
+
if (!terms.hasOwnProperty(word)) {
|
513
|
+
Object.keys(terms).forEach((term) => {
|
514
|
+
if (term.match(escapedWord))
|
515
|
+
arr.push({ files: terms[term], score: Scorer.partialTerm });
|
516
|
+
});
|
517
|
+
}
|
518
|
+
if (!titleTerms.hasOwnProperty(word)) {
|
519
|
+
Object.keys(titleTerms).forEach((term) => {
|
520
|
+
if (term.match(escapedWord))
|
521
|
+
arr.push({ files: titleTerms[term], score: Scorer.partialTitle });
|
522
|
+
});
|
523
|
+
}
|
469
524
|
}
|
470
525
|
|
471
526
|
// no match but word was a required one
|
@@ -488,9 +543,8 @@ const Search = {
|
|
488
543
|
|
489
544
|
// create the mapping
|
490
545
|
files.forEach((file) => {
|
491
|
-
if (fileMap.has(file)
|
492
|
-
|
493
|
-
else fileMap.set(file, [word]);
|
546
|
+
if (!fileMap.has(file)) fileMap.set(file, [word]);
|
547
|
+
else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word);
|
494
548
|
});
|
495
549
|
});
|
496
550
|
|
@@ -541,8 +595,8 @@ const Search = {
|
|
541
595
|
* search summary for a given text. keywords is a list
|
542
596
|
* of stemmed words.
|
543
597
|
*/
|
544
|
-
makeSearchSummary: (htmlText, keywords) => {
|
545
|
-
const text = Search.htmlToText(htmlText);
|
598
|
+
makeSearchSummary: (htmlText, keywords, anchor) => {
|
599
|
+
const text = Search.htmlToText(htmlText, anchor);
|
546
600
|
if (text === "") return null;
|
547
601
|
|
548
602
|
const textLower = text.toLowerCase();
|
@@ -1,33 +1,33 @@
|
|
1
|
-
|
2
|
-
/* Downsize the headings, e.g. for furo */
|
3
|
-
|
4
|
-
h1 {
|
5
|
-
font-size: 1.75em;
|
6
|
-
margin-bottom: 1rem
|
7
|
-
}
|
8
|
-
|
9
|
-
h1,h2 {
|
10
|
-
margin-top: 1.75rem
|
11
|
-
}
|
12
|
-
|
13
|
-
h2 {
|
14
|
-
font-size: 1.5em
|
15
|
-
}
|
16
|
-
|
17
|
-
h3 {
|
18
|
-
font-size: 1.3em
|
19
|
-
}
|
20
|
-
|
21
|
-
h4 {
|
22
|
-
font-size: 1.2em
|
23
|
-
}
|
24
|
-
|
25
|
-
h5 {
|
26
|
-
font-size: 1.1em
|
27
|
-
}
|
28
|
-
|
29
|
-
h6 {
|
30
|
-
font-size: 1em
|
31
|
-
}
|
32
|
-
|
33
|
-
/* end downsized headings */
|
1
|
+
|
2
|
+
/* Downsize the headings, e.g. for furo */
|
3
|
+
|
4
|
+
h1 {
|
5
|
+
font-size: 1.75em;
|
6
|
+
margin-bottom: 1rem
|
7
|
+
}
|
8
|
+
|
9
|
+
h1,h2 {
|
10
|
+
margin-top: 1.75rem
|
11
|
+
}
|
12
|
+
|
13
|
+
h2 {
|
14
|
+
font-size: 1.5em
|
15
|
+
}
|
16
|
+
|
17
|
+
h3 {
|
18
|
+
font-size: 1.3em
|
19
|
+
}
|
20
|
+
|
21
|
+
h4 {
|
22
|
+
font-size: 1.2em
|
23
|
+
}
|
24
|
+
|
25
|
+
h5 {
|
26
|
+
font-size: 1.1em
|
27
|
+
}
|
28
|
+
|
29
|
+
h6 {
|
30
|
+
font-size: 1em
|
31
|
+
}
|
32
|
+
|
33
|
+
/* end downsized headings */
|
@@ -1,42 +1,42 @@
|
|
1
|
-
h1, h2, h3, h4, h5, h6 {
|
2
|
-
font-family: Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;
|
3
|
-
}
|
4
|
-
|
5
|
-
.wy-side-nav-search>a {
|
6
|
-
color: black;
|
7
|
-
}
|
8
|
-
|
9
|
-
.wy-side-nav-search>div.version{
|
10
|
-
color: black;
|
11
|
-
}
|
12
|
-
|
13
|
-
.wy-side-nav-search {
|
14
|
-
color: black;
|
15
|
-
background-color: #e8f8e8;
|
16
|
-
}
|
17
|
-
|
18
|
-
.wy-nav-top {
|
19
|
-
background-color: #80a080;
|
20
|
-
}
|
21
|
-
|
22
|
-
.wy-nav-side {
|
23
|
-
background-color: #80a080;
|
24
|
-
}
|
25
|
-
|
26
|
-
.wy-menu-vertical a {
|
27
|
-
color: white;
|
28
|
-
}
|
29
|
-
|
30
|
-
.wy-menu-vertical li.current>a {
|
31
|
-
color: black;
|
32
|
-
}
|
33
|
-
|
34
|
-
.wy-nav-content {
|
35
|
-
max-width: none;
|
36
|
-
background-color: white;
|
37
|
-
color: black;
|
38
|
-
}
|
39
|
-
|
40
|
-
footer {
|
41
|
-
color: black;
|
42
|
-
}
|
1
|
+
h1, h2, h3, h4, h5, h6 {
|
2
|
+
font-family: Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;
|
3
|
+
}
|
4
|
+
|
5
|
+
.wy-side-nav-search>a {
|
6
|
+
color: black;
|
7
|
+
}
|
8
|
+
|
9
|
+
.wy-side-nav-search>div.version{
|
10
|
+
color: black;
|
11
|
+
}
|
12
|
+
|
13
|
+
.wy-side-nav-search {
|
14
|
+
color: black;
|
15
|
+
background-color: #e8f8e8;
|
16
|
+
}
|
17
|
+
|
18
|
+
.wy-nav-top {
|
19
|
+
background-color: #80a080;
|
20
|
+
}
|
21
|
+
|
22
|
+
.wy-nav-side {
|
23
|
+
background-color: #80a080;
|
24
|
+
}
|
25
|
+
|
26
|
+
.wy-menu-vertical a {
|
27
|
+
color: white;
|
28
|
+
}
|
29
|
+
|
30
|
+
.wy-menu-vertical li.current>a {
|
31
|
+
color: black;
|
32
|
+
}
|
33
|
+
|
34
|
+
.wy-nav-content {
|
35
|
+
max-width: none;
|
36
|
+
background-color: white;
|
37
|
+
color: black;
|
38
|
+
}
|
39
|
+
|
40
|
+
footer {
|
41
|
+
color: black;
|
42
|
+
}
|
@@ -29,14 +29,19 @@ const _highlight = (node, addItems, text, className) => {
|
|
29
29
|
}
|
30
30
|
|
31
31
|
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
|
32
|
+
const rest = document.createTextNode(val.substr(pos + text.length));
|
32
33
|
parent.insertBefore(
|
33
34
|
span,
|
34
35
|
parent.insertBefore(
|
35
|
-
|
36
|
+
rest,
|
36
37
|
node.nextSibling
|
37
38
|
)
|
38
39
|
);
|
39
40
|
node.nodeValue = val.substr(0, pos);
|
41
|
+
/* There may be more occurrences of search term in this node. So call this
|
42
|
+
* function recursively on the remaining fragment.
|
43
|
+
*/
|
44
|
+
_highlight(rest, addItems, text, className);
|
40
45
|
|
41
46
|
if (isInSVG) {
|
42
47
|
const rect = document.createElementNS(
|
@@ -140,5 +145,10 @@ const SphinxHighlight = {
|
|
140
145
|
},
|
141
146
|
};
|
142
147
|
|
143
|
-
_ready(
|
144
|
-
|
148
|
+
_ready(() => {
|
149
|
+
/* Do not call highlightSearchWords() when we are on the search page.
|
150
|
+
* It will highlight words from the *previous* search query.
|
151
|
+
*/
|
152
|
+
if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords();
|
153
|
+
SphinxHighlight.initEscapeListener();
|
154
|
+
});
|