Name: Anonymous 2017-12-16 18:00

???
The 5 newest replies are shown below.
Read this thread from the beginning.

Name: Anonymous 2018-01-19 3:01

sage

Name: Anonymous 2018-01-19 12:46

age

Name: Anonymous 2018-01-19 16:00

sage

Name: Anonymous 2018-01-19 20:25

age

Name: Anonymous 2018-01-19 20:52

sage
Don't change these.
Name: Email:
Entire Thread Thread List
[2:6]

thread

Name: Anonymous 2018-01-18 16:52

thread

Name: Anonymous 2018-01-18 17:04

replying post

Name: Anonymous 2018-01-18 17:23

pejorative description of OP

Name: Anonymous 2018-01-18 21:29

OP replies with snarky retort.

Name: Anonymous 2018-01-19 3:00

Back to reddit snarkycuck

Name: Anonymous 2018-01-19 16:02

Another replies with "what's a reddit?"
Don't change these.
Name: Email:
Entire Thread Thread List

Name: Anonymous 2017-12-06 6:46

It seems like /lounge/ discussion is 50/50 as far as the content. Seems like a weird juxtaposition. Or is that what /prog/ is for?
The 5 newest replies are shown below.
Read this thread from the beginning.

Name: Anonymous 2017-12-30 6:16

cnn = fake news.

Name: Anonymous 2017-12-31 0:49

nyet

Name: Anonymous 2018-01-12 14:53

Just discuss news here or on lounge who cares. Plus, the more boards you add the more you fragment the userbase.

Name: Anonymous 2018-01-18 8:26

>>29
wrong again lol

Name: Anonymous 2018-01-18 12:14

>>29,30
Read the thread.
Don't change these.
Name: Email:
Entire Thread Thread List
[4:1]

shuffle

Name: Anonymous 2018-01-14 0:14

:stopmusic:
Don't change these.
Name: Email:
Entire Thread Thread List
[5:3]

wanking

Name: Anonymous 2018-01-18 0:45

wank

Name: Anonymous 2018-01-18 1:08

:stopmusic:

Name: Anonymous 2018-01-18 1:09

:stop.music:
Don't change these.
Name: Email:
Entire Thread Thread List

Name: Anonymous 2017-11-18 4:21

Is it just dice rolls?
The 5 newest replies are shown below.
Read this thread from the beginning.

Name: Anonymous 2018-01-03 18:57

>>22
check 'em dubs
stopped reading there.

Name: Anonymous 2018-01-03 19:15

Check my anus.

Name: Anonymous 2018-01-03 19:51

>>21-22
Back to 4chan, please.

Name: Anonymous 2018-01-10 9:55

Check my dubs.

Name: Anonymous 2018-01-10 14:46

Don't change these.
Name: Email:
Entire Thread Thread List

Name: Anonymous 2018-01-02 12:42

I have to pee.

Name: Anonymous 2018-01-02 23:06

#MeToo

Name: Anonymous 2018-01-03 5:29

ass

Name: Anonymous 2018-01-09 13:38

Check my dubs.
Don't change these.
Name: Email:
Entire Thread Thread List

Name: Anonymous 2017-12-27 6:02

turns:

>>15
>>97
>>12
>>11
>>10
>>3
>>6
>>14
>>1
>>100
>>96
fucking niggers


into:

>>1,3,6,10-12,14-15,96-97,100
fucking niggers


includes convenient button underneath post reply form.

// ==UserScript==
// @name Optimize Your Quotes
// @match https://freesoftwarefoundation.org/*
// @match http://freesoftwarefoundation.org/*
// @grant none
// ==/UserScript==

const partition = l => l.sort((a, b) => a - b).reduce((parts, x) => {
let last = parts[parts.length-1]
if (last.length === 0 || (x-1) === last[last.length-1]) {
return [...parts.slice(0, parts.length-1),
[...last, x]]
}
if (last[last.length-1] === x) {
return parts
}
return [...parts, [x]]
}, [[]])

const toText = parts => parts.map(p => p.length > 1 ? [p[0], p[p.length-1]].join('-') : p[0].toString()).join(',')

const reFindUnoptimizedQuotesBlock = /(>>\d+(\n|$))+/g
const reFindUnoptimizedQuotes = /(?:>>)(\d+)(?:\n)/g

const parse = raw => {
let ret = []
for (let m = reFindUnoptimizedQuotes.exec(raw); !!m; m = reFindUnoptimizedQuotes.exec(raw)) {
let n = parseInt(m[1])
ret.push(n)
console.log(`n=${n}`)
}
return ret
}

(function() {
let form = document.querySelector('form')
let textarea = document.querySelector('form > table > tbody > tr:nth-child(2) > td:nth-child(2) > textarea')
if (!!form && !!textarea) {
var btn = document.createElement('a')
btn.innerHTML = 'Optimize Quotes'
btn.setAttribute('href', 'javascript:void(0)')
btn.addEventListener('click', function() {
let t = textarea.value.slice()
for (let m = reFindUnoptimizedQuotesBlock.exec(t); !!m; m = reFindUnoptimizedQuotesBlock.exec(t)) {
let parsed = parse(m[0])
if (parsed.length > 0) {
let parts = partition(parsed)
let optimized = '>>' + toText(parts) + '\n'
textarea.value = textarea.value.replace(m[0], optimized)
}
}
})
form.appendChild(btn)
}
})()
The 5 newest replies are shown below.
Read this thread from the beginning.

Name: Anonymous 2018-01-04 10:39

>>18
They most certainly don't. That literally defeats the whole point of conjunctions.

Name: Anonymous 2018-01-06 5:09

I use a + if I'm using a conjunction.

Name: Anonymous 2018-01-07 12:31

CHeck my dubs.

Name: Anonymous 2018-01-07 22:40

>>21
Fuck off.

Name: Anonymous 2018-01-08 10:49

Check dubs
Don't change these.
Name: Email:
Entire Thread Thread List

Name: Anonymous 2017-12-13 9:44

Where are the rules?
The 5 newest replies are shown below.
Read this thread from the beginning.

Name: Anonymous 2017-12-20 11:03

>>6
Don't click, nerve gas

Name: Anonymous 2017-12-21 3:56

>>7

Ignore the comment, trolling cork

Name: Anonymous 2017-12-21 6:27

>>8
No troll

Name: Anonymous 2017-12-27 9:55

>>6

Thank you for your contribution to this broad.

>>3

Jokes like this is more funny and excellent! http://www.lido.fr/en

Name: Anonymous 2017-12-27 11:46

>>10
Virus.
Don't change these.
Name: Email:
Entire Thread Thread List

Name: Anonymous 2017-11-23 8:44

Pretty ruthless
The 5 newest replies are shown below.
Read this thread from the beginning.

Name: Anonymous 2017-12-05 9:12

>>26
Why?

Name: Anonymous 2017-12-05 9:17

I think it's because the site is modeled after world4ch, and in world4ch the return button was at the top not the bottom.

Name: Anonymous 2017-12-05 9:31

>>28
Exactly. Brutal shit.

Name: Anonymous 2017-12-05 9:34

Toughen up, buttercups.

Name: Anonymous 2017-12-27 5:52

Don't change these.
Name: Email:
Entire Thread Thread List
New thread
Don't change these.
Subject:
Name: Email: