https://github.com/dhth/squidge
squidge shortens delimited data
https://github.com/dhth/squidge
delimited-data shortener
Last synced: 11 months ago
JSON representation
squidge shortens delimited data
- Host: GitHub
- URL: https://github.com/dhth/squidge
- Owner: dhth
- License: mit
- Created: 2024-09-22T22:05:43.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-18T15:03:32.000Z (over 1 year ago)
- Last Synced: 2024-11-19T00:46:05.520Z (over 1 year ago)
- Topics: delimited-data, shortener
- Language: Rust
- Homepage: https://docs.rs/squidge/latest/squidge
- Size: 59.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
squidge
`squidge` shortens delimited data.
```rust
use squidge::{Config, shorten_line};
let line = "module/submodule/service/lib.rs";
let result = shorten_line(&Config::default(), &line);
let expected = vec!["m", "s", "s", "lib.rs"];
assert_eq!(result, expected);
```
🛠️ Configuration
---
`squidge` can be configured to shorten lines in varying ways, based on its
`Config`.
```rust
use squidge::Config;
use regex::Regex;
let re = Regex::new("module").unwrap();
let cfg = Config {
// Delimiter to split the line on
delimiter: "\\",
// Number of elements to ignore (for shortening) from the start
ignore_first_n: 2,
// Number of elements to ignore (for shortening) from the end
ignore_last_n: 2,
// Optional regex to determine which components to ignore while shortening
ignore_regex: Some(re),
};
```
🔧 squidge as a binary: sqdj
---
### 💾 Installation
**cargo**:
```sh
cargo install --git https://github.com/dhth/squidge.git --bin sqdj
```
### ⚡️ Usage
```text
$ sqdj -h
sqdj shortens delimited data
Usage: sqdj [OPTIONS]
Options:
-d, --delimiter Delimiter [default: /]
-r, --ignore-regex Regex for ignoring elements (ie, they won't be shortened)
-p, --input-path Input file
-f, --ignore-first-n Ignore first n elements [default: 0]
-l, --ignore-last-n Ignore last n elements [default: 1]
-o, --output-delimiter Output delimiter [default: /]
-s, --use-stdin Read input from stdin
-h, --help Print help
```
```bash
cat << EOF | sqdj
src/main/scala/admin/billing/ApplicationComponents.scala
src/main/scala/admin/billing/Components.scala
src/main/scala/admin/billing/Server.scala
EOF
# s/m/s/a/b/ApplicationComponents.scala
# s/m/s/a/b/Components.scala
# s/m/s/a/b/Server.scala
```
```bash
cat << EOF | sqdj --ignore-first-n 1
src/main/scala/admin/billing/ApplicationComponents.scala
src/main/scala/admin/billing/Components.scala
src/main/scala/admin/billing/Server.scala
EOF
# src/m/s/a/b/ApplicationComponents.scala
# src/m/s/a/b/Components.scala
# src/m/s/a/b/Server.scala
```
```bash
cat << EOF | sqdj --ignore-last-n 2
src/main/scala/admin/billing/ApplicationComponents.scala
src/main/scala/admin/billing/Components.scala
src/main/scala/admin/billing/Server.scala
EOF
# s/m/s/a/billing/ApplicationComponents.scala
# s/m/s/a/billing/Components.scala
# s/m/s/a/billing/Server.scala
```
```bash
cat << EOF | sqdj --ignore-regex 'billing|utils'
src/main/scala/admin/billing/api/PlayTapir.scala
src/main/scala/admin/billing/api/billing/BillingApiModule.scala
src/main/scala/admin/billing/api/utils/Authenticator.scala
EOF
# s/m/s/a/billing/a/PlayTapir.scala
# s/m/s/a/billing/a/billing/BillingApiModule.scala
# s/m/s/a/billing/a/utils/Authenticator.scala
```