usv 0.6.0

USV: Unicode Separated Values for data markup, including for spreadsheets, databases, text files, and more. Improves on CSV, TSV, ASV.
Documentation

Unicode Separated Values (USV)

Unicode separated values (USV) is a data format that uses Unicode symbol characters between data parts.

The USV repo is https://github.com/sixarm/usv.

USV characters

Separators:

  • ␟ U+241F Symbol for Unit Separator (US).

  • ␞ U+241E Symbol for Record Separator (RS).

  • ␝ U+241D Symbol for Group Separator (GS).

  • ␜ U+241C Symbol for File Separator (FS).

Modifiers:

  • ␛ U+241B Symbol for Escape (ESC).

  • ␗ U+2417 Symbol for End of Transmission Block (ETB).

Units

use usv::*;
let input = "a␟b␟";
let output: Units = input.units().collect();
assert_eq!(
    output,
    [
        Unit::from("a"),
        Unit::from("b"),
    ]
);

Records

use usv::*;
let input = "a␟b␟␞c␟d␟␞";
let output: Records = input.records().collect();
assert_eq!(
    output,
    [
        vec![
            Unit::from("a"),
            Unit::from("b"),
        ],
        vec![
            Unit::from("c"),
            Unit::from("d"),
        ],
    ]
);

Groups

use usv::*;
let input = "a␟b␟␞c␟d␟␞␝e␟f␟␞g␟h␟␞␝";
let output: Groups = input.groups().collect();
assert_eq!(
    output,
    [
        vec![
            vec![
                Unit::from("a"),
                Unit::from("b"),
            ],
            vec![
                Unit::from("c"),
                Unit::from("d"),
            ],
        ],
        vec![
            vec![
                Unit::from("e"),
                Unit::from("f"),
            ],
            vec![
                Unit::from("g"),
                Unit::from("h"),
            ],
        ],
    ]
);

Files

use usv::*;
let input = "a␟b␟␞c␟d␟␞␝e␟f␟␞g␟h␟␞␝␜i␟j␟␞k␟l␟␞␝m␟n␟␞o␟p␟␞␝␜";
let output: Files = input.files().collect();
assert_eq!(
    output,
    [
        vec![
            vec![
                vec![
                    Unit::from("a"),
                    Unit::from("b"),
                ],
                vec![
                    Unit::from("c"),
                    Unit::from("d"),
                ],
            ],
            vec![
                vec![
                    Unit::from("e"),
                    Unit::from("f"),
                ],
                vec![
                    Unit::from("g"),
                    Unit::from("h"),
                ],
             ],
        ],
        vec![
            vec![
                vec![
                    Unit::from("i"),
                    Unit::from("j"),
                ],
                vec![
                    Unit::from("k"),
                    Unit::from("l"),
                ],
            ],
            vec![
                vec![
                    Unit::from("m"),
                    Unit::from("n"),
                ],
                vec![
                    Unit::from("o"),
                    Unit::from("p"),
                ],
            ],
        ],
    ]
);