#![forbid(unsafe_code)]
#![warn(missing_docs)]
pub mod amount;
pub mod cost;
pub mod directive;
pub mod display_context;
pub mod extract;
pub mod format;
pub mod identifiers;
pub mod implicit_prices;
pub mod intern;
pub mod inventory;
pub mod position;
pub mod shift_spans_impls;
pub mod span;
pub mod synthetic;
pub mod visit;
#[cfg(kani)]
mod kani_proofs;
pub use amount::{Amount, AmountParseError, AmountParseErrorReason, IncompleteAmount};
pub use cost::{BookedCost, BookedCostInvariantError, Cost, CostNumber, CostSpec};
pub use directive::{
Balance, Close, Commodity, Custom, Directive, DirectivePriority, Document, Event, MetaValue,
Metadata, Note, Open, Pad, Posting, Price, PriceAnnotation, PriceKind, Query, Transaction,
parse_precision_meta, sort_directives,
};
pub use display_context::{DEFAULT_CURRENCY, DisplayContext, Precision};
pub use extract::{
DEFAULT_CURRENCIES, extract_accounts, extract_accounts_iter, extract_currencies,
extract_currencies_iter, extract_links, extract_links_iter, extract_payees,
extract_payees_iter, extract_tags, extract_tags_iter,
};
pub use format::{
Alignment, FormatConfig, FormatLine, format_directive_lines, format_directives,
format_posting_line, posting_format_line, render_lines, resolve_alignment,
};
pub use identifiers::{
ACCOUNT_TYPES, Account, Currency, Link, Tag, account_type, is_subaccount_or_equal,
};
pub use implicit_prices::extract_per_unit_price;
pub use intern::{InternedStr, StringInterner};
pub use inventory::{
AccountedBookingError, BookingError, BookingMethod, BookingResult, Inventory, ReductionScope,
};
pub use position::Position;
pub use span::{SYNTHESIZED_FILE_ID, ShiftSpans, Span, Spanned};
pub use visit::{visit_accounts, visit_currencies};
pub type NaiveDate = jiff::civil::Date;
pub use rust_decimal::Decimal;
#[must_use]
pub fn naive_date(year: i32, month: u32, day: u32) -> Option<NaiveDate> {
let y = i16::try_from(year).ok()?;
let m = i8::try_from(month).ok()?;
let d = i8::try_from(day).ok()?;
NaiveDate::new(y, m, d).ok()
}
#[cfg(feature = "rkyv")]
pub use intern::{AsDecimal, AsInternedStr, AsNaiveDate};