squidge shortens delimited data.
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);squidge can be configured to shorten lines in varying ways, based on its
Config.
use squidge::Config;use regex::Regex;let re = Regex::new("module").unwrap();let cfg = Config{// Delimiter to split the line ondelimiter:"\\",// Number of elements to ignore (for shortening) from the startignore_first_n:2,// Number of elements to ignore (for shortening) from the endignore_last_n:2,// Optional regex to determine which components to ignore while shorteningignore_regex:Some(re),};cargo:
cargo install --git https://github.com/dhth/squidge.git --bin sqdj$ sqdj -h
sqdj shortens delimited data
Usage: sqdj [OPTIONS]
Options:
-d, --delimiter <STRING> Delimiter [default: /]
-r, --ignore-regex <STRING> Regex for ignoring elements (ie, they won't be shortened)
-p, --input-path <STRING> Input file
-f, --ignore-first-n <NUMBER> Ignore first n elements [default: 0]
-l, --ignore-last-n <NUMBER> Ignore last n elements [default: 1]
-o, --output-delimiter <STRING> Output delimiter [default: /]
-s, --use-stdin Read input from stdin
-h, --help Print help
cat <<EOF | sqdjsrc/main/scala/admin/billing/ApplicationComponents.scalasrc/main/scala/admin/billing/Components.scalasrc/main/scala/admin/billing/Server.scalaEOF# s/m/s/a/b/ApplicationComponents.scala# s/m/s/a/b/Components.scala# s/m/s/a/b/Server.scalacat <<EOF | sqdj --ignore-first-n 1src/main/scala/admin/billing/ApplicationComponents.scalasrc/main/scala/admin/billing/Components.scalasrc/main/scala/admin/billing/Server.scalaEOF# src/m/s/a/b/ApplicationComponents.scala# src/m/s/a/b/Components.scala# src/m/s/a/b/Server.scalacat <<EOF | sqdj --ignore-last-n 2src/main/scala/admin/billing/ApplicationComponents.scalasrc/main/scala/admin/billing/Components.scalasrc/main/scala/admin/billing/Server.scalaEOF# s/m/s/a/billing/ApplicationComponents.scala# s/m/s/a/billing/Components.scala# s/m/s/a/billing/Server.scalacat <<EOF | sqdj --ignore-regex 'billing|utils'src/main/scala/admin/billing/api/PlayTapir.scalasrc/main/scala/admin/billing/api/billing/BillingApiModule.scalasrc/main/scala/admin/billing/api/utils/Authenticator.scalaEOF# 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