blocks 0.1.0

A high-performance Rust library for block-based content editing with JSON, Markdown, and HTML support
Documentation
//! # Blocks Editor Library
//!
//! A high-performance Rust library for creating and converting block-based content
//! to Markdown and HTML formats.
//!
//! ## Features
//!
//! - Support for multiple block types (text, headers, lists, code, quotes, links, images)
//! - Efficient conversion to Markdown and HTML
//! - Type-safe block system with comprehensive error handling
//! - Zero-copy operations where possible
//! - Well-tested with property-based testing
//!
//! ## Example
//!
//! ```rust
//! use blocks::{Block, BlockType, Document, ConversionFormat};
//!
//! let mut doc = Document::new();
//! doc.add_block(Block::new(
//!     BlockType::Header { level: 1 },
//!     "Hello World".to_string()
//! ));
//!
//! let markdown = doc.to_format(ConversionFormat::Markdown).unwrap();
//! assert_eq!(markdown, "# Hello World\n\n");
//! ```

pub mod block;
pub mod builders;
pub mod cache;
pub mod converters;
pub mod diff;
pub mod history;
pub mod pipeline;
pub mod plugins;
pub mod sanitizer;
pub mod stats;

#[cfg(test)]
mod comprehensive_tests;
pub mod document;
pub mod error;

#[cfg(test)]
mod property_tests;

pub use block::{Block, BlockType, ButtonStyle, CalloutType, EmbedType, ListType};
pub use builders::{BlockBuilder, DocumentBuilder};
pub use cache::{CacheStats, ConversionCache};
pub use converters::{ConversionFormat, Converter, Convertible, JsonSerializable};
pub use diff::{Change, DiffResult, DocumentDiffer, DocumentMerger, MergeStrategy};
pub use document::Document;
pub use error::{BlocksError, Result};
pub use history::{DocumentOperation, HistoryManager};
pub use pipeline::{block_middlewares, document_middlewares, BlockPipeline, DocumentPipeline};
pub use plugins::{BlockProcessor, BlockValidator, ContentTransformer, PluginRegistry};
pub use sanitizer::ContentSanitizer;
pub use stats::{BlockStats, DocumentAnalyzer, DocumentIssue, DocumentStats, IssueSeverity};

/// Current version of the blocks library
pub const VERSION: &str = env!("CARGO_PKG_VERSION");

#[cfg(test)]
mod integration_tests {
    use super::*;

    #[test]
    fn test_basic_workflow() {
        let mut doc = Document::new();
        doc.add_block(Block::new(
            BlockType::Header { level: 1 },
            "Test Header".to_string(),
        ));
        doc.add_block(Block::new(BlockType::Text, "Test content".to_string()));

        let markdown = doc.to_format(ConversionFormat::Markdown).unwrap();
        assert!(markdown.contains("# Test Header"));
        assert!(markdown.contains("Test content"));

        let html = doc.to_format(ConversionFormat::Html).unwrap();
        assert!(html.contains("<h1>Test Header</h1>"));
        assert!(html.contains("<p>Test content</p>"));
    }
}