Crate ngdp_bpsv

Crate ngdp_bpsv 

Source
Expand description

§ngdp-bpsv

A comprehensive parser and writer for BPSV (Blizzard Pipe-Separated Values) format, used throughout Blizzard’s NGDP (Next Generation Distribution Pipeline) system.

BPSV is a structured data format with typed columns, sequence numbers, and pipe-separated values.

§Format Structure

FieldName!TYPE:length|AnotherField!TYPE:length
## seqn = 12345
value1|value2
value3|value4

§Quick Start

§Parsing BPSV Data

use ngdp_bpsv::BpsvDocument;

let data = "Region!STRING:0|BuildId!DEC:4\n## seqn = 12345\nus|1234\neu|5678";

let doc = BpsvDocument::parse(data)?;
println!("Sequence: {:?}", doc.sequence_number());
println!("Rows: {}", doc.rows().len());

§Building BPSV Data

use ngdp_bpsv::{BpsvBuilder, BpsvFieldType, BpsvValue};

let mut builder = BpsvBuilder::new();
builder.add_field("Region", BpsvFieldType::String(0))?;
builder.add_field("BuildId", BpsvFieldType::Decimal(4))?;
builder.set_sequence_number(12345);

builder.add_row(vec![
    BpsvValue::String("us".to_string()),
    BpsvValue::Decimal(1234),
])?;

let bpsv_output = builder.build()?;

Re-exports§

pub use builder::BpsvBuilder;
pub use document::BpsvDocument;
pub use error::Error;
pub use error::Result;
pub use field_type::BpsvFieldType;
pub use interned_document::InternedBpsvDocument;
pub use interned_document::InternedRow;
pub use interner::InternedValue;
pub use interner::StringInterner;
pub use parser::BpsvParser;
pub use schema::BpsvField;
pub use schema::BpsvSchema;
pub use value::BpsvValue;

Modules§

builder
BPSV document builder for creating BPSV content programmatically
document
BPSV document representation
error
Error types for BPSV parsing and building
field_type
BPSV field type definitions and parsing
interned_document
BPSV document with string interning for memory efficiency
interner
String interning for efficient memory usage with repeated values
parser
BPSV document parser
schema
BPSV schema definitions for field structure
value
BPSV value types with type-safe conversions