0.2.1 — the holder goes between the symbol and the year

'(c) Alfredo Ferrarin 2004' was read as a title. The notice pattern
wanted the year to follow the symbol directly, and a copyright line puts
the holder's name in between, which is the ordinary way to set one.
This commit is contained in:
funkpower
2026-09-21 11:19:54 -04:00
parent 3b1fbb73ce
commit 60943420b4
3 changed files with 58 additions and 54 deletions
Generated
+26 -26
View File
@@ -101,7 +101,7 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
[[package]]
name = "avplan"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
@@ -126,7 +126,7 @@ checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5"
[[package]]
name = "bibclean"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
@@ -143,7 +143,7 @@ dependencies = [
[[package]]
name = "bibfetch"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
@@ -196,7 +196,7 @@ dependencies = [
[[package]]
name = "bookmeta"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
@@ -210,7 +210,7 @@ dependencies = [
[[package]]
name = "booksniff"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
@@ -250,7 +250,7 @@ checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
[[package]]
name = "catena"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"bibclean",
"bibfetch",
@@ -277,7 +277,7 @@ dependencies = [
[[package]]
name = "catena-cli"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"clap",
"clap_mangen",
@@ -312,7 +312,7 @@ checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600"
[[package]]
name = "chunkmd"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
@@ -334,7 +334,7 @@ dependencies = [
[[package]]
name = "citefind"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"chunkmd",
@@ -399,7 +399,7 @@ dependencies = [
[[package]]
name = "colophon"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"bibclean",
"catena-cli",
@@ -448,7 +448,7 @@ dependencies = [
[[package]]
name = "corpus-core"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"schemars",
"serde",
@@ -492,7 +492,7 @@ dependencies = [
[[package]]
name = "cuekit"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"corpus-core",
"regex",
@@ -504,7 +504,7 @@ dependencies = [
[[package]]
name = "cuenorm"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
@@ -514,7 +514,7 @@ dependencies = [
[[package]]
name = "cuepack"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
@@ -525,7 +525,7 @@ dependencies = [
[[package]]
name = "cueseg"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
@@ -612,7 +612,7 @@ dependencies = [
[[package]]
name = "emb"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
@@ -876,7 +876,7 @@ dependencies = [
[[package]]
name = "idnorm"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"bibclean",
"catena-cli",
@@ -942,7 +942,7 @@ dependencies = [
[[package]]
name = "langid"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
@@ -1022,7 +1022,7 @@ dependencies = [
[[package]]
name = "mdscrub"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
@@ -1034,7 +1034,7 @@ dependencies = [
[[package]]
name = "mdsplit"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
@@ -1113,7 +1113,7 @@ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
[[package]]
name = "pdfgutter"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
@@ -1126,7 +1126,7 @@ dependencies = [
[[package]]
name = "pdftriage"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
@@ -1370,7 +1370,7 @@ checksum = "323c417e1d9665a65b263ec744ba09030cfb277e9daa0b018a4ab62e57bc8189"
[[package]]
name = "rrf"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
@@ -1517,7 +1517,7 @@ dependencies = [
[[package]]
name = "seriesof"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
@@ -1634,7 +1634,7 @@ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
[[package]]
name = "textkit"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"regex",
"tiktoken-rs",
@@ -1724,7 +1724,7 @@ checksum = "fd3ca314f692efd6c868f8408f53fe444634a845f96c028b97d35f6a1f79f0ee"
[[package]]
name = "tocfind"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"catena-cli",
"clap",
+27 -27
View File
@@ -3,39 +3,39 @@ resolver = "3"
members = ["crates/*"]
[workspace.package]
version = "0.2.0"
version = "0.2.1"
edition = "2024"
rust-version = "1.85"
license = "MPL-2.0"
repository = "https://git.pumpin.online/funkpower/catena"
[workspace.dependencies]
catena-cli = { path = "crates/catena-cli", version = "0.2.0" }
corpus-core = { path = "crates/corpus-core", version = "0.2.0" }
cuekit = { path = "crates/cuekit", version = "0.2.0" }
textkit = { path = "crates/textkit", version = "0.2.0" }
chunkmd = { path = "crates/chunkmd", version = "0.2.0" }
mdscrub = { path = "crates/mdscrub", version = "0.2.0" }
mdsplit = { path = "crates/mdsplit", version = "0.2.0" }
pdftriage = { path = "crates/pdftriage", version = "0.2.0" }
cuenorm = { path = "crates/cuenorm", version = "0.2.0" }
cueseg = { path = "crates/cueseg", version = "0.2.0" }
rrf = { path = "crates/rrf", version = "0.2.0" }
cuepack = { path = "crates/cuepack", version = "0.2.0" }
bibclean = { path = "crates/bibclean", version = "0.2.0" }
avplan = { path = "crates/avplan", version = "0.2.0" }
pdfgutter = { path = "crates/pdfgutter", version = "0.2.0" }
catena = { path = "crates/bindings", version = "0.2.0" }
seriesof = { path = "crates/seriesof", version = "0.2.0" }
idnorm = { path = "crates/idnorm", version = "0.2.0" }
bibfetch = { path = "crates/bibfetch", version = "0.2.0" }
bookmeta = { path = "crates/bookmeta", version = "0.2.0" }
langid = { path = "crates/langid", version = "0.2.0" }
tocfind = { path = "crates/tocfind", version = "0.2.0" }
booksniff = { path = "crates/booksniff", version = "0.2.0" }
citefind = { path = "crates/citefind", version = "0.2.0" }
colophon = { path = "crates/colophon", version = "0.2.0" }
emb = { path = "crates/emb", version = "0.2.0" }
catena-cli = { path = "crates/catena-cli", version = "0.2.1" }
corpus-core = { path = "crates/corpus-core", version = "0.2.1" }
cuekit = { path = "crates/cuekit", version = "0.2.1" }
textkit = { path = "crates/textkit", version = "0.2.1" }
chunkmd = { path = "crates/chunkmd", version = "0.2.1" }
mdscrub = { path = "crates/mdscrub", version = "0.2.1" }
mdsplit = { path = "crates/mdsplit", version = "0.2.1" }
pdftriage = { path = "crates/pdftriage", version = "0.2.1" }
cuenorm = { path = "crates/cuenorm", version = "0.2.1" }
cueseg = { path = "crates/cueseg", version = "0.2.1" }
rrf = { path = "crates/rrf", version = "0.2.1" }
cuepack = { path = "crates/cuepack", version = "0.2.1" }
bibclean = { path = "crates/bibclean", version = "0.2.1" }
avplan = { path = "crates/avplan", version = "0.2.1" }
pdfgutter = { path = "crates/pdfgutter", version = "0.2.1" }
catena = { path = "crates/bindings", version = "0.2.1" }
seriesof = { path = "crates/seriesof", version = "0.2.1" }
idnorm = { path = "crates/idnorm", version = "0.2.1" }
bibfetch = { path = "crates/bibfetch", version = "0.2.1" }
bookmeta = { path = "crates/bookmeta", version = "0.2.1" }
langid = { path = "crates/langid", version = "0.2.1" }
tocfind = { path = "crates/tocfind", version = "0.2.1" }
booksniff = { path = "crates/booksniff", version = "0.2.1" }
citefind = { path = "crates/citefind", version = "0.2.1" }
colophon = { path = "crates/colophon", version = "0.2.1" }
emb = { path = "crates/emb", version = "0.2.1" }
clap = { version = "4", features = ["derive"] }
clap_mangen = "0.3"
+5 -1
View File
@@ -36,7 +36,9 @@ static BARE_DATE: LazyLock<Regex> =
LazyLock::new(|| Regex::new(r"(?i)^\d{1,4}\s*(bc|ad|bce|ce)?\.?$").expect("a valid pattern"));
/// `Copyright © 2013 by`, `\u{a9} 2013 Richard Swinburne`, `Copyright 1971 by`.
static COPYRIGHT_NOTICE: LazyLock<Regex> = LazyLock::new(|| {
Regex::new(r"(?i)(\u{a9}|\(c\)|copyright)\s*(\u{a9}|\(c\))?\s*(1[0-9]|20)\d{2}")
// The year need not follow the symbol directly: "(c) Alfredo Ferrarin
// 2004" puts the holder between them, and was read as a title.
Regex::new(r"(?i)(\u{a9}|\(c\)|copyright)[^\n]{0,60}?(1[0-9]|20)\d{2}")
.expect("a valid pattern")
});
/// `Edited by`, with whoever it was set on the line beneath.
@@ -413,6 +415,8 @@ mod furniture_tests {
"12 INDEX",
"Translated from the French by Willard R. Trask",
"Copyright © 2013 by Barry Davies, BEM",
"© Alfredo Ferrarin 2004",
"\u{a9} Cambridge University Press 2011",
"[PART ONE:",
"Piper Verlag GmbH, Munich<span style=\"font-size\">",
"Vol. 11. HENRY JAMES, JR.",