Skip to content

fdncred/nu_plugin_strutils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nu_plugin_strutils

This is a Nushell plugin called "strutils".

Available Commands

  • str compress - Compress a string using brotli, flate, or zlib
  • str decompress - Decompress a string using brotli, flate, or zlib
  • str dedent - Remove common leading whitespace from text
  • str deunicode - Replace unicode characters with ASCII counterparts
  • str indent - Add leading spaces to each line of text
  • str similarity - Calculate edit distance between strings using various algorithms
  • str wrap - Wrap text to a specified width

Installing

> cargo install --path .

String utilities for nushell

This plugin implements a some string utilities that are not included in nushell.

str deunicode

str deunicode replaces unicode accented characters with their ASCII counterparts based on the deunicode crate.

Usage:

> plugin add ~/.cargo/bin/nu_plugin_strutils
> plugin use strutils
> 'A…C' | str deunicode
A...C

str similarity

str similarity is an older plugin that I thought fit here since this is a common plugin for string utilities.

This plugin uses the textdistance.rs crate to calculate edit distance

Usage:

Single Algorithm Usage

 "nushell" | str similarity "nutshell" --algorithm levenshtein
1

All Algorithms Usage

 "nushell" | str similarity "nutshell" -all
╭────┬────────────────────────────┬──────────╮
│  # │         algorithm          │ distance │
├────┼────────────────────────────┼──────────┤
│  0 │ bag                        │        1 │
│  1 │ cosine                     │     0.94 │
│  2 │ damerau_levenshtein        │        1 │
│  3 │ entropy_ncd                │     0.05 │
│  4 │ hamming                    │        5 │
│  5 │ jaccard                    │     0.88 │
│  6 │ jaro                       │     0.96 │
│  7 │ jaro_winkler               │     0.97 │
│  8 │ levenshtein                │        1 │
│  9 │ longest_common_subsequence │        7 │
│ 10 │ longest_common_substring   │        5 │
│ 11 │ length                     │        1 │
│ 12 │ lig3                       │     0.86 │
│ 13 │ mlipns                     │        0 │
│ 14 │ overlap                    │        1 │
│ 15 │ prefix                     │        2 │
│ 16 │ ratcliff_obershelp         │     0.93 │
│ 17 │ roberts                    │     0.93 │
│ 18 │ sift4_common               │        1 │
│ 19 │ sift4_simple               │        1 │
│ 20 │ smith_waterman             │        6 │
│ 21 │ sorensen_dice              │     0.93 │
│ 22 │ suffix                     │        5 │
│ 23 │ tversky                    │     0.88 │
│ 24 │ yujian_bo                  │     0.12 │
├────┼────────────────────────────┼──────────┤
│  # │         algorithm          │ distance │
╰────┴────────────────────────────┴──────────╯

All Algorithms Normalized Usage

The output is normalized between 0 and 1

 "nushell" | str similarity "nutshell" --all --normalize
╭────┬────────────────────────────┬──────────╮
│  # │         algorithm          │ distance │
├────┼────────────────────────────┼──────────┤
│  0 │ bag                        │     0.12 │
│  1 │ cosine                     │     0.94 │
│  2 │ damerau_levenshtein        │     0.12 │
│  3 │ entropy_ncd                │     0.05 │
│  4 │ hamming                    │     0.62 │
│  5 │ jaccard                    │     0.88 │
│  6 │ jaro                       │     0.96 │
│  7 │ jaro_winkler               │     0.97 │
│  8 │ levenshtein                │     0.12 │
│  9 │ longest_common_subsequence │     0.88 │
│ 10 │ longest_common_substring   │     0.62 │
│ 11 │ length                     │     0.12 │
│ 12 │ lig3                       │     0.86 │
│ 13 │ mlipns                     │        0 │
│ 14 │ overlap                    │        1 │
│ 15 │ prefix                     │     0.25 │
│ 16 │ ratcliff_obershelp         │     0.93 │
│ 17 │ roberts                    │     0.93 │
│ 18 │ sift4_common               │     0.12 │
│ 19 │ sift4_simple               │     0.12 │
│ 20 │ smith_waterman             │     0.75 │
│ 21 │ sorensen_dice              │     0.93 │
│ 22 │ suffix                     │     0.62 │
│ 23 │ tversky                    │     0.88 │
│ 24 │ yujian_bo                  │     0.12 │
├────┼────────────────────────────┼──────────┤
│  # │         algorithm          │ distance │
╰────┴────────────────────────────┴──────────╯

