Skip to main content

citum_schema_style/
lib.rs

1/*
2SPDX-License-Identifier: MIT OR Apache-2.0
3SPDX-FileCopyrightText: © 2023-2026 Bruce D'Arcus and Citum contributors
4*/
5
6//! Public schema types for Citum styles, citations, references, and locales.
7
8/// Compatibility facade merging data input types with style-specific logic.
9#[allow(missing_docs, reason = "internal derives")]
10pub mod citation {
11    pub use crate::locale::locator::normalize_locator_text;
12    pub use citum_schema_data::citation::*;
13}
14
15/// Bibliographic reference data types.
16pub use citum_schema_data::reference;
17
18/// Bibliography grouping and sorting specifications.
19pub mod grouping;
20/// Locale-specific terms and translations.
21pub mod locale;
22/// Style configuration options.
23#[allow(missing_docs, reason = "internal derives")]
24pub mod options;
25/// Configuration presets for common styles.
26pub mod presets;
27/// Style base-inheritance mechanism (named compiled-in Style structs).
28pub mod style_base;
29/// Citation and bibliography template components.
30#[allow(missing_docs, reason = "internal derives")]
31pub mod template;
32/// Style schema version and resource-limit constants.
33pub mod version;
34
35/// Embedded templates for priority styles (APA, Chicago, Vancouver, IEEE, Harvard).
36pub mod embedded;
37
38/// Style registry — discovery and alias resolution.
39pub mod registry;
40
41/// Declarative macros for AST and configurations.
42pub mod macros;
43
44/// Lint helpers for raw locales and styles.
45pub mod lint;
46
47mod style;
48
49#[cfg(test)]
50mod tests;
51
52#[cfg(test)]
53#[allow(
54    clippy::unwrap_used,
55    clippy::expect_used,
56    clippy::panic,
57    clippy::indexing_slicing,
58    clippy::todo,
59    clippy::unimplemented,
60    clippy::unreachable,
61    clippy::get_unwrap,
62    reason = "Panicking is acceptable and often desired in tests."
63)]
64mod reference_multilingual_tests;
65
66pub use citation::{
67    Citation, CitationItem, CitationMode, Citations, IntegralNameState, LocatorType, Position,
68};
69pub use citum_schema_data::{InputBibliography, InputBibliographyInfo};
70pub use grouping::{
71    BibliographyGroup, CitedStatus, FieldMatcher, GroupHeading, GroupSelector, GroupSort,
72    GroupSortEntry, GroupSortKey, NameSortOrder, SortKey,
73};
74pub use locale::Locale;
75pub use options::TextCase;
76pub use options::{BibliographyOptions, CitationOptions, Config};
77pub use presets::{ContributorPreset, DatePreset, SortPreset, SubstitutePreset, TitlePreset};
78pub use registry::{RegistryEntry, StyleRegistry};
79pub use style::{
80    BibliographySpec, CitationCollapse, CitationField, CitationSpec, NoteStartTextCase,
81    SchemaWarning, Style, StyleInfo, StyleLink, StylePerson, StyleSource, check_citum_version,
82};
83pub use style_base::StyleBase;
84pub use template::{
85    LocalizedTemplateSpec, Rendering, Template, TemplateAddOperation, TemplateComponent,
86    TemplateComponentSelector, TemplateContributor, TemplateDate, TemplateGroup,
87    TemplateModifyOperation, TemplateNumber, TemplatePreset, TemplateReference,
88    TemplateRemoveOperation, TemplateTerm, TemplateTitle, TemplateVariable, TemplateVariant,
89    TemplateVariantDiff, TemplateVariants, TypeSelector, VerticalAlign, WrapConfig,
90    WrapPunctuation,
91};
92pub use version::*;
93
94/// Canonical style resolution interfaces and error types.
95pub use citum_resolver_api::{ResolutionError, ResolverError};
96
97/// Resolver interface used by schema-layer style inheritance.
98pub type StyleResolver = dyn citum_resolver_api::StyleResolver<Style = Style, Locale = Locale>;