feat: mdgrep 0.1.0 – boolean full-text search for Markdown

- query language: substrings, phrases, /regex/, AND/OR/NOT (+ UND/ODER/NICHT),
  parentheses; case-insensitive; ReDoS protection via regex timeouts;
  syntax errors with stable code and position
- SearchEngine over in-memory blocks: filters, predicate, grouping, sorting,
  paging, time budget, automatic reload, highlighted snippets
- Markdown loader with split modes file/heading/list/paragraph
- grep-like CLI (mdgrep), JSON output, grep exit codes
- Flask blueprint/app with JSON API and widget assets, dev server
- framework-free JS widget: live search, URL state, filters, paging,
  syntax help, en/de labels, CSS custom properties for theming

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
dschlueter 2026-10-12 19:29:44 +02:00
commit 9c7b7e81f9

29
pyproject.toml Normal file
View file

@ -0,0 +1,29 @@
[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"
[project]
name = "mdgrep"
version = "0.1.0"
description = "Boolean full-text search (substrings, phrases, regex, AND/OR/NOT, parentheses) over Markdown and other text blocks, with CLI, Flask API and a JavaScript search widget"
readme = "README.md"
license = "MIT"
requires-python = ">=3.10"
authors = [{ name = "Dieter Schlüter" }]
dependencies = ["regex>=2023.0"]
[project.optional-dependencies]
web = ["flask>=2.3"]
dev = ["pytest>=7", "flask>=2.3"]
[project.scripts]
mdgrep = "mdgrep.cli:main"
[tool.setuptools.packages.find]
where = ["src"]
[tool.setuptools.package-data]
mdgrep = ["static/*"]
[tool.pytest.ini_options]
testpaths = ["tests"]