mirror of
https://github.com/nlohmann/json.git
synced 2026-10-11 08:57:15 +00:00
* Clean up README, contribution guide, and repository metadata - REUSE.toml: fix the Hedley path and SPDX id (CC0-1.0), mark the docset icons as the public-domain JSON logo - CITATION.cff: v3.12.0 was released on 2025-04-11 - FILES.md: list all workflows, describe the Meson option defaults - README: ctest -LE, table of contents, typos, stale Android/MinGW advice, moved links, merge duplicate Thanks entries, list the analysis tools used in CI - CONTRIBUTING: iterative parser, json_literals.hpp is generated, links - .gitignore: backups and release outputs; .gitattributes: mark generated files - labeler: label other build systems and .github documentation - MODULE.bazel: add the module version Signed-off-by: Niels Lohmann <mail@nlohmann.me> * Clean up CI, CMake, Makefile, and Bazel files - CMakeLists.txt: avoid VERSION_GREATER_EQUAL, which CMake < 3.7 lacks - ci.cmake: test JSON_DisableTupleReferenceConversion in ci_cmake_flags, remove unused variables and unreachable per-compiler targets, look up Clang tools consistently, forward CMAKE_CXX_FLAGS to ci_module_cpp20, format json_literals.hpp and remove backups in ci_test_amalgamation - BUILD.bazel: add json_literals.hpp to the single-header target - workflows: format json_literals.hpp before copying it, drop the obsolete natvis --version plumbing, name natvis and macro_builder in failure messages, drop the duplicate amalgamation job, install Valgrind only where needed, republish docs on version bumps, fix stale names - Makefile: complete .PHONY and help, check-amalgamation always restores the checked-in files, natvis uses its own venv, macro_builder_check installs astyle, clean removes the fuzzer binaries - remove tools/amalgamate/config_json_view.json (json_view.hpp is not on develop yet) Signed-off-by: Niels Lohmann <mail@nlohmann.me> * Fix inaccuracies in the documentation - version history: json_base_class_t (3.11.3), JSON_HAS_CPP_11 (3.10.0), JSON_HAS_RANGES exclusions, define-type macros, ABI tags - releases: 3.12.0 raised the minimum CMake version - from_*: the (ptr, len) overloads are deleted, not removed, in 4.0.0 - contains/count/find: document the deleted integral overloads - add JSON_HAS_RANGE_VIEW_CONVERSION and list the JSON_HAS_* macros in the macro overview - mention BON8 and error_handler where binary formats are listed - broken links, outdated URLs, warning count, Hunter v0.26.12 - copy_markdown_source hook: expand snippets in the Markdown copies Signed-off-by: Niels Lohmann <mail@nlohmann.me> * Pass /EHsc to the Windows C++20 module build ci_module_cpp20 now forwards CMAKE_CXX_FLAGS to the module build. The Windows workflow sets CMAKE_CXX_FLAGS, which replaces CMake's MSVC defaults including /EHsc, so <chrono> failed with C4530 under /WX. Signed-off-by: Niels Lohmann <mail@nlohmann.me> --------- Signed-off-by: Niels Lohmann <mail@nlohmann.me>
51 lines
1.8 KiB
Python
51 lines
1.8 KiB
Python
"""Copy each documentation page's Markdown source into the built site."""
|
|
|
|
# Creates a `<path>.md` sibling of each HTML output (for example,
|
|
# `features/comments/` becomes `features/comments.md`) so agents and tools can
|
|
# fetch the raw Markdown directly instead of parsing rendered HTML. The
|
|
# `--8<-- "path"` lines of pymdownx.snippets are expanded with the extension's
|
|
# own preprocessor and the settings from mkdocs.yml, so the copies contain the
|
|
# included example code and files instead of the include directives.
|
|
|
|
import io
|
|
import os
|
|
|
|
import markdown
|
|
from pymdownx.snippets import SnippetMissingError
|
|
|
|
_pages = []
|
|
_snippets = None
|
|
|
|
|
|
def on_config(config):
|
|
global _snippets
|
|
md = markdown.Markdown(
|
|
extensions=["pymdownx.snippets"],
|
|
extension_configs={"pymdownx.snippets": config["mdx_configs"].get("pymdownx.snippets", {})},
|
|
)
|
|
_snippets = md.preprocessors["snippet"]
|
|
_snippets.auto_append = [] # the glossary is only needed to render abbreviations
|
|
return config
|
|
|
|
|
|
def on_files(files, config):
|
|
global _pages
|
|
_pages = [f for f in files if f.is_documentation_page()]
|
|
return files
|
|
|
|
|
|
def on_post_build(config):
|
|
site_dir = config["site_dir"]
|
|
for file in _pages:
|
|
url = file.url.rstrip("/")
|
|
target = os.path.join(site_dir, (url or "index") + ".md")
|
|
os.makedirs(os.path.dirname(target), exist_ok=True)
|
|
with io.open(file.abs_src_path, encoding="utf-8", newline="") as source:
|
|
text = source.read()
|
|
try:
|
|
text = "\n".join(_snippets.run(text.split("\n")))
|
|
except (SnippetMissingError, OSError):
|
|
pass # keep the include directives; the regular build reports the missing file
|
|
with io.open(target, "w", encoding="utf-8", newline="") as copy:
|
|
copy.write(text)
|