This library provides resources for working with text to transform it into Spongebob mocking meme text.
At first, I thought that the letters started with lowercase and just alternated.
aT fIrSt, I tHoUgHt...
However, after reviewing quite a few uses of the meme, I found that there is an element of randomness to it.
This library will inspect the text and transform letters to uppercase or lowercase according to the following algorithm:
- If a non-ASCII or non-letter is encountered, it is ignored
- The first letter encountered has a 50% chance of being upper or lowercase
- If the next letter encountered is a different case, it has
a 15% chance of being transformed (85% chance of staying a
different case). This means that
an
orAN
arrangements should appear infrequently, but occassionally.An
oraN
arrangements will appear often.
- If the next letter encountered is the same case, it thus has a 85% chance of being transformed.
- If a letter is the same case as two previous letters,
it has a 98% chance of being transformed. Arrangements of
three of the same case as in
ana
orANA
are rare, but I have seen them occur in these memes.
import { spongeMock } from 'spongeMock';
spongeMock("This is a test string.");
// 'tHiS iS a TeSt StRiNg.'
Simple as that.
You can yarn global add spongemock
to add a cli tool that
allows you to spongemockify strings and files. You can give
it a list of files to mock or else it will read from stdin.
spongemock README.md
git log | spongemock
spongemock -e "works on strings with -e argument"