mirror of
https://git.pumpin.online/funkpower/catena.git
synced 2026-10-23 11:17:13 +00:00
Cuts a reference list into entries — at the note numbers where there are any, at the layout where there are not — and reads each as far as its punctuation allows. Fields that would not parse are named in `unsettled` rather than guessed at, and `--prompt` asks a model about exactly those and no others. Over 202 real reference sections from the corpus: 8,566 references, 95% with a title, 82% with a year, 46% settling every field with no model involved. A title is refused where the entry was never divided, so no record reports its own text back as the work it cites. `ibid.` is flagged and left alone — it points at a work, and the entry does not say which. A rule of dashes is filled in, because the style defines it as the author above. chunkmd gains `note_starts` and `cites_something`: recognising a page of notes and splitting one are the same knowledge, and two copies of that pattern would drift.
74 lines
2.5 KiB
TOML
74 lines
2.5 KiB
TOML
[package]
|
|
name = "catena"
|
|
description = "The catena libraries behind one surface, for calling in process rather than as a subprocess."
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
|
|
# wasm-pack ships a wasm-opt older than the WebAssembly rustc now emits, and
|
|
# it rejects the module rather than assuming the features are allowed. Naming
|
|
# them keeps the optimisation instead of turning it off; every one is years
|
|
# old and in every runtime that matters.
|
|
[package.metadata.wasm-pack.profile.release]
|
|
wasm-opt = [
|
|
"-O",
|
|
"--enable-bulk-memory",
|
|
"--enable-nontrapping-float-to-int",
|
|
"--enable-sign-ext",
|
|
"--enable-mutable-globals",
|
|
"--enable-reference-types",
|
|
]
|
|
|
|
[lib]
|
|
name = "catena"
|
|
path = "src/lib.rs"
|
|
# `cdylib` for the bindings, `rlib` so the workspace can still depend on it.
|
|
crate-type = ["cdylib", "rlib"]
|
|
|
|
[dependencies]
|
|
booksniff.workspace = true
|
|
chunkmd.workspace = true
|
|
citefind.workspace = true
|
|
corpus-core.workspace = true
|
|
idnorm.workspace = true
|
|
cuekit.workspace = true
|
|
cuepack.workspace = true
|
|
cueseg.workspace = true
|
|
mdscrub.workspace = true
|
|
mdsplit.workspace = true
|
|
rrf.workspace = true
|
|
seriesof.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
textkit.workspace = true
|
|
|
|
pyo3 = { workspace = true, optional = true }
|
|
|
|
# The JavaScript build. Only ever compiled for a wasm32 target; on any other
|
|
# the module is compiled out and these sit unused.
|
|
wasm-bindgen = { workspace = true, optional = true }
|
|
serde-wasm-bindgen = { workspace = true, optional = true }
|
|
|
|
[features]
|
|
# Only maturin turns this on. pyo3's extension-module feature leaves the
|
|
# Python symbols to be resolved by the interpreter at load time, so an
|
|
# ordinary `cargo build` would fail to link if it were on by default.
|
|
python = ["dep:pyo3"]
|
|
# The C ABI. Off by default so an ordinary build does not also export a
|
|
# hundred symbols nobody asked for.
|
|
capi = []
|
|
# JavaScript and TypeScript, through WebAssembly.
|
|
wasm = ["dep:wasm-bindgen", "dep:serde-wasm-bindgen"]
|
|
|
|
# Not `workspace = true`. The workspace forbids unsafe, and a C ABI is unsafe
|
|
# by definition: it takes raw pointers from a caller this cannot see. The
|
|
# allowance is the narrowest thing that compiles — every `unsafe` in this
|
|
# crate is in `src/capi.rs`, and `unsafe_op_in_unsafe_fn` keeps each one
|
|
# spelled out rather than inherited from the function signature.
|
|
[lints.rust]
|
|
unsafe_code = "allow"
|
|
unsafe_op_in_unsafe_fn = "deny"
|
|
missing_docs = "warn"
|