usv-rust-crate

Unicode Separated Values (USV) Rust crate

https://github.com/sixarm/usv-rust-crate

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (8.7%) to scientific vocabulary
Last synced: 8 months ago · JSON representation ·

Repository

Unicode Separated Values (USV) Rust crate

Basic Info
  • Host: GitHub
  • Owner: SixArm
  • Language: Rust
  • Default Branch: main
  • Size: 135 KB
Statistics
  • Stars: 4
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created about 2 years ago · Last pushed about 1 year ago
Metadata Files
Readme Citation

README.md

Unicode Separated Values (USV) ™

Unicode Separated Values (USV) ™ is a data format that uses Unicode characters for markup.

This USV crate implements the USV specification: https://github.com/sixarm/usv.

This USV crate and aims to help developers build new USV applications, tools, and workflows.

USV characters

Separators:

  • File Separator (FS) is U+001C or U+241C ␜

  • Group Separator (GS) is U+001D or U+241D ␝

  • Record Separator (RS) is U+001E or U+241E ␞

  • Unit Separator (US) is U+001F or U+241F ␟

Modifiers:

  • Escape (ESC) is U+001B or U+241B ␛

  • End of Transmission (EOT) is U+0004 or U+2404 ␄

Units

rust use usv::*; let str = "a␟b␟"; let units: Units = str.units().collect(); assert_eq!(units, ["a", "b"]); assert_eq!(units.into_usv_string(), str);

Records

rust use usv::*; let str = "a␟b␟␞c␟d␟␞"; let records: Records = str.records().collect(); assert_eq!(records, [["a", "b"],["c", "d"]]); assert_eq!(records.into_usv_string(), str);

Groups

rust use usv::*; let str = "a␟b␟␞c␟d␟␞␝e␟f␟␞g␟h␟␞␝"; let groups: Groups = str.groups().collect(); assert_eq!(groups, [[["a", "b"],["c", "d"]],[["e", "f"],["g", "h"]]]); assert_eq!(groups.into_usv_string(), str);

Files

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

Architecture

The architecture of this crate looks like this, in order of importance:

  • lib.rs: the library entry point.

  • constants.rs: constants for USV characters.

  • token.rs: the USV Token enumerator for returning parser results.

  • iter/: iterators for units, records, groups, files, tokens.

  • style/: style sets of characters for symbols, controls, braces.

  • layout/: layout formats for lines, visual displays, and editors.

  • from/: convert from one thing into another thing.

  • into_usv_string: trait and impl to convert from data into a usv string.

  • examples.rs: data strings suitable for demos and tests.

  • str_ext.rs: string extension traits for parsing USV.

  • svec.rs: a simple macro for creating string vectors.

  • bench/: benchmark tests; this is work in progress.

  • tests/: integration tests placeholder; not needed yet.

Token

A token is the underlying USV enumeration for parsing a string to output:

no_run pub enum Token { Unit(String), UnitSeparator, RecordSeparator, GroupSeparator, FileSeparator, EndOfTransmission, }

Type aliases

  • Unit = String

  • Units = Vec

  • Record = Units

  • Records = Vec

  • Group = Records

  • Groups = Vec

  • File = Groups

  • Files = Vec

Legal protection for standardization

The USV project aims to become a free open source IETF standard and IANA standard, much like the standards for CSV and TDF.

Until the standardization happens, the terms "Unicode Separated Values" and "USV" are both trademarks of this project. This repository is copyright 2022-2024. The trademarks and copyrights are by Joel Parker Henderson, me, an individual, not a company.

When IETF and IANA approve the submissions as a standard, then the trademarks and copyright will go to a free libre open source software advocacy foundation. We welcome advice about how to do this well.

Conclusion

USV is helping us with data projects. We hope USV may help you too.

We welcome constructive feedback about USV, as well as git issues, pull requests, and standardization help.

Owner

  • Name: SixArm
  • Login: SixArm
  • Kind: organization
  • Email: sixarm@sixarm.com
  • Location: San Francisco

SixArm Software

Citation (CITATION.cff)

cff-version: 1.2.0
title: Unicode Separated Values (USV) ™
message: >-
  If you use this work and you want to cite it,
  then you can use the metadata from this file.
type: software
authors:
  - given-names: Joel Parker
    family-names: Henderson
    email: joel@joelparkerhenderson.com
    affiliation: joelparkerhenderson.com
    orcid: 'https://orcid.org/0009-0000-4681-282X'
identifiers:
  - type: url
    value: ''
    description: Unicode Separated Values (USV) ™
repository-code: ''
abstract: >-
  Unicode Separated Values (USV) ™
license: See license file

GitHub Events

Total
  • Push event: 1
Last Year
  • Push event: 1

Committers

Last synced: 12 months ago

All Time
  • Total Commits: 39
  • Total Committers: 1
  • Avg Commits per committer: 39.0
  • Development Distribution Score (DDS): 0.0
Past Year
  • Commits: 1
  • Committers: 1
  • Avg Commits per committer: 1.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Joel Parker Henderson j****l@j****m 39
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 12 months ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels

Dependencies

Cargo.lock cargo
Cargo.toml cargo