schemaorg_rs/lib.rs
1//! # schemaorg-rs
2//!
3//! A high-performance Rust library for extracting and validating
4//! [Schema.org](https://schema.org) structured data from HTML documents.
5//!
6//! ## Supported Formats
7//!
8//! - **JSON-LD** -- `<script type="application/ld+json">`
9//! - **Microdata** -- `itemscope`/`itemprop` attributes
10//! - **`RDFa` Lite** -- `vocab`/`typeof`/`property` attributes
11//!
12//! ## Quick Start
13//!
14//! ```no_run
15//! # #[cfg(feature = "extraction")]
16//! # {
17//! use schemaorg_rs::extract_all;
18//!
19//! let html = r#"<html><head>
20//! <script type="application/ld+json">{
21//! "@context": "https://schema.org",
22//! "@type": "Product",
23//! "name": "Widget"
24//! }</script>
25//! </head></html>"#;
26//!
27//! let graph = extract_all(html).unwrap();
28//! assert_eq!(graph.nodes[0].types, vec!["Product"]);
29//! # }
30//! ```
31
32// Lints
33#![warn(missing_docs)]
34#![warn(unreachable_pub)]
35#![warn(clippy::pedantic)]
36// Pedantic exceptions: these fire on every public type/method and add noise
37// without meaningful benefit for a data-extraction library.
38#![allow(clippy::module_name_repetitions)]
39#![allow(clippy::must_use_candidate)]
40
41/* Core modules (always available) */
42pub mod error;
43pub mod types;
44
45/* Extraction engine (feature-gated) */
46#[cfg(feature = "extraction")]
47pub mod extraction;
48#[cfg(feature = "extraction")]
49pub mod graph;
50
51/* Vocabulary + validation engine (feature-gated) */
52#[cfg(feature = "validation")]
53pub mod validation;
54#[cfg(feature = "validation")]
55pub mod vocabulary;
56
57/* Rich Results profile engine (feature-gated) */
58#[cfg(feature = "profiles")]
59pub mod profiles;
60
61/* WASM bindings (feature-gated) */
62#[cfg(feature = "wasm")]
63pub mod wasm;
64
65/* SARIF output (feature-gated, used by CLI) */
66#[cfg(feature = "cli")]
67pub mod sarif;
68
69/* Public re-exports: always available */
70pub use error::{ExtractionError, ExtractionWarning, WarningCode};
71pub use types::{SchemaNode, SchemaValue, SourceFormat, SourceLocation};
72
73/* Public re-exports: extraction feature */
74#[cfg(feature = "extraction")]
75pub use extraction::{
76 ExtractionOutput, Extractor, JsonLdExtractor, MicrodataExtractor, RdfaLiteExtractor,
77};
78#[cfg(feature = "extraction")]
79pub use graph::{extract_all, StructuredDataGraph};
80#[cfg(feature = "extraction")]
81pub use scraper::Html;
82
83/* Public re-exports: validation feature */
84#[cfg(feature = "validation")]
85pub use validation::{DiagnosticCode, Severity, ValidationDiagnostic, ValidationResult};
86
87/* Public re-exports: profiles feature */
88#[cfg(feature = "profiles")]
89pub use profiles::{Eligibility, Profile, ProfileError, ProfileRegistry, ProfileResult};