options: add builder option

This commit is contained in:
Matt Bilker
2019-09-09 20:21:44 +00:00
parent 3a2efab4d4
commit 29a3f8461b
2 changed files with 30 additions and 1 deletions

View File

@@ -33,7 +33,7 @@ pub use crate::reader::Reader;
pub use crate::error::{KbinError, KbinErrorKind, Result};
pub use crate::node::{Node, NodeCollection};
pub use crate::node_types::StandardType;
pub use crate::options::Options;
pub use crate::options::{Options, OptionsBuilder};
pub use crate::to_text_xml::ToTextXml;
pub use crate::value::{Value, ValueArray};
pub use crate::writer::{Writer, Writeable};

View File

@@ -7,6 +7,12 @@ pub struct Options {
pub(crate) encoding: EncodingType,
}
#[derive(Default)]
pub struct OptionsBuilder {
compression: Compression,
encoding: EncodingType,
}
impl Options {
pub fn new(
compression: Compression,
@@ -18,6 +24,10 @@ impl Options {
}
}
pub fn builder() -> OptionsBuilder {
OptionsBuilder::default()
}
pub fn with_encoding(encoding: EncodingType) -> Self {
Self {
encoding,
@@ -25,3 +35,22 @@ impl Options {
}
}
}
impl OptionsBuilder {
pub fn compression(&mut self, compression: Compression) -> &mut Self {
self.compression = compression;
self
}
pub fn encoding(&mut self, encoding: EncodingType) -> &mut Self {
self.encoding = encoding;
self
}
pub fn build(self) -> Options {
Options {
compression: self.compression,
encoding: self.encoding,
}
}
}