About
Spoilers get used pretty heavily on Puzzling.SE, and people have taken to using rot13 in comments (and chat) since there's no official spoiler mark-up outside of questions/answers. That's annoying, but this script will make your life easier.
Features
- Add rot13 spoilers to comments
- Whenever you're typing a comment, surround any text you want to be spoilered with
rot13(<text to be spoilered>)
- A ROT13 link will appear to the right (between the Add Comment button and the help link)
- Clicking ROT13 will convert all
rot13(...)
text in your comment (obviously clicking again will convert back) - Post your comment as usual
- Whenever you're typing a comment, surround any text you want to be spoilered with
- Automatically convert existing rot13 spoilers in comments
- Any comments containing spoilers in the format
rot13(<spoilered text>)
will automatically get highlighted - Hover the highlight to see the unspoilered text in the tooltip
- Edit (v1.5): "tooltip" is now an overlayed panel
Click the link to see the unspoilered text in an alert popup- Edit (v1.5): Click the highlight to pin the tooltip panel in place, click again to hide (allows copy/paste, etc)
- Edit (v1.5): Handles nested parentheses in rot strings (thanks @GentlePurpleRain)
- Edit (v1.5): Preserves (most) formatting in and around rot strings (including links)
- Edit (v1.5): Supports fallback mode for non-"standard" rot strings (eg. rot13[...], (ROT13)..., Rot13:..., etc) which rots the entire comment
- Any comments containing spoilers in the format
- Edit (v1.2): Both the above features now also work in SE chat rooms
(I left the encoding process fairly manual so as not to be potentially annoying when writing/editing comments)
Download/Source
View script source / Install / download
Platform
Tested with Greasemonkey in Firefox and with Tampermonkey in Chrome.
rot13(...)
. How about something like, for example,!!...!!
or>>...<<
, etc.rot13(...)
is already the defacto standard used on puzzling.se.alert()
, so I replaced line # 82 withvar link = `<a href="#" onclick="this.innerHTML = 'rot13(${text.replace(/\\/g, "\\\\").replace(/'/g, "\\'")})';return false;" title="${text}" >${found[0]}</a>`;
Personally it still isn't perfect for me, so I may make more changes in the future, but I thought you and/or others might want to do this too, as thealert()
really broke the flow of things for me.