| sc_check-sections | |
|---|---|
|
Stutter is a string utterer.
utterer: someone who expresses in language; someone who talks (especially someone who delivers a public speech or someone especially garrulous) (www.vocabulary.com)
Stutter takes a string definition and crafts as many different strings as it can. See the examples section below for inspiration.
You can download the latest release build from the release
page. The executable depends on
the gmp library (needed by the Haskell runtime system), which is most likely
already present on your system. If not, install it from your favorite package
manager. For Ubuntu:
$ sudo apt-get install libgmp-devMake sure stutter is on your PATH.
If you have nix installed, you can install stutter
with the following command:
$ nix-env -i stutterThe recommended way is to build stutter with
stack. Run the following
command in the cloned repo:
$ stack buildYou can then install it with
$ stack installThere are several ways you can contribute:
- Complain: Just open an issue and let me know what could be improved.
- Share a use-case: You found a cool case? Great! open an issue or (even better) a PR with your issue added to the examples below.
- Support: Share
stutterwith your friends, you never know who might need it. - Implement: All PRs are welcome.
Stutter can be used as a very simple echo clone:
$ stutter 'Hello, World!'
Hello, World!But stutter also knows how to enumerate:
$ stutter 'foo|bar|baz'
foo
bar
bazYou can easily specify which parts you want to enumerate, and which parts should always be there:
$ stutter 'My name is (what\?|who\?|Slim Shady)'
My name is what?
My name is who?
My name is Slim ShadyStutter can also enumerate file contents:
$ stutter 'foo|bar|baz' > test.txt
$ stutter '(@test.txt) -- stutter was here'
foo -- stutter was here
bar -- stutter was here
baz -- stutter was hereAnd read from stdin:
$ cat test.txt | stutter 'Check this out, paste: @-'
Check this out, paste: foo
Check this out, paste: bar
Check this out, paste: bazStutter also likes ranges:
$ stutter '[0-9a-f]'
0
1
2
3
4
5
6
7
8
9
a
b
c
d
e
fOf course, it can all be used together:
$ stutter 'My name is (@test.txt) [a-c] (who\?|what\?|Slim Shady)'
My name is foo a who?
My name is foo a what?
My name is foo a Slim Shady
My name is foo b who?
My name is foo b what?
...
My name is baz c who?
My name is baz c what?
My name is baz c Slim ShadyStutter can teach you binary:
$ stutter '(0b(0|1){#|5})|I know binary!'
0b00000
0b00001
0b00010
0b00011
0b00100
0b00101
...
0b11010
0b11011
0b11100
0b11101
0b11110
0b11111
I know binary!Stutter can repeat a char:
$ stutter 'a{42}'
a
a
a
...
$ stutter 'a{42}' | wc -l
42-
Make sure you're on (latest) master.
-
Bump the version in
stutter.cabal:0.MAJOR.MINOR.PATCH.
Given a version number MAJOR.MINOR.PATCH, increment the:
MAJOR version when you make incompatible API changes, MINOR version when you add functionality in a backwards-compatible manner, and PATCH version when you make backwards-compatible bug fixes.
- Commit the updated
stutter.cabalfile with commit nameRelease v0.MAJOR.MINOR.PATCH. - Tag the commit with
git tag v0.MAJOR.MINOR.PATCH. - Push with
git push --follow-tags. - Run
cabal sdistandcabal upload --publish ./dist/stutter...to uploadstuttertohackage.