List the available algorithms and aliases

 "nushell" | str similarity "nutshell" --list
╭────┬────────────────────────────┬──────────╮
  # │         algorithm          │  alias   │
├────┼────────────────────────────┼──────────┤
  0  bag                         bag      
  1  cosine                      cos      
  2  damerau_levenshtein         dlev     
  3  entropy_ncd                 entncd   
  4  hamming                     ham      
  5  jaccard                     jac      
  6  jaro                        jar      
  7  jaro_winkler                jarw     
  8  levenshtein                 lev      
  9  longest_common_subsequence  lcsubseq 
 10  longest_common_substring    lcsubstr 
 11  length                      len      
 12  lig3                        lig      
 13  mlipns                      mli      
 14  overlap                     olap     
 15  prefix                      pre      
 16  ratcliff_obershelp          rat      
 17  roberts                     rob      
 18  sift4_common                scom     
 19  sift4_simple                ssim     
 20  smith_waterman              smithw   
 21  sorensen_dice               soredice 
 22  suffix                      suf      
 23  tversky                     tv       
 24  yujian_bo                   ybo      
├────┼────────────────────────────┼──────────┤
  # │         algorithm          │  alias   │
╰────┴────────────────────────────┴──────────╯

str compress

str compress will convert nushell values to a string and then compress that string using the specified method with the parameters provided.

Usage:

Brotli
 "ABCDEFG" | str compress --brotli
Length: 11 (0xb) bytes | printable whitespace ascii_other non_ascii
00000000:   07 03 80 41  42 43 44 45  46 47 03                   ••×ABCDEFG•
Flate
 "ABCDEFG" | str compress --flate
Length: 13 (0xd) bytes | printable whitespace ascii_other non_ascii
00000000:   73 74 72 76  71 75 73 07  00                         strvqus•0
Zlib
 "ABCDEFG" | str compress --zlib
Length: 15 (0xf) bytes | printable whitespace ascii_other non_ascii
00000000:   78 5e 73 74  72 76 71 75  73 07 00 07  5b 01 dd      x^strvqus•0•[•×

str decompress

str decompress is meant to be the counterpart of str compress and decompress whatever it compresses.

Usage:

Brotli
 "ABCDEFG" | str compress --brotli | str decompress --brotli
ABCDEFG
Flate
 "ABCDEFG" | str compress --flate | str decompress --flate
ABCDEFG
Zlib
 "ABCDEFG" | str compress --zlib | str decompress --zlib
ABCDEFG

str dedent

str dedent removes common leading whitespace from every line in a text while preserving relative indentation.

Usage:

 "    line 1\n    line 2\n    line 3" | str dedent
line 1
line 2
line 3

str indent

str indent adds a specified number of leading spaces to each line in a text.

Usage:

 "line 1\nline 2\nline 3" | str indent "    "
    line 1
    line 2
    line 3

str wrap

str wrap wraps each line in a text to a specified width.

Usage:

Wrap text at 10 columns

> "now is the time for all good men to come to the aid of their country" | str wrap --width 10
now is the
time for
all good
men to
come to
the aid of
their
country

Wrap text at 10 columns using optimal-fit

> "now is the time for all good men to come to the aid of their country" | str wrap --width 10 --optimal-fit
now is
the time
for all
good men
to come
to the aid
of their
country

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages