2018-10-30 20:20:57 -05:00
|
|
|
|
================================================================================
|
|
|
|
|
NIH : `Not Invented Here` A redundant misc. library
|
|
|
|
|
================================================================================
|
|
|
|
|
|
|
|
|
|
I've found that, generally, I end up using the same custom functions over and
|
|
|
|
|
over again across all of my projects-- sometimes I'll copy-and-paste, other
|
|
|
|
|
times I'll just re-implement.
|
|
|
|
|
|
|
|
|
|
... which, predictably, leads to inconsistensies. While some versions of `x`
|
|
|
|
|
function will flourish, gain new features, etc. etc., the others will
|
|
|
|
|
inevitably lag behind.
|
|
|
|
|
|
|
|
|
|
Well, no longer!
|
|
|
|
|
|
|
|
|
|
I've decided to stuff (somewhat) refactored versions of these generic functions
|
|
|
|
|
here, in this library!
|
|
|
|
|
|
|
|
|
|
Most of them have to deal with string manipulations, but there's a bit more
|
|
|
|
|
than that-- and everything has tests! :)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
USAGE
|
|
|
|
|
----------------------------------------
|
|
|
|
|
|
2024-01-28 19:48:52 -06:00
|
|
|
|
[Note, 2024: I’m keeping this repo here for archival reasons; I discourage actual use of this project!]
|
|
|
|
|
|
2018-10-30 20:20:57 -05:00
|
|
|
|
I mean... it's a library. Use a function you like. Or not. =w=
|
|
|
|
|
But here's my logic with the string manipulation functions:
|
|
|
|
|
|
|
|
|
|
I want to treat strings like lists. Getting the `car` of "hi there, dad", for
|
|
|
|
|
example, should return "hi". Getting the `cdr` should be "there, dad".
|
|
|
|
|
But, then again, that uses WORDS as the unit.
|
|
|
|
|
What if I wanted to get the `car` or some such thing as say, a character? Or
|
|
|
|
|
maybe even have the unit be a line?
|
|
|
|
|
|
|
|
|
|
Thus, there are three different `units`:
|
|
|
|
|
* line-
|
|
|
|
|
* char-
|
|
|
|
|
* word-
|
|
|
|
|
|
|
|
|
|
Each of these have the following functions:
|
|
|
|
|
* get-all
|
|
|
|
|
* get
|
|
|
|
|
* remove-all
|
|
|
|
|
* remove
|
|
|
|
|
* position
|
|
|
|
|
* positions
|
|
|
|
|
* nth
|
|
|
|
|
* car
|
|
|
|
|
* cdr
|
|
|
|
|
* caar
|
|
|
|
|
* cddr
|
|
|
|
|
* (all combos of cdr and car)
|
|
|
|
|
|
|
|
|
|
... which behave pretty predictably.
|
|
|
|
|
|
|
|
|
|
The `get` functions use regex (as do the remove functions), position(s) use
|
|
|
|
|
the verbatim item value, etc.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Examples
|
|
|
|
|
--------------------
|
|
|
|
|
|
|
|
|
|
(word-car "hiya, mate-o. how're you doing? <3")
|
|
|
|
|
> "hiya,"
|
|
|
|
|
|
|
|
|
|
(word-nth 2 "hiya, dad. what's up?")
|
|
|
|
|
> "dad."
|
|
|
|
|
|
|
|
|
|
(line-get-all ".*e.*"
|
|
|
|
|
"hiya, what's up?
|
|
|
|
|
don't eat anyone else, OK?
|
|
|
|
|
i wouldn't like that.
|
|
|
|
|
would you?")
|
|
|
|
|
> "don't eat anyone else, OK?
|
|
|
|
|
would you?"
|
|
|
|
|
|
|
|
|
|
(char-remove #\h "hi there")
|
|
|
|
|
> "i there"
|
|
|
|
|
|
|
|
|
|
(char-remove-all #\h "hi there")
|
|
|
|
|
> "i tere"
|
|
|
|
|
|
|
|
|
|
... so on and so forth.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Oh, and those are just for generic string manips. There are still some
|
|
|
|
|
|
|
|
|
|
Honourable Mentions
|
|
|
|
|
--------------------
|
|
|
|
|
#'get-colon-values
|
|
|
|
|
#'remove-colon-values
|
|
|
|
|
#'positions
|
|
|
|
|
#'nil-blank
|
|
|
|
|
#'before
|
|
|
|
|
#'after
|
|
|
|
|
#'preceding
|
|
|
|
|
... etc
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
BORING STUFF
|
|
|
|
|
----------------------------------------
|
|
|
|
|
|
|
|
|
|
License is in COPYING.txt (GNU LGPLv3~! <3)
|
2024-01-28 19:48:52 -06:00
|
|
|
|
Author is Jaidyn Ann <jadedctrl@posteo.at>
|
|
|
|
|
Sauce is at https://hak.xwx.moe/jadedctrl/nih
|