Skip to content

Commit 7bbf34e

Browse files
committed
Encode line breaks and tabs as Linear TSV
1 parent 222c9af commit 7bbf34e

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ quick-xml = "0.22"
1111
yaml-rust = "0.4"
1212
regex = "1"
1313
lazy_static = "1"
14+
cow-utils = "0.1"

src/main.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use yaml_rust::YamlLoader;
1010
use yaml_rust::yaml::Yaml;
1111
use regex::Regex;
1212
use lazy_static::lazy_static;
13+
use cow_utils::CowUtils;
1314

1415
macro_rules! fatalerr {
1516
() => ({
@@ -284,6 +285,7 @@ fn main() {
284285
let mut gmltoewkb = false;
285286
let mut gmlpos = false;
286287
let mut gmlcoll: Vec<Geometry> = vec![];
288+
287289
let start = Instant::now();
288290
loop {
289291
match reader.read_event(&mut buf) {
@@ -448,7 +450,9 @@ fn main() {
448450
break;
449451
}
450452
}
451-
table.columns[i].value.borrow_mut().push_str(&e.unescape_and_decode(&reader).unwrap_or_else(|err| fatalerr!("Error: failed to decode XML text node '{}': {}", String::from_utf8_lossy(e), err)).replace("\\", "\\\\"));
453+
let unescaped = e.unescaped().unwrap_or_else(|err| fatalerr!("Error: failed to unescape XML text node '{}': {}", String::from_utf8_lossy(e), err));
454+
let decoded = reader.decode(&unescaped).unwrap_or_else(|err| fatalerr!("Error: failed to decode XML text node '{}': {}", String::from_utf8_lossy(e), err));
455+
table.columns[i].value.borrow_mut().push_str(&decoded.cow_replace("\\", "\\\\").cow_replace("\r", "\\r").cow_replace("\n", "\\n").cow_replace("\t", "\\t"));
452456
if let Some(re) = &table.columns[i].include {
453457
if !re.is_match(&table.columns[i].value.borrow()) {
454458
filtered = true;

0 commit comments

Comments
 (0)