Skip to content

Commit

Permalink
Merge pull request #10 from jblondin/fix/remove-undetected-metadata
Browse files Browse the repository at this point in the history
Removed undetected metadata dialect options
  • Loading branch information
jblondin authored Mar 20, 2022
2 parents b7bbae5 + d46cbda commit 01eb1f8
Show file tree
Hide file tree
Showing 4 changed files with 5 additions and 75 deletions.
5 changes: 0 additions & 5 deletions examples/worldbank.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ extern crate csv_sniffer;

use std::path::Path;

use csv::Terminator;
use csv_sniffer::metadata::*;

fn main() {
Expand All @@ -18,10 +17,6 @@ fn main() {
num_preamble_rows: 4,
},
quote: Quote::Some(b'"'),
doublequote_escapes: true,
comment: Comment::Disabled,
escape: Escape::Disabled,
terminator: Terminator::CRLF,
flexible: false,
};
let mut reader = dialect.open_path(data_filepath).unwrap();
Expand Down
56 changes: 4 additions & 52 deletions src/metadata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use std::fs::File;
use std::io::{Read, Seek};
use std::path::Path;

use csv::{Reader, ReaderBuilder, Terminator};
use csv::{Reader, ReaderBuilder};

use error::*;
use field_type::Type;
Expand Down Expand Up @@ -41,45 +41,22 @@ impl fmt::Display for Metadata {

/// Dialect-level metadata. This type encapsulates the details to be used to derive a
/// `ReaderBuilder` object (in the [`csv`](https://docs.rs/csv) crate).
///
/// Not all components of this type are currently detected by the sniffer, and may be detected in
/// the future.
#[derive(Clone)]
pub struct Dialect {
/// CSV delimiter (field separator). Detected by sniffer.
/// CSV delimiter (field separator).
pub delimiter: u8,
/// [`Header`](struct.Header.html) subtype (header row boolean and number of preamble rows).
/// Detected by sniffer.
pub header: Header,
/// Record terminator. Currently not detected by sniffer; defaults to `Terminator::CRLF`.
pub terminator: Terminator,
/// Record quoting details. Detected by sniffer.
/// Record quoting details.
pub quote: Quote,
/// Whether or not doubled quotes are interpreted as escapes. Currently not detected by sniffer;
/// defaults to `true`.
pub doublequote_escapes: bool,
/// Character used as escape, if any. Currently not detected by sniffer; defaults to
/// `Escape::Disabled` (to escape a quote, use double quotes).
pub escape: Escape,
/// Character used as comment, if any. Currently not detected by sniffer; defaults to
/// `Comment::Disabled`.
pub comment: Comment,
/// Whether or not the number of fields in a record is allowed to change. Detected by sniffer.
/// Whether or not the number of fields in a record is allowed to change.
pub flexible: bool,
}
impl PartialEq for Dialect {
fn eq(&self, other: &Dialect) -> bool {
self.delimiter == other.delimiter
&& self.header == other.header
&& match (self.terminator, other.terminator) {
(Terminator::CRLF, Terminator::CRLF) => true,
(Terminator::Any(left), Terminator::Any(right)) => left == right,
_ => false,
}
&& self.quote == other.quote
&& self.doublequote_escapes == other.doublequote_escapes
&& self.escape == other.escape
&& self.comment == other.comment
&& self.flexible == other.flexible
}
}
Expand All @@ -88,11 +65,7 @@ impl fmt::Debug for Dialect {
f.debug_struct("Dialect")
.field("delimiter", &char::from(self.delimiter))
.field("header", &self.header)
.field("terminator", &self.terminator)
.field("quote", &self.quote)
.field("doublequote_escapes", &self.doublequote_escapes)
.field("escape", &self.escape)
.field("comment", &self.comment)
.field("flexible", &self.flexible)
.finish()
}
Expand All @@ -115,23 +88,6 @@ impl fmt::Display for Dialect {
Quote::None => "none".into(),
}
)?;
writeln!(f, "\tDouble-quote escapes?: {}", self.doublequote_escapes)?;
writeln!(
f,
"\tEscape character: {}",
match self.escape {
Escape::Enabled(chr) => format!("{}", char::from(chr)),
Escape::Disabled => "none".into(),
}
)?;
writeln!(
f,
"\tComment character: {}",
match self.comment {
Comment::Enabled(chr) => format!("{}", char::from(chr)),
Comment::Disabled => "none".into(),
}
)?;
writeln!(f, "\tFlexible: {}", self.flexible)
}
}
Expand All @@ -155,10 +111,6 @@ impl From<Dialect> for ReaderBuilder {
let mut bldr = ReaderBuilder::new();
bldr.delimiter(dialect.delimiter)
.has_headers(dialect.header.has_header_row)
.terminator(dialect.terminator)
.escape(dialect.escape.into())
.double_quote(dialect.doublequote_escapes)
.comment(dialect.comment.into())
.flexible(dialect.flexible);

match dialect.quote {
Expand Down
6 changes: 1 addition & 5 deletions src/sniffer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use std::fs::File;
use std::io::{Read, Seek, SeekFrom};
use std::path::Path;

use csv::{self, Reader, StringRecord, Terminator};
use csv::{self, Reader, StringRecord};
use csv_core as csvc;
use regex::Regex;

Expand Down Expand Up @@ -128,11 +128,7 @@ impl Sniffer {
num_preamble_rows: self.num_preamble_rows.unwrap(),
has_header_row: self.has_header_row.unwrap(),
},
terminator: Terminator::CRLF,
quote: self.quote.clone().unwrap(),
doublequote_escapes: true,
escape: Escape::Disabled,
comment: Comment::Disabled,
flexible: self.flexible.unwrap(),
},
num_fields: self.delimiter_freq.unwrap() + 1,
Expand Down
13 changes: 0 additions & 13 deletions tests/delimiter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ extern crate csv_sniffer;

use std::path::Path;

use csv::Terminator;
use csv_sniffer::metadata::*;
use csv_sniffer::{SampleSize, Sniffer, Type};

Expand All @@ -26,11 +25,7 @@ fn test_semicolon() {
has_header_row: true,
num_preamble_rows: 0,
},
terminator: Terminator::CRLF,
quote: Quote::None,
doublequote_escapes: true,
escape: Escape::Disabled,
comment: Comment::Disabled,
flexible: false
},
num_fields: 5,
Expand Down Expand Up @@ -64,11 +59,7 @@ fn test_comma() {
has_header_row: true,
num_preamble_rows: 0,
},
terminator: Terminator::CRLF,
quote: Quote::None,
doublequote_escapes: true,
escape: Escape::Disabled,
comment: Comment::Disabled,
flexible: false
},
num_fields: 5,
Expand Down Expand Up @@ -102,11 +93,7 @@ fn test_flexible() {
has_header_row: true,
num_preamble_rows: 0,
},
terminator: Terminator::CRLF,
quote: Quote::None,
doublequote_escapes: true,
escape: Escape::Disabled,
comment: Comment::Disabled,
flexible: true
},
num_fields: 7,
Expand Down

0 comments on commit 01eb1f8

Please sign in to comment.