1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
#!/usr/bin/python2
# -*- coding: utf-8 -*-
import sys
wont_change = { ' ' : ' ' ,
'\n' : '\n'
}
def fixed_width_replace(char): #f
if char in wont_change: return unicode(char)
else:
try:
if not 32 < ord(char) < 126: raise Exception("not in range")
return unichr(0xFF00 + ord(char)-32)
except:
return char
cyrillic_dict = {
'A' : u'А', 'a' : 'а','Ä' : u'Ӓ', 'ä' : u'ӓ',
'B' : u'В',
'c' : u'с',
'E' : u'Е',
'e' : u'е',
'H' : u'Н',
'I' : u'І', 'i' : u'і',
'j' : u'ј','J' : u'Ј',
'K' : u'К',
'M' : u'М',
'O' : u'О', 'o' : u'о', 'Ö' : u'Ӧ', 'ö' : u'ӧ',
'P' : u'Р', 'p' : u'р',
'S' : u'Ѕ',
'T' : u'г'
}
def cyrillic_replace(char): #c
return cyrillic_dict.get(char,unicode(char))
historic_latin_dict = {
'B' : u'Ɓ',
'b' : u'ƅ',
'u' : u'ư',
'U' : u'Ư',
'' : 'Ǟ',
#'5' : 'ƽ',
'o' : 'ơ',
'O' : 'Ơ',
'5' : 'Ƽ'
}
def historic_latin(char): #H
return historic_latin_dict.get(char,unicode(char))
punctuation_dict = {
'!' : u'ǃ',
'\'': u'’',
'\"': u'ˮ',
'(' : u'⟨',
')' : u'⟩',
':' : u'ː',
' ' : u' ',
# all different spaces, made for perfect trolling
#' ' : u' ',
#' ' : u' ',
#' ' : u'',
#'-' : u'‒',
#'-' : u'—',
#'-' : u'―',
#'-' : u'‐',
#'-' : u'⁃',
'-' : u'–',
'_' : u'−',
'~' : u'⁓',
#'~' : u'∼',
#'~' : u'〜',
}
def punctuation(char): #p
return punctuation_dict.get(char,unicode(char))
def helpme():
print "usage %s [modes]" % sys.argv[0]
print "modes:"
print " c -- cyrillic replace"
print " f -- fixed width"
print " p -- replace punctuation"
print " H -- replace with historic latin chars"
print " h -- this message"
sys.exit(0)
#parsing happens inside the nested loop
modes = ''.join(sys.argv[1:])
# sane defaults if no mode given
if not modes : modes = "f"
if 'h' in modes: helpme()
for line in sys.stdin:
for char in line:
for mode in modes:
if mode is 'c':
char = cyrillic_replace(char)
elif mode is 'f':
char = fixed_width_replace(char)
elif mode is 'H':
char = historic_latin(char)
elif mode is 'p':
char = punctuation(char)
else:
print "unknown mode %c" % mode
helpme()
try:
sys.stdout.write(char)
except:
sys.stdout.write(char.encode("utf-8"))
|