smspromote 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +1 -1
- data/lib/smspromote.rb +2 -1
- data/lib/smspromote/encoding.rb +175 -306
- metadata +4 -4
data/README.rdoc
CHANGED
data/lib/smspromote.rb
CHANGED
data/lib/smspromote/encoding.rb
CHANGED
@@ -1,309 +1,178 @@
|
|
1
|
-
module
|
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
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
1
|
+
module SmsPromote
|
2
|
+
module Encoding
|
3
|
+
# UTF-8 2 GSM-7 TABLE
|
4
|
+
UNICODE2GSM = {
|
5
|
+
0x0040 => "\x00", # COMMERCIAL AT
|
6
|
+
0x00A3 => "\x01", # POUND SIGN
|
7
|
+
0x0024 => "\x02", # DOLLAR SIGN
|
8
|
+
0x00A5 => "\x03", # YEN SIGN
|
9
|
+
0x00E8 => "\x04", # LATIN SMALL LETTER E WITH GRAVE
|
10
|
+
0x00E9 => "\x05", # LATIN SMALL LETTER E WITH ACUTE
|
11
|
+
0x00F9 => "\x06", # LATIN SMALL LETTER U WITH GRAVE
|
12
|
+
0x00EC => "\x07", # LATIN SMALL LETTER I WITH GRAVE
|
13
|
+
0x00F2 => "\x08", # LATIN SMALL LETTER O WITH GRAVE
|
14
|
+
0x00E7 => "\x09", # LATIN SMALL LETTER C WITH CEDILLA
|
15
|
+
0x000A => "\x0A", # LINE FEED
|
16
|
+
0x00D8 => "\x0B", # LATIN CAPITAL LETTER O WITH STROKE
|
17
|
+
0x00F8 => "\x0C", # LATIN SMALL LETTER O WITH STROKE
|
18
|
+
0x000D => "\x0D", # CARRIAGE RETURN
|
19
|
+
0x00C5 => "\x0E", # LATIN CAPITAL LETTER A WITH RING ABOVE
|
20
|
+
0x00E5 => "\x0F", # LATIN SMALL LETTER A WITH RING ABOVE
|
21
|
+
0x0394 => "\x10", # GREEK CAPITAL LETTER DELTA
|
22
|
+
0x005F => "\x11", # LOW LINE
|
23
|
+
0x03A6 => "\x12", # GREEK CAPITAL LETTER PHI
|
24
|
+
0x0393 => "\x13", # GREEK CAPITAL LETTER GAMMA
|
25
|
+
0x039B => "\x14", # GREEK CAPITAL LETTER LAMDA
|
26
|
+
0x03A9 => "\x15", # GREEK CAPITAL LETTER OMEGA
|
27
|
+
0x03A0 => "\x16", # GREEK CAPITAL LETTER PI
|
28
|
+
0x03A8 => "\x17", # GREEK CAPITAL LETTER PSI
|
29
|
+
0x03A3 => "\x18", # GREEK CAPITAL LETTER SIGMA
|
30
|
+
0x0398 => "\x19", # GREEK CAPITAL LETTER THETA
|
31
|
+
0x039E => "\x1A", # GREEK CAPITAL LETTER XI
|
32
|
+
0x00A0 => "\x1B", # ESCAPE TO EXTENSION TABLE
|
33
|
+
0x00C6 => "\x1C", # LATIN CAPITAL LETTER AE
|
34
|
+
0x00E6 => "\x1D", # LATIN SMALL LETTER AE
|
35
|
+
0x00DF => "\x1E", # LATIN SMALL LETTER SHARP S (German)
|
36
|
+
0x00C9 => "\x1F", # LATIN CAPITAL LETTER E WITH ACUTE
|
37
|
+
0x0020 => "\x20", # SPACE
|
38
|
+
0x0021 => "\x21", # EXCLAMATION MARK
|
39
|
+
0x0022 => "\x22", # QUOTATION MARK
|
40
|
+
0x0023 => "\x23", # NUMBER SIGN
|
41
|
+
0x00A4 => "\x24", # CURRENCY SIGN
|
42
|
+
0x0025 => "\x25", # PERCENT SIGN
|
43
|
+
0x0026 => "\x26", # AMPERSAND
|
44
|
+
0x0027 => "\x27", # APOSTROPHE
|
45
|
+
0x0028 => "\x28", # LEFT PARENTHESIS
|
46
|
+
0x0029 => "\x29", # RIGHT PARENTHESIS
|
47
|
+
0x002A => "\x2A", # ASTERISK
|
48
|
+
0x002B => "\x2B", # PLUS SIGN
|
49
|
+
0x002C => "\x2C", # COMMA
|
50
|
+
0x002D => "\x2D", # HYPHEN-MINUS
|
51
|
+
0x002E => "\x2E", # FULL STOP
|
52
|
+
0x002F => "\x2F", # SOLIDUS
|
53
|
+
0x0030 => "\x30", # DIGIT ZERO
|
54
|
+
0x0031 => "\x31", # DIGIT ONE
|
55
|
+
0x0032 => "\x32", # DIGIT TWO
|
56
|
+
0x0033 => "\x33", # DIGIT THREE
|
57
|
+
0x0034 => "\x34", # DIGIT FOUR
|
58
|
+
0x0035 => "\x35", # DIGIT FIVE
|
59
|
+
0x0036 => "\x36", # DIGIT SIX
|
60
|
+
0x0037 => "\x37", # DIGIT SEVEN
|
61
|
+
0x0038 => "\x38", # DIGIT EIGHT
|
62
|
+
0x0039 => "\x39", # DIGIT NINE
|
63
|
+
0x003A => "\x3A", # COLON
|
64
|
+
0x003B => "\x3B", # SEMICOLON
|
65
|
+
0x003C => "\x3C", # LESS-THAN SIGN
|
66
|
+
0x003D => "\x3D", # EQUALS SIGN
|
67
|
+
0x003E => "\x3E", # GREATER-THAN SIGN
|
68
|
+
0x003F => "\x3F", # QUESTION MARK
|
69
|
+
0x00A1 => "\x40", # INVERTED EXCLAMATION MARK
|
70
|
+
0x0041 => "\x41", # LATIN CAPITAL LETTER A
|
71
|
+
0x0042 => "\x42", # LATIN CAPITAL LETTER B
|
72
|
+
0x0043 => "\x43", # LATIN CAPITAL LETTER C
|
73
|
+
0x0044 => "\x44", # LATIN CAPITAL LETTER D
|
74
|
+
0x0045 => "\x45", # LATIN CAPITAL LETTER E
|
75
|
+
0x0046 => "\x46", # LATIN CAPITAL LETTER F
|
76
|
+
0x0047 => "\x47", # LATIN CAPITAL LETTER G
|
77
|
+
0x0048 => "\x48", # LATIN CAPITAL LETTER H
|
78
|
+
0x0049 => "\x49", # LATIN CAPITAL LETTER I
|
79
|
+
0x004A => "\x4A", # LATIN CAPITAL LETTER J
|
80
|
+
0x004B => "\x4B", # LATIN CAPITAL LETTER K
|
81
|
+
0x004C => "\x4C", # LATIN CAPITAL LETTER L
|
82
|
+
0x004D => "\x4D", # LATIN CAPITAL LETTER M
|
83
|
+
0x004E => "\x4E", # LATIN CAPITAL LETTER N
|
84
|
+
0x004F => "\x4F", # LATIN CAPITAL LETTER O
|
85
|
+
0x0050 => "\x50", # LATIN CAPITAL LETTER P
|
86
|
+
0x0051 => "\x51", # LATIN CAPITAL LETTER Q
|
87
|
+
0x0052 => "\x52", # LATIN CAPITAL LETTER R
|
88
|
+
0x0053 => "\x53", # LATIN CAPITAL LETTER S
|
89
|
+
0x0054 => "\x54", # LATIN CAPITAL LETTER T
|
90
|
+
0x0055 => "\x55", # LATIN CAPITAL LETTER U
|
91
|
+
0x0056 => "\x56", # LATIN CAPITAL LETTER V
|
92
|
+
0x0057 => "\x57", # LATIN CAPITAL LETTER W
|
93
|
+
0x0058 => "\x58", # LATIN CAPITAL LETTER X
|
94
|
+
0x0059 => "\x59", # LATIN CAPITAL LETTER Y
|
95
|
+
0x005A => "\x5A", # LATIN CAPITAL LETTER Z
|
96
|
+
0x00C4 => "\x5B", # LATIN CAPITAL LETTER A WITH DIAERESIS
|
97
|
+
0x00D6 => "\x5C", # LATIN CAPITAL LETTER O WITH DIAERESIS
|
98
|
+
0x00D1 => "\x5D", # LATIN CAPITAL LETTER N WITH TILDE
|
99
|
+
0x00DC => "\x5E", # LATIN CAPITAL LETTER U WITH DIAERESIS
|
100
|
+
0x00A7 => "\x5F", # SECTION SIGN
|
101
|
+
0x00BF => "\x60", # INVERTED QUESTION MARK
|
102
|
+
0x0061 => "\x61", # LATIN SMALL LETTER A
|
103
|
+
0x0062 => "\x62", # LATIN SMALL LETTER B
|
104
|
+
0x0063 => "\x63", # LATIN SMALL LETTER C
|
105
|
+
0x0064 => "\x64", # LATIN SMALL LETTER D
|
106
|
+
0x0065 => "\x65", # LATIN SMALL LETTER E
|
107
|
+
0x0066 => "\x66", # LATIN SMALL LETTER F
|
108
|
+
0x0067 => "\x67", # LATIN SMALL LETTER G
|
109
|
+
0x0068 => "\x68", # LATIN SMALL LETTER H
|
110
|
+
0x0069 => "\x69", # LATIN SMALL LETTER I
|
111
|
+
0x006A => "\x6A", # LATIN SMALL LETTER J
|
112
|
+
0x006B => "\x6B", # LATIN SMALL LETTER K
|
113
|
+
0x006C => "\x6C", # LATIN SMALL LETTER L
|
114
|
+
0x006D => "\x6D", # LATIN SMALL LETTER M
|
115
|
+
0x006E => "\x6E", # LATIN SMALL LETTER N
|
116
|
+
0x006F => "\x6F", # LATIN SMALL LETTER O
|
117
|
+
0x0070 => "\x70", # LATIN SMALL LETTER P
|
118
|
+
0x0071 => "\x71", # LATIN SMALL LETTER Q
|
119
|
+
0x0072 => "\x72", # LATIN SMALL LETTER R
|
120
|
+
0x0073 => "\x73", # LATIN SMALL LETTER S
|
121
|
+
0x0074 => "\x74", # LATIN SMALL LETTER T
|
122
|
+
0x0075 => "\x75", # LATIN SMALL LETTER U
|
123
|
+
0x0076 => "\x76", # LATIN SMALL LETTER V
|
124
|
+
0x0077 => "\x77", # LATIN SMALL LETTER W
|
125
|
+
0x0078 => "\x78", # LATIN SMALL LETTER X
|
126
|
+
0x0079 => "\x79", # LATIN SMALL LETTER Y
|
127
|
+
0x007A => "\x7A", # LATIN SMALL LETTER Z
|
128
|
+
0x00E4 => "\x7B", # LATIN SMALL LETTER A WITH DIAERESIS
|
129
|
+
0x00F6 => "\x7C", # LATIN SMALL LETTER O WITH DIAERESIS
|
130
|
+
0x00F1 => "\x7D", # LATIN SMALL LETTER N WITH TILDE
|
131
|
+
0x00FC => "\x7E", # LATIN SMALL LETTER U WITH DIAERESIS
|
132
|
+
0x00E0 => "\x7F", # LATIN SMALL LETTER A WITH GRAVE
|
133
|
+
############## ESCAPES ###############
|
134
|
+
0x000C => "\x1B\x0A", # FORM FEED
|
135
|
+
0x005E => "\x1B\x14", # CIRCUMFLEX ACCENT
|
136
|
+
0x007B => "\x1B\x28", # LEFT CURLY BRACKET
|
137
|
+
0x007D => "\x1B\x29", # RIGHT CURLY BRACKET
|
138
|
+
0x005C => "\x1B\x2F", # REVERSE SOLIDUS
|
139
|
+
0x005B => "\x1B\x3C", # LEFT SQUARE BRACKET
|
140
|
+
0x007E => "\x1B\x3D", # TILDE
|
141
|
+
0x005D => "\x1B\x3E", # RIGHT SQUARE BRACKET
|
142
|
+
0x007C => "\x1B\x40", # VERTICAL LINE
|
143
|
+
0x20AC => "\x1B\x65" # EURO SIGN
|
144
|
+
}
|
145
|
+
|
146
|
+
# GSM-7 2 UTF-8 TABLE
|
147
|
+
GSM2UNICODE = {}
|
148
|
+
for key, value in UNICODE2GSM do
|
149
|
+
GSM2UNICODE[value] = key
|
150
|
+
end
|
132
151
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
{ :from => 0x3E, :to => 0x005D }, /* RIGHT SQUARE BRACKET
|
142
|
-
{ :from => 0x40, :to => 0x007C }, /* VERTICAL LINE
|
143
|
-
{ :from => 0x65, :to => 0x20AC }, /* EURO SIGN
|
144
|
-
{ :from => 0 , :to => 0 }
|
145
|
-
]
|
152
|
+
# returns string (str) GSM-7 encoded
|
153
|
+
def self.to_gsm(str)
|
154
|
+
new_str = ""
|
155
|
+
str.unpack("U*").each do |char|
|
156
|
+
new_str << UNICODE2GSM[char]
|
157
|
+
end
|
158
|
+
new_str
|
159
|
+
end
|
146
160
|
|
161
|
+
# returns string (str) UTF-8 encoded
|
162
|
+
def self.from_gsm(str)
|
163
|
+
new_str = ""
|
164
|
+
escape = false
|
165
|
+
str.each_char do |char|
|
166
|
+
if char == "\e"
|
167
|
+
escape = true
|
168
|
+
elsif escape
|
169
|
+
escape = false
|
170
|
+
new_str << [GSM2UNICODE["\e" + char]].pack("U")
|
171
|
+
else
|
172
|
+
new_str << [GSM2UNICODE[char]].pack("U")
|
173
|
+
end
|
174
|
+
end
|
175
|
+
new_str
|
176
|
+
end
|
177
|
+
end
|
147
178
|
end
|
148
|
-
|
149
|
-
|
150
|
-
static int
|
151
|
-
gsm7_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
|
152
|
-
{
|
153
|
-
int i = 0;
|
154
|
-
if( *s > 0x7f )
|
155
|
-
return RET_ILSEQ;
|
156
|
-
else if( *s == 0x1B ) {
|
157
|
-
if( n >= 2 ) {
|
158
|
-
while( gsmEscapes[ i ].from ) {
|
159
|
-
if( gsmEscapes[ i ].from == s[1] ) {
|
160
|
-
*pwc = gsmEscapes[ i ].to;
|
161
|
-
return 2;
|
162
|
-
}
|
163
|
-
i++;
|
164
|
-
}
|
165
|
-
return RET_ILSEQ;
|
166
|
-
} else
|
167
|
-
return RET_TOOFEW( 1 );
|
168
|
-
}
|
169
|
-
*pwc = gsmToUnicode[ *s ];
|
170
|
-
return 1;
|
171
|
-
}
|
172
|
-
static int
|
173
|
-
gsm7_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
|
174
|
-
{
|
175
|
-
unsigned char s1, s2;
|
176
|
-
s1 = (wc & 0xff00) >> 8;
|
177
|
-
s2 = wc & 0x00ff;
|
178
|
-
if( s1 == 0x00 ) {
|
179
|
-
if( s2 == 0xA || s2 == 0xD ||
|
180
|
-
(s2 >= 0x20 && s2 <= 0x23 ) || (s2 >= 0x25 && s2 <= 0x3f)
|
181
|
-
|| (s2 >= 0x41 && s2 <= 0x5A) || (s2 >= 0x61 && s2 <= 0x7A) ) {
|
182
|
-
*r = s2;
|
183
|
-
return 1;
|
184
|
-
} else {
|
185
|
-
switch( s2 ) {
|
186
|
-
case 0x24: *r = 0x02; return 1;
|
187
|
-
case 0x40: *r = 0x00; return 1;
|
188
|
-
case 0x5b: if( n >= 2 ) {r[0] = 0x1b; r[1] = 0x3c; return 2; }
|
189
|
-
else return RET_TOOSMALL;
|
190
|
-
case 0x5c: if( n >= 2 ) {r[0] = 0x1b; r[1] = 0x2f; return 2; }
|
191
|
-
else return RET_TOOSMALL;
|
192
|
-
case 0x5d: if( n >= 2 ) {r[0] = 0x1b; r[1] = 0x3e; return 2; }
|
193
|
-
else return RET_TOOSMALL;
|
194
|
-
case 0x5e: if( n >= 2 ) {r[0] = 0x1b; r[1] = 0x14; return 2; }
|
195
|
-
else return RET_TOOSMALL;
|
196
|
-
case 0x5f: *r = 0x11; return 1;
|
197
|
-
case 0x7b: if( n >= 2 ) {r[0] = 0x1b; r[1] = 0x28; return 2; }
|
198
|
-
else return RET_TOOSMALL;
|
199
|
-
case 0x7c: if( n >= 2 ) {r[0] = 0x1b; r[1] = 0x40; return 2; }
|
200
|
-
else return RET_TOOSMALL;
|
201
|
-
case 0x7d: if( n >= 2 ) {r[0] = 0x1b; r[1] = 0x29; return 2; }
|
202
|
-
else return RET_TOOSMALL;
|
203
|
-
case 0x7e: if( n >= 2 ) {r[0] = 0x1b; r[1] = 0x3d; return 2; }
|
204
|
-
else return RET_TOOSMALL;
|
205
|
-
case 0xa3: *r = 0x01; return 1;
|
206
|
-
case 0xa4: *r = 0x24; return 1;
|
207
|
-
case 0xa5: *r = 0x03; return 1;
|
208
|
-
case 0xa7: *r = 0x5f; return 1;
|
209
|
-
case 0xb0: *r = 0x24; return 1;
|
210
|
-
case 0xbf: *r = 0x60; return 1;
|
211
|
-
case 0xc5: *r = 0x0e; return 1;
|
212
|
-
case 0xc6: *r = 0x1c; return 1;
|
213
|
-
case 0xc7: *r = 0x09; return 1;
|
214
|
-
case 0xc9: *r = 0x1f; return 1;
|
215
|
-
case 0xc4: *r = 0x5b; return 1;
|
216
|
-
case 0xd1: *r = 0x5d; return 1;
|
217
|
-
case 0xd6: *r = 0x5c; return 1;
|
218
|
-
case 0xd8: *r = 0x0b; return 1;
|
219
|
-
case 0xdc: *r = 0x5e; return 1;
|
220
|
-
case 0xdf: *r = 0x1e; return 1;
|
221
|
-
case 0xe0: *r = 0x7f; return 1;
|
222
|
-
case 0xe4: *r = 0x7b; return 1;
|
223
|
-
case 0xe5: *r = 0x0f; return 1;
|
224
|
-
case 0xe6: *r = 0x1d; return 1;
|
225
|
-
case 0xe7: *r = 0x09; return 1;
|
226
|
-
case 0xe8: *r = 0x04; return 1;
|
227
|
-
case 0xe9: *r = 0x05; return 1;
|
228
|
-
case 0xec: *r = 0x07; return 1;
|
229
|
-
case 0xf1: *r = 0x7d; return 1;
|
230
|
-
case 0xf2: *r = 0x08; return 1;
|
231
|
-
case 0xf6: *r = 0x7c; return 1;
|
232
|
-
case 0xf8: *r = 0x0c; return 1;
|
233
|
-
case 0xf9: *r = 0x06; return 1;
|
234
|
-
case 0xfc: *r = 0x7e; return 1;
|
235
|
-
/* one way mappings
|
236
|
-
case 0xc0: *r = 0x41; return 1;
|
237
|
-
case 0xc1: *r = 0x41; return 1;
|
238
|
-
case 0xc2: *r = 0x41; return 1;
|
239
|
-
case 0xc3: *r = 0x41; return 1;
|
240
|
-
case 0xc8: *r = 0x45; return 1;
|
241
|
-
case 0xca: *r = 0x45; return 1;
|
242
|
-
case 0xcb: *r = 0x45; return 1;
|
243
|
-
case 0xcc: *r = 0x49; return 1;
|
244
|
-
case 0xcd: *r = 0x49; return 1;
|
245
|
-
case 0xce: *r = 0x49; return 1;
|
246
|
-
case 0xcf: *r = 0x49; return 1;
|
247
|
-
case 0xd2: *r = 0x4f; return 1;
|
248
|
-
case 0xd3: *r = 0x4f; return 1;
|
249
|
-
case 0xd4: *r = 0x4f; return 1;
|
250
|
-
case 0xd5: *r = 0x4f; return 1;
|
251
|
-
case 0xd9: *r = 0x55; return 1;
|
252
|
-
case 0xda: *r = 0x55; return 1;
|
253
|
-
case 0xdb: *r = 0x55; return 1;
|
254
|
-
case 0xdd: *r = 0x59; return 1;
|
255
|
-
case 0xe1: *r = 0x61; return 1;
|
256
|
-
case 0xe2: *r = 0x61; return 1;
|
257
|
-
case 0xe3: *r = 0x61; return 1;
|
258
|
-
case 0xea: *r = 0x65; return 1;
|
259
|
-
case 0xeb: *r = 0x65; return 1;
|
260
|
-
case 0xed: *r = 0x69; return 1;
|
261
|
-
case 0xee: *r = 0x69; return 1;
|
262
|
-
case 0xef: *r = 0x69; return 1;
|
263
|
-
case 0xf3: *r = 0x6f; return 1;
|
264
|
-
case 0xf4: *r = 0x6f; return 1;
|
265
|
-
case 0xf5: *r = 0x6f; return 1;
|
266
|
-
case 0xfa: *r = 0x75; return 1;
|
267
|
-
case 0xfb: *r = 0x75; return 1;
|
268
|
-
case 0xfd: *r = 0x79; return 1;
|
269
|
-
case 0xff: *r = 0x79; return 1;
|
270
|
-
}
|
271
|
-
}
|
272
|
-
return RET_ILUNI;
|
273
|
-
} else if( s1 == 0x20 ) {
|
274
|
-
if( s2 == 0xac ) {
|
275
|
-
if( n >= 2 ) {
|
276
|
-
r[0] = 0x1b; r[1] = 0x65; return 2;
|
277
|
-
} else return RET_TOOSMALL;
|
278
|
-
}
|
279
|
-
} else if( s1 = 0x03 ) {
|
280
|
-
switch( s2 ) {
|
281
|
-
case 0x94: *r = 0x10; return 1;
|
282
|
-
case 0xa6: *r = 0x12; return 1;
|
283
|
-
case 0x93: *r = 0x13; return 1;
|
284
|
-
case 0x9b: *r = 0x14; return 1;
|
285
|
-
case 0xa9: *r = 0x15; return 1;
|
286
|
-
case 0xa0: *r = 0x16; return 1;
|
287
|
-
case 0xa8: *r = 0x17; return 1;
|
288
|
-
case 0xa3: *r = 0x18; return 1;
|
289
|
-
case 0x98: *r = 0x19; return 1;
|
290
|
-
case 0x9e: *r = 0x1a; return 1;
|
291
|
-
case 0x91: *r = 0x41; return 1;
|
292
|
-
case 0x92: *r = 0x42; return 1;
|
293
|
-
case 0x95: *r = 0x45; return 1;
|
294
|
-
case 0x97: *r = 0x48; return 1;
|
295
|
-
case 0x99: *r = 0x49; return 1;
|
296
|
-
case 0x9a: *r = 0x4b; return 1;
|
297
|
-
case 0x9c: *r = 0x4d; return 1;
|
298
|
-
case 0x9d: *r = 0x4e; return 1;
|
299
|
-
case 0x9f: *r = 0x4f; return 1;
|
300
|
-
case 0xa1: *r = 0x50; return 1;
|
301
|
-
case 0xa4: *r = 0x54; return 1;
|
302
|
-
case 0xa5: *r = 0x55; return 1;
|
303
|
-
case 0xa7: *r = 0x58; return 1;
|
304
|
-
case 0x96: *r = 0x5a; return 1;
|
305
|
-
}
|
306
|
-
return RET_ILUNI;
|
307
|
-
}
|
308
|
-
return RET_ILUNI;
|
309
|
-
}
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smspromote
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Vincent Landgraf
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-07-
|
18
|
+
date: 2010-07-26 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|