diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-27 20:19:00 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-27 20:19:00 +0200 |
| commit | 42636312160892d1bc6a7f021ce27354f7cbb80d (patch) | |
| tree | 88d75c31ed996dfd459268b8d75aeb24cd646ac6 /internal/bible | |
| parent | 643d01c388eece9f3a00d2db16cb421f5483b229 (diff) | |
| download | lectio-42636312160892d1bc6a7f021ce27354f7cbb80d.tar.gz lectio-42636312160892d1bc6a7f021ce27354f7cbb80d.zip | |
feat(config): reading_lang/reading_version + ReadingCorpus resolver
Task 3 of national-bibles. Adds reading_lang (any language code) and
reading_version (explicit corpus code) config fields, setField cases,
renderConfigINI lines + self-documenting header, and Config.ReadingCorpus():
reading_version > reading_lang match > ui_language match > "" (Latin fallback
applied by the caller).
Also adds an `autoselect` corpus-metadata flag (default true), surfaced during
this task: the built-in wuj declares lang=pl, so lang-auto would have
re-selected the incomplete Wujek for Polish users and defeated the wuj-drop.
wuj.ini now sets autoselect=false, so it is reachable only via an explicit
reading_version or --ref; the resolver's language auto-match skips
non-autoselectable corpora. A corrected Wujek drop-in (autoselect defaults
true) auto-serves Polish with zero config.
Diffstat (limited to 'internal/bible')
| -rw-r--r-- | internal/bible/corpora/wuj.ini | 1 | ||||
| -rw-r--r-- | internal/bible/corpusmeta.go | 9 | ||||
| -rw-r--r-- | internal/bible/registry.go | 2 |
3 files changed, 10 insertions, 2 deletions
diff --git a/internal/bible/corpora/wuj.ini b/internal/bible/corpora/wuj.ini index 8364923..22eeca3 100644 --- a/internal/bible/corpora/wuj.ini +++ b/internal/bible/corpora/wuj.ini @@ -2,3 +2,4 @@ lang = pl name = Wujek (Polish) psalm_system = vulgate +autoselect = false diff --git a/internal/bible/corpusmeta.go b/internal/bible/corpusmeta.go index 04b9dcb..60d90a9 100644 --- a/internal/bible/corpusmeta.go +++ b/internal/bible/corpusmeta.go @@ -3,15 +3,20 @@ package bible import "github.com/lukaszkasprzak/lectio/internal/ini" // CorpusMeta is the sidecar metadata for a bible corpus (<code>.ini). +// Autoselect (default true) governs whether the corpus may be picked by the +// reading resolver's language auto-match; a corpus with Autoselect=false stays +// reachable only via an explicit reading_version or --ref (e.g. the built-in +// wuj, which is incomplete). See docs national-bibles design. type CorpusMeta struct { Code, Lang, Name, PsalmSystem, Sigla string + Autoselect bool } // parseCorpusMeta reads a section-less sidecar. ini.Parse returns // []ini.Section{Name, Pairs}; keys before any [section] land in the section // whose Name == "" (verified against internal/ini). func parseCorpusMeta(code string, data []byte) CorpusMeta { - m := CorpusMeta{Code: code} + m := CorpusMeta{Code: code, Autoselect: true} // absent autoselect => true secs, err := ini.Parse(data) if err != nil { return m @@ -30,6 +35,8 @@ func parseCorpusMeta(code string, data []byte) CorpusMeta { m.PsalmSystem = p.Val case "sigla": m.Sigla = p.Val + case "autoselect": + m.Autoselect = p.Val != "false" } } } diff --git a/internal/bible/registry.go b/internal/bible/registry.go index 2ab721b..28571ea 100644 --- a/internal/bible/registry.go +++ b/internal/bible/registry.go @@ -52,7 +52,7 @@ func buildRegistry() { if code, ok := strings.CutSuffix(name, ".tsv"); ok { regUserTSV[code] = filepath.Join(userDir, name) if _, have := regMeta[code]; !have { - regMeta[code] = CorpusMeta{Code: code, PsalmSystem: "vulgate"} + regMeta[code] = CorpusMeta{Code: code, PsalmSystem: "vulgate", Autoselect: true} } } } |
