Mastodon: Mastodon should use built-in rot13 for "spoilertext"

Created on 30 Nov 2016  Â·  3Comments  Â·  Source: tootsuite/mastodon

Instead of using a spoiler-hiding toggle, Masto should have a built-in rot13 (example: here ) function which allows you to scramble both outgoing toots, AND apply the shift to tweets you see in timelines.

Rot13 is a spoiler- or secret-hiding convention common in the communities which currently use Mastodon. It has, I think, a lot of character, and would allow us to hide and send spoiler-ized info without attaching additional data to a toot.

Most helpful comment

I threw together a ROT* cypher which will work for any script, and is identical to ROT13 for ASCII Latin, which you can test here: https://marrus-sh.github.io/rotstar/

Basically, I just collected which Unicode characters were letters from LineBreaks.txt in the Unicode Character Database and did a length/2 shift over each contiguous block. (For odd-lengthed blocks, the last letter in the block is left out.) Punctuation and other characters (importantly, characters regarding text direction and variation selectors) are left untouched—only letter characters are affected.

The cypher results won't necessarily make a whole lot of conceptual sense in many languages—it might be a mess of capitals and lower-case, for example, depending on how Unicode broke up the blocks—but it is functional and tweaking could always happen in the future.

I don't have a strong opinion on whether ROT13 gets implemented into Mastodon or not, but this should at least keep the option open.


EDIT: Probably worth mentioning that the example above only works on characters in the U+0000..U+FFFF range, due to JavaScript's UTF-16 strings (but this is not a difficult fix)

EDIT 2: Pictures!
image

EDIT 3: My script doesn't do this, but input strings SHOULD be placed in NFC (or NFKC?) normalization form before processing.

All 3 comments

The problem is it only works for the Latin alphabet. Any language with different letters needs a different system.

I threw together a ROT* cypher which will work for any script, and is identical to ROT13 for ASCII Latin, which you can test here: https://marrus-sh.github.io/rotstar/

Basically, I just collected which Unicode characters were letters from LineBreaks.txt in the Unicode Character Database and did a length/2 shift over each contiguous block. (For odd-lengthed blocks, the last letter in the block is left out.) Punctuation and other characters (importantly, characters regarding text direction and variation selectors) are left untouched—only letter characters are affected.

The cypher results won't necessarily make a whole lot of conceptual sense in many languages—it might be a mess of capitals and lower-case, for example, depending on how Unicode broke up the blocks—but it is functional and tweaking could always happen in the future.

I don't have a strong opinion on whether ROT13 gets implemented into Mastodon or not, but this should at least keep the option open.


EDIT: Probably worth mentioning that the example above only works on characters in the U+0000..U+FFFF range, due to JavaScript's UTF-16 strings (but this is not a difficult fix)

EDIT 2: Pictures!
image

EDIT 3: My script doesn't do this, but input strings SHOULD be placed in NFC (or NFKC?) normalization form before processing.

Resolved through content warnings

Was this page helpful?
0 / 5 - 0 ratings

Related issues

KellerFuchs picture KellerFuchs  Â·  3Comments

ccoenen picture ccoenen  Â·  3Comments

golbette picture golbette  Â·  3Comments

Lewiscowles1986 picture Lewiscowles1986  Â·  3Comments

ghost picture ghost  Â·  3Comments