mirror of
https://github.com/rzmk/czv.git
synced 2025-12-27 19:27:00 +00:00
feat: add czv, czv-wasm, and czv-python (init release)
This commit is contained in:
commit
9799ab694b
40 changed files with 70383 additions and 0 deletions
108
README.md
Normal file
108
README.md
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
# czv
|
||||
|
||||
czv is CSV content manipulation/analysis libraries with support for Rust, Python, and WebAssembly (JavaScript and TypeScript).
|
||||
|
||||
## Installation and examples
|
||||
|
||||
### Rust
|
||||
|
||||
```bash
|
||||
cargo install czv
|
||||
```
|
||||
|
||||
```rust
|
||||
use czv::{
|
||||
count::RowCount,
|
||||
Result
|
||||
};
|
||||
|
||||
fn main() -> Result<()> {
|
||||
let data = "\
|
||||
fruits,price
|
||||
apple,2.50
|
||||
banana,3.00
|
||||
strawberry,1.50
|
||||
";
|
||||
let output = RowCount::new()
|
||||
.file_data(data)
|
||||
.execute()?;
|
||||
println!("{output}"); // 3
|
||||
Ok(())
|
||||
}
|
||||
```
|
||||
|
||||
### JavaScript/TypeScript (WebAssembly)
|
||||
|
||||
```bash
|
||||
bun install czv
|
||||
```
|
||||
|
||||
Or use `npm`, `pnpm`, or `yarn` instead of `bun`.
|
||||
|
||||
```js
|
||||
import init, * as czv from "czv";
|
||||
// Must run `await init()` or `initSync()` first for web use
|
||||
await init();
|
||||
|
||||
const data = `fruits,price
|
||||
apple,2.50
|
||||
banana,3.00
|
||||
strawberry,1.50`;
|
||||
|
||||
const output = czv.rowCount(data);
|
||||
console.log(output);
|
||||
```
|
||||
|
||||
### Python
|
||||
|
||||
```bash
|
||||
pip install czv
|
||||
```
|
||||
|
||||
```python
|
||||
import czv
|
||||
|
||||
data = """fruits,price
|
||||
apple,2.50
|
||||
banana,3.00
|
||||
strawberry,1.50"""
|
||||
|
||||
output = czv.row_count(data, False)
|
||||
|
||||
print(output)
|
||||
```
|
||||
|
||||
## Available operations
|
||||
|
||||
| czv (Rust) | czv-wasm (JS/TS) | czv-python | Summary |
|
||||
| ---------------------------------------- | -------------------------------------- | ----------------------------------------------- | ------------------------- |
|
||||
| [`count::RowCount`](czv/src/count.rs) | [`rowCount`](czv-wasm/src/count.rs) | [`count.row_count`](czv-python/src/count.rs) | Get the number of rows |
|
||||
| [`count::ColumnCount`](czv/src/count.rs) | [`columnCount`](czv-wasm/src/count.rs) | [`count.column_count`](czv-python/src/count.rs) | Get the number of columns |
|
||||
|
||||
## Development
|
||||
|
||||
Each package has its own `README.md` with more info for that particular package.
|
||||
|
||||
You may generate docs with:
|
||||
|
||||
```bash
|
||||
cargo doc --no-deps --workspace --open
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
czv is inspired by the command-line tools [xsv](https://github.com/BurntSushi/xsv) and [qsv](https://github.com/jqnatividad/qsv), but czv is not intended to cover all of their commands or features.
|
||||
|
||||
Not all provided libraries may be in sync at a given time. See the [available operations table](#available-operations) for a common operation list between libraries (not all implementations for a given operation may be in sync either, for example they may not have the same builder/function arguments).
|
||||
|
||||
Here are a few expected features for each provided operation:
|
||||
|
||||
- czv (Rust)
|
||||
- Provide both a builder (recommended and common for conditional parameters) and a function
|
||||
- Provide documentation (docstrings) in Markdown format
|
||||
- czv-wasm (Web, JavaScript and TypeScript)
|
||||
- Use camelCase for exported functions
|
||||
- Include common browser support to run in-browser
|
||||
- Provide documentation (dosctrings) in TSDoc format
|
||||
- czv-python
|
||||
- Provide documentation (docstrings) and type hints for IDEs when developers are using the Python library (sourced from [czv-python/czv.pyi](czv-python/czv.pyi)) in Markdown format
|
||||
Loading…
Add table
Add a link
Reference in a new issue