Created
April 1, 2013 01:42
-
-
Save dittos/5282788 to your computer and use it in GitHub Desktop.
크킄... 흑.화.한다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var darken = (function() { | |
var re = { sub: function(regex, subst, s) { return s.replace(new RegExp(regex, 'gi'), subst); } }; | |
var random = { | |
random: function() { return Math.random(); }, | |
randint: function randint(e) { return Math.floor(random.random() * e); }, | |
randrange: function randrange(s, e) { return s + random.randint(e - s); }, | |
choice: function(seq) { return seq[random.randint(seq.length)]; } | |
}; | |
String.prototype.strip = function() { return this.replace(/^\s*(.*?)\s*$/, '$1'); }; | |
String.prototype.rstrip = function() { return this.replace(/^(.*?)\s*$/, '$1'); }; | |
String.prototype.endswith = function(suffix) { return this.substring(this.length - suffix.length) === suffix; } | |
function len(seq) { return seq.length; } | |
function repeat(s, n) { var res = ''; for (var i = 0; i < n; i++) res += s; return res; } | |
function ord(s) { return s.charCodeAt(0); } | |
function cleanup(s) { | |
s = re.sub('\[(.*?)]|\\((.*?)\\)', ' ', s); | |
s = re.sub('[.\'~!?\-_,"()]|“|”|"|有|ㅋ|ㅎ|ㄷ|…', ' ', s); | |
s = re.sub('jpg$', ' ', s.rstrip()); | |
s = re.sub('\s\s+', ' ', s); | |
return s.strip(); | |
} | |
function getlasthangul(s) { | |
for (var i = s.length - 1; i >= 0; i--) { | |
var ch = s.charCodeAt(i); | |
if (0xAC00 <= ch && ch <= 0xD7A3) | |
return s.charAt(i); | |
} | |
return null; | |
} | |
function dark(s) { | |
s = cleanup(s); | |
var r = random.random; | |
var prefixes = ['크큭..', '크크큭..', '쿠쿡..', '어이어이...', '에엣?', '후우...', '이것은..', '훗..', '후후..', '이런이런..', '쳇..']; | |
var suffixes = ['웃음', '탕', '털썩', '어이', '이봐', '훗', '응?']; | |
var words = []; | |
var strong = 2 + len(words) / 2; | |
var ss = s.split(' '); | |
for (var i = 0; i < ss.length; i++) { | |
var word = ss[i]; | |
var p = r(); | |
if (strong && p < 0.33) { | |
var _word = word; | |
var josalist = ['있는', '에서', '으로', '은', '는', '이', '가', '을', '를', '의', '로', '와', '과']; | |
var suffix = ''; | |
for (var j = 0; j < josalist.length; j++) { | |
var josa = josalist[j]; | |
if (word.endswith(josa)) { | |
word = word.substring(word.length - josa.length); | |
suffix = josa; | |
break; | |
} | |
} | |
if (len(word) > 1) { | |
word = '「' + word + '」' + suffix; | |
strong -= 1; | |
} else { | |
word = _word; | |
} | |
} else if (p < 0.30) { | |
word = word.split('').join('.') + '.'; | |
} else if (p < 0.75) { | |
word += repeat('.', random.randrange(2, 4)); | |
} | |
words.push(word); | |
} | |
if (r() < 0.33) | |
words.unshift(random.choice(prefixes)); | |
s = words.join(' ').strip(); | |
if (r() < 0.25) | |
s = repeat('─', (2 * random.randrange(4))) + s; | |
if (r() < 0.33) { | |
var jongseong = false; | |
var ch = getlasthangul(s); | |
if (ch != null) | |
jongseong = (ord(ch) - 0xAC00) % 28 != 0; | |
var serifs = [ | |
(jongseong ? '이' : '') + '로군' + repeat('.', (2 * random.randrange(2))) + '?', | |
(jongseong ? '이' : '') + '랄까..', | |
'인건가..?', | |
'일지도?', | |
'따위..', | |
'?', | |
'.!' | |
]; | |
s += '..' + random.choice(serifs); | |
} | |
if (r() < 0.5) { | |
var paren = random.choice([['(', ')'], ['[', ']']]); | |
s += ' ' + paren[0] + random.choice(suffixes) + paren[1]; | |
} | |
return s | |
} | |
function dark_text(s) { | |
var sep = '***'; | |
var ss = s.replace(/[.?!]/g, sep).split(sep); | |
var sss = []; | |
for (var i = 0; i < ss.length; i++) { | |
if (ss[i].strip().length != 0) | |
sss.push(dark(ss[i])); | |
} | |
return sss.join(' '); | |
} | |
return {string: dark, text: dark_text}; | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment