prawn-arabic 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +10 -0
- data/lib/prawn-arabic.rb +192 -194
- metadata +16 -3
- data/lib/string_utf_support.rb +0 -730
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed5cb64794646322c328c48ded27528d28c99e9a
|
4
|
+
data.tar.gz: bdf83975cb435248cda5c501480dd84c0b7b1ae3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 371bcc79ff773b5686d30d1399fcc7a31f8d5190e39b1d3b0a7b1e03fd89c21c9f4e6c5817a9a5520992e881e2a28503cca54bbe7b783f6b0f290da025f809ba
|
7
|
+
data.tar.gz: 023cb5b3a9f64a028dd98eeda1f9e00cd47fe9609bf7572f3fc1d5fe4af6df795443796051b7858ca02036813535ce6a2737784bd54cabac55c22ca8bc6d7f4a
|
data/Rakefile
CHANGED
@@ -12,6 +12,16 @@ task :build do
|
|
12
12
|
system "gem build arabic-prawn.gemspec"
|
13
13
|
end
|
14
14
|
|
15
|
+
task :console do
|
16
|
+
begin
|
17
|
+
require 'pry'
|
18
|
+
gem_name = File.basename(Dir.pwd)
|
19
|
+
sh %{pry -I lib -r #{gem_name}.rb}
|
20
|
+
rescue LoadError => _
|
21
|
+
sh %{irb -rubygems -I lib -r #{gem_name}.rb}
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
15
25
|
RDoc::Task.new do |rdoc|
|
16
26
|
files =['README', 'LICENSE', 'lib/**/*.rb']
|
17
27
|
rdoc.rdoc_files.add(files)
|
data/lib/prawn-arabic.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'string_utf_support'
|
2
|
-
|
3
1
|
class CharacterFormat
|
4
2
|
Isolated = 1
|
5
3
|
Initial = 2
|
@@ -14,12 +12,12 @@ class ArabicCharacterInfo
|
|
14
12
|
attr_accessor :common_encoding , :format_encodings, :is_connected
|
15
13
|
|
16
14
|
def initialize(common, isolated, final, initial, medial, is_connected)
|
17
|
-
@common_encoding = common
|
15
|
+
@common_encoding = common
|
18
16
|
@format_encodings = Hash.new
|
19
|
-
@format_encodings[CharacterFormat::Isolated] = isolated
|
20
|
-
@format_encodings[CharacterFormat::Initial] = initial
|
21
|
-
@format_encodings[CharacterFormat::Medial] = medial
|
22
|
-
@format_encodings[CharacterFormat::Final] = final
|
17
|
+
@format_encodings[CharacterFormat::Isolated] = isolated
|
18
|
+
@format_encodings[CharacterFormat::Initial] = initial
|
19
|
+
@format_encodings[CharacterFormat::Medial] = medial
|
20
|
+
@format_encodings[CharacterFormat::Final] = final
|
23
21
|
@is_connected = is_connected
|
24
22
|
end
|
25
23
|
|
@@ -33,378 +31,378 @@ class ArabicCharacterInfo
|
|
33
31
|
|
34
32
|
#Alef
|
35
33
|
new_character = ArabicCharacterInfo.new(
|
36
|
-
"
|
37
|
-
"
|
38
|
-
"
|
39
|
-
"
|
40
|
-
"
|
34
|
+
"\u0627", #Common
|
35
|
+
"\ufe8d", #Isolated
|
36
|
+
"\ufe8e", #Final
|
37
|
+
"\ufe8d", #Initial
|
38
|
+
"\ufe8e", #Medial
|
41
39
|
false)
|
42
40
|
map[new_character.common_encoding] = new_character
|
43
41
|
|
44
42
|
#Beh
|
45
43
|
new_character = ArabicCharacterInfo.new(
|
46
|
-
"
|
47
|
-
"
|
48
|
-
"
|
49
|
-
"
|
50
|
-
"
|
44
|
+
"\u0628", #Common
|
45
|
+
"\ufe8f", #Isolated
|
46
|
+
"\ufe90", #Final
|
47
|
+
"\ufe91", #Initial
|
48
|
+
"\ufe92", #Medial
|
51
49
|
true)
|
52
50
|
map[new_character.common_encoding] = new_character
|
53
51
|
|
54
52
|
#Teh
|
55
53
|
new_character = ArabicCharacterInfo.new(
|
56
|
-
"
|
57
|
-
"
|
58
|
-
"
|
59
|
-
"
|
60
|
-
"
|
54
|
+
"\u062a", #Common
|
55
|
+
"\ufe95", #Isolated
|
56
|
+
"\ufe96", #Final
|
57
|
+
"\ufe97", #Initial
|
58
|
+
"\ufe98", #Medial
|
61
59
|
true)
|
62
60
|
map[new_character.common_encoding] = new_character
|
63
61
|
|
64
62
|
#Theh
|
65
63
|
new_character = ArabicCharacterInfo.new(
|
66
|
-
"
|
67
|
-
"
|
68
|
-
"
|
69
|
-
"
|
70
|
-
"
|
64
|
+
"\u062b", #Common
|
65
|
+
"\ufe99", #Isolated
|
66
|
+
"\ufe9a", #Final
|
67
|
+
"\ufe9b", #Initial
|
68
|
+
"\ufe9c", #Medial
|
71
69
|
true)
|
72
70
|
map[new_character.common_encoding] = new_character
|
73
71
|
|
74
72
|
#Jeem
|
75
73
|
new_character = ArabicCharacterInfo.new(
|
76
|
-
"
|
77
|
-
"
|
78
|
-
"
|
79
|
-
"
|
80
|
-
"
|
74
|
+
"\u062c", #Common
|
75
|
+
"\ufe9d", #Isolated
|
76
|
+
"\ufe9e", #Final
|
77
|
+
"\ufe9f", #Initial
|
78
|
+
"\ufea0", #Medial
|
81
79
|
true)
|
82
80
|
map[new_character.common_encoding] = new_character
|
83
81
|
|
84
82
|
#7ah
|
85
83
|
new_character = ArabicCharacterInfo.new(
|
86
|
-
"
|
87
|
-
"
|
88
|
-
"
|
89
|
-
"
|
90
|
-
"
|
84
|
+
"\u062d", #Common
|
85
|
+
"\ufea1", #Isolated
|
86
|
+
"\ufea2", #Final
|
87
|
+
"\ufea3", #Initial
|
88
|
+
"\ufea4", #Medial
|
91
89
|
true)
|
92
90
|
map[new_character.common_encoding] = new_character
|
93
91
|
|
94
92
|
#7'ah
|
95
93
|
new_character = ArabicCharacterInfo.new(
|
96
|
-
"
|
97
|
-
"
|
98
|
-
"
|
99
|
-
"
|
100
|
-
"
|
94
|
+
"\u062e", #Common
|
95
|
+
"\ufea5", #Isolated
|
96
|
+
"\ufea6", #Final
|
97
|
+
"\ufea7", #Initial
|
98
|
+
"\ufea8", #Medial
|
101
99
|
true)
|
102
100
|
map[new_character.common_encoding] = new_character
|
103
101
|
|
104
102
|
#Dal
|
105
103
|
new_character = ArabicCharacterInfo.new(
|
106
|
-
"
|
107
|
-
"
|
108
|
-
"
|
109
|
-
"
|
110
|
-
"
|
104
|
+
"\u062f", #Common
|
105
|
+
"\ufea9", #Isolated
|
106
|
+
"\ufeaa", #Final
|
107
|
+
"\ufea9", #Initial
|
108
|
+
"\ufeaa", #Medial
|
111
109
|
false)
|
112
110
|
map[new_character.common_encoding] = new_character
|
113
111
|
|
114
112
|
#Thal
|
115
113
|
new_character = ArabicCharacterInfo.new(
|
116
|
-
"
|
117
|
-
"
|
118
|
-
"
|
119
|
-
"
|
120
|
-
"
|
114
|
+
"\u0630", #Common
|
115
|
+
"\ufeab", #Isolated
|
116
|
+
"\ufeac", #Final
|
117
|
+
"\ufeab", #Initial
|
118
|
+
"\ufeac", #Medial
|
121
119
|
false)
|
122
120
|
map[new_character.common_encoding] = new_character
|
123
121
|
|
124
122
|
#Rah
|
125
123
|
new_character = ArabicCharacterInfo.new(
|
126
|
-
"
|
127
|
-
"
|
128
|
-
"
|
129
|
-
"
|
130
|
-
"
|
124
|
+
"\u0631", #Common
|
125
|
+
"\ufead", #Isolated
|
126
|
+
"\ufeae", #Final
|
127
|
+
"\ufead", #Initial
|
128
|
+
"\ufeae", #Medial
|
131
129
|
false)
|
132
130
|
map[new_character.common_encoding] = new_character
|
133
131
|
|
134
132
|
#Zein
|
135
133
|
new_character = ArabicCharacterInfo.new(
|
136
|
-
"
|
137
|
-
"
|
138
|
-
"
|
139
|
-
"
|
140
|
-
"
|
134
|
+
"\u0632", #Common
|
135
|
+
"\ufeaf", #Isolated
|
136
|
+
"\ufeb0", #Final
|
137
|
+
"\ufeaf", #Initial
|
138
|
+
"\ufeb0", #Medial
|
141
139
|
false)
|
142
140
|
map[new_character.common_encoding] = new_character
|
143
141
|
|
144
142
|
#Seen
|
145
143
|
new_character = ArabicCharacterInfo.new(
|
146
|
-
"
|
147
|
-
"
|
148
|
-
"
|
149
|
-
"
|
150
|
-
"
|
144
|
+
"\u0633", #Common
|
145
|
+
"\ufeb1", #Isolated
|
146
|
+
"\ufeb2", #Final
|
147
|
+
"\ufeb3", #Initial
|
148
|
+
"\ufeb4", #Medial
|
151
149
|
true)
|
152
150
|
map[new_character.common_encoding] = new_character
|
153
151
|
|
154
152
|
#Sheen
|
155
153
|
new_character = ArabicCharacterInfo.new(
|
156
|
-
"
|
157
|
-
"
|
158
|
-
"
|
159
|
-
"
|
160
|
-
"
|
154
|
+
"\u0634", #Common
|
155
|
+
"\ufeb5", #Isolated
|
156
|
+
"\ufeb6", #Final
|
157
|
+
"\ufeb7", #Initial
|
158
|
+
"\ufeb8", #Medial
|
161
159
|
true)
|
162
160
|
map[new_character.common_encoding] = new_character
|
163
161
|
|
164
162
|
|
165
163
|
#Sad
|
166
164
|
new_character = ArabicCharacterInfo.new(
|
167
|
-
"
|
168
|
-
"
|
169
|
-
"
|
170
|
-
"
|
171
|
-
"
|
165
|
+
"\u0635", #Common
|
166
|
+
"\ufeb9", #Isolated
|
167
|
+
"\ufeba", #Final
|
168
|
+
"\ufebb", #Initial
|
169
|
+
"\ufebc", #Medial
|
172
170
|
true)
|
173
171
|
map[new_character.common_encoding] = new_character
|
174
172
|
|
175
173
|
|
176
174
|
#Dad
|
177
175
|
new_character = ArabicCharacterInfo.new(
|
178
|
-
"
|
179
|
-
"
|
180
|
-
"
|
181
|
-
"
|
182
|
-
"
|
176
|
+
"\u0636", #Common
|
177
|
+
"\ufebd", #Isolated
|
178
|
+
"\ufebe", #Final
|
179
|
+
"\ufebf", #Initial
|
180
|
+
"\ufec0", #Medial
|
183
181
|
true)
|
184
182
|
map[new_character.common_encoding] = new_character
|
185
183
|
|
186
184
|
|
187
185
|
#Tah
|
188
186
|
new_character = ArabicCharacterInfo.new(
|
189
|
-
"
|
190
|
-
"
|
191
|
-
"
|
192
|
-
"
|
193
|
-
"
|
187
|
+
"\u0637", #Common
|
188
|
+
"\ufec1", #Isolated
|
189
|
+
"\ufec2", #Final
|
190
|
+
"\ufec3", #Initial
|
191
|
+
"\ufec4", #Medial
|
194
192
|
true)
|
195
193
|
map[new_character.common_encoding] = new_character
|
196
194
|
|
197
195
|
#Thah
|
198
196
|
new_character = ArabicCharacterInfo.new(
|
199
|
-
"
|
200
|
-
"
|
201
|
-
"
|
202
|
-
"
|
203
|
-
"
|
197
|
+
"\u0638", #Common
|
198
|
+
"\ufec5", #Isolated
|
199
|
+
"\ufec6", #Final
|
200
|
+
"\ufec7", #Initial
|
201
|
+
"\ufec8", #Medial
|
204
202
|
true)
|
205
203
|
map[new_character.common_encoding] = new_character
|
206
204
|
|
207
205
|
#3ein
|
208
206
|
new_character = ArabicCharacterInfo.new(
|
209
|
-
"
|
210
|
-
"
|
211
|
-
"
|
212
|
-
"
|
213
|
-
"
|
207
|
+
"\u0639", #Common
|
208
|
+
"\ufec9", #Isolated
|
209
|
+
"\ufeca", #Final
|
210
|
+
"\ufecb", #Initial
|
211
|
+
"\ufecc", #Medial
|
214
212
|
true)
|
215
213
|
map[new_character.common_encoding] = new_character
|
216
214
|
|
217
215
|
|
218
216
|
#3'ein
|
219
217
|
new_character = ArabicCharacterInfo.new(
|
220
|
-
"
|
221
|
-
"
|
222
|
-
"
|
223
|
-
"
|
224
|
-
"
|
218
|
+
"\u063a", #Common
|
219
|
+
"\ufecd", #Isolated
|
220
|
+
"\ufece", #Final
|
221
|
+
"\ufecf", #Initial
|
222
|
+
"\ufed0", #Medial
|
225
223
|
true)
|
226
224
|
map[new_character.common_encoding] = new_character
|
227
225
|
|
228
226
|
#Feh
|
229
227
|
new_character = ArabicCharacterInfo.new(
|
230
|
-
"
|
231
|
-
"
|
232
|
-
"
|
233
|
-
"
|
234
|
-
"
|
228
|
+
"\u0641", #Common
|
229
|
+
"\ufed1", #Isolated
|
230
|
+
"\ufed2", #Final
|
231
|
+
"\ufed3", #Initial
|
232
|
+
"\ufed4", #Medial
|
235
233
|
true)
|
236
234
|
map[new_character.common_encoding] = new_character
|
237
235
|
|
238
236
|
|
239
237
|
#Qaf
|
240
238
|
new_character = ArabicCharacterInfo.new(
|
241
|
-
"
|
242
|
-
"
|
243
|
-
"
|
244
|
-
"
|
245
|
-
"
|
239
|
+
"\u0642", #Common
|
240
|
+
"\ufed5", #Isolated
|
241
|
+
"\ufed6", #Final
|
242
|
+
"\ufed7", #Initial
|
243
|
+
"\ufed8", #Medial
|
246
244
|
true)
|
247
245
|
map[new_character.common_encoding] = new_character
|
248
246
|
|
249
247
|
|
250
248
|
#Kaf
|
251
249
|
new_character = ArabicCharacterInfo.new(
|
252
|
-
"
|
253
|
-
"
|
254
|
-
"
|
255
|
-
"
|
256
|
-
"
|
250
|
+
"\u0643", #Common
|
251
|
+
"\ufed9", #Isolated
|
252
|
+
"\ufeda", #Final
|
253
|
+
"\ufedb", #Initial
|
254
|
+
"\ufedc", #Medial
|
257
255
|
true)
|
258
256
|
map[new_character.common_encoding] = new_character
|
259
257
|
|
260
258
|
#Lam
|
261
259
|
new_character = ArabicCharacterInfo.new(
|
262
|
-
"
|
263
|
-
"
|
264
|
-
"
|
265
|
-
"
|
266
|
-
"
|
260
|
+
"\u0644", #Common
|
261
|
+
"\ufedd", #Isolated
|
262
|
+
"\ufede", #Final
|
263
|
+
"\ufedf", #Initial
|
264
|
+
"\ufee0", #Medial
|
267
265
|
true)
|
268
266
|
map[new_character.common_encoding] = new_character
|
269
267
|
|
270
268
|
#Meem
|
271
269
|
new_character = ArabicCharacterInfo.new(
|
272
|
-
"
|
273
|
-
"
|
274
|
-
"
|
275
|
-
"
|
276
|
-
"
|
270
|
+
"\u0645", #Common
|
271
|
+
"\ufee1", #Isolated
|
272
|
+
"\ufee2", #Final
|
273
|
+
"\ufee3", #Initial
|
274
|
+
"\ufee4", #Medial
|
277
275
|
true)
|
278
276
|
map[new_character.common_encoding] = new_character
|
279
277
|
|
280
278
|
#Noon
|
281
279
|
new_character = ArabicCharacterInfo.new(
|
282
|
-
"
|
283
|
-
"
|
284
|
-
"
|
285
|
-
"
|
286
|
-
"
|
280
|
+
"\u0646", #Common
|
281
|
+
"\ufee5", #Isolated
|
282
|
+
"\ufee6", #Final
|
283
|
+
"\ufee7", #Initial
|
284
|
+
"\ufee8", #Medial
|
287
285
|
true)
|
288
286
|
map[new_character.common_encoding] = new_character
|
289
287
|
|
290
288
|
#Heh
|
291
289
|
new_character = ArabicCharacterInfo.new(
|
292
|
-
"
|
293
|
-
"
|
294
|
-
"
|
295
|
-
"
|
296
|
-
"
|
290
|
+
"\u0647", #Common
|
291
|
+
"\ufee9", #Isolated
|
292
|
+
"\ufeea", #Final
|
293
|
+
"\ufeeb", #Initial
|
294
|
+
"\ufeec", #Medial
|
297
295
|
true)
|
298
296
|
map[new_character.common_encoding] = new_character
|
299
297
|
|
300
298
|
#Waw
|
301
299
|
new_character = ArabicCharacterInfo.new(
|
302
|
-
"
|
303
|
-
"
|
304
|
-
"
|
305
|
-
"
|
306
|
-
"
|
300
|
+
"\u0648", #Common
|
301
|
+
"\ufeed", #Isolated
|
302
|
+
"\ufeee", #Final
|
303
|
+
"\ufeed", #Initial
|
304
|
+
"\ufeee", #Medial
|
307
305
|
false)
|
308
306
|
map[new_character.common_encoding] = new_character
|
309
307
|
|
310
308
|
#Yeh
|
311
309
|
new_character = ArabicCharacterInfo.new(
|
312
|
-
"
|
313
|
-
"
|
314
|
-
"
|
315
|
-
"
|
316
|
-
"
|
310
|
+
"\u064a", #Common
|
311
|
+
"\ufef1", #Isolated
|
312
|
+
"\ufef2", #Final
|
313
|
+
"\ufef3", #Initial
|
314
|
+
"\ufef4", #Medial
|
317
315
|
true)
|
318
316
|
map[new_character.common_encoding] = new_character
|
319
317
|
|
320
318
|
#Hamza
|
321
319
|
new_character = ArabicCharacterInfo.new(
|
322
|
-
"
|
323
|
-
"
|
324
|
-
"
|
325
|
-
"
|
326
|
-
"
|
320
|
+
"\u0621", #Common
|
321
|
+
"\ufe80", #Isolated
|
322
|
+
"\ufe80", #Final
|
323
|
+
"\ufe80", #Initial
|
324
|
+
"\ufe80", #Medial
|
327
325
|
false)
|
328
326
|
map[new_character.common_encoding] = new_character
|
329
327
|
|
330
328
|
|
331
329
|
# Alef Madda
|
332
330
|
new_character = ArabicCharacterInfo.new(
|
333
|
-
"
|
334
|
-
"
|
335
|
-
"
|
336
|
-
"
|
337
|
-
"
|
331
|
+
"\u0622", #Common
|
332
|
+
"\ufe81", #Isolated
|
333
|
+
"\ufe82", #Final
|
334
|
+
"\ufe81", #Initial
|
335
|
+
"\ufe82", #Medial
|
338
336
|
false)
|
339
337
|
map[new_character.common_encoding] = new_character
|
340
338
|
|
341
339
|
# Alef Hamza Above
|
342
340
|
new_character = ArabicCharacterInfo.new(
|
343
|
-
"
|
344
|
-
"
|
345
|
-
"
|
346
|
-
"
|
347
|
-
"
|
341
|
+
"\u0623", #Common
|
342
|
+
"\ufe83", #Isolated
|
343
|
+
"\ufe84", #Final
|
344
|
+
"\ufe83", #Initial
|
345
|
+
"\ufe84", #Medial
|
348
346
|
false)
|
349
347
|
map[new_character.common_encoding] = new_character
|
350
348
|
|
351
349
|
# Waw Hamza
|
352
350
|
new_character = ArabicCharacterInfo.new(
|
353
|
-
"
|
354
|
-
"
|
355
|
-
"
|
356
|
-
"
|
357
|
-
"
|
351
|
+
"\u0624", #Common
|
352
|
+
"\ufe85", #Isolated
|
353
|
+
"\ufe86", #Final
|
354
|
+
"\ufe85", #Initial
|
355
|
+
"\ufe86", #Medial
|
358
356
|
false)
|
359
357
|
map[new_character.common_encoding] = new_character
|
360
358
|
|
361
359
|
# Alef Hamza Below
|
362
360
|
new_character = ArabicCharacterInfo.new(
|
363
|
-
"
|
364
|
-
"
|
365
|
-
"
|
366
|
-
"
|
367
|
-
"
|
361
|
+
"\u0625", #Common
|
362
|
+
"\ufe87", #Isolated
|
363
|
+
"\ufe88", #Final
|
364
|
+
"\ufe87", #Initial
|
365
|
+
"\ufe88", #Medial
|
368
366
|
false)
|
369
367
|
map[new_character.common_encoding] = new_character
|
370
368
|
|
371
369
|
# Yeh Hamza
|
372
370
|
new_character = ArabicCharacterInfo.new(
|
373
|
-
"
|
374
|
-
"
|
375
|
-
"
|
376
|
-
"
|
377
|
-
"
|
371
|
+
"\u0626", #Common
|
372
|
+
"\ufe89", #Isolated
|
373
|
+
"\ufe8a", #Final
|
374
|
+
"\ufe8b", #Initial
|
375
|
+
"\ufe8c", #Medial
|
378
376
|
true)
|
379
377
|
map[new_character.common_encoding] = new_character
|
380
378
|
|
381
379
|
# Teh Marbuta
|
382
380
|
new_character = ArabicCharacterInfo.new(
|
383
|
-
"
|
384
|
-
"
|
385
|
-
"
|
386
|
-
"
|
387
|
-
"
|
381
|
+
"\u0629", #Common
|
382
|
+
"\ufe93", #Isolated
|
383
|
+
"\ufe94", #Final
|
384
|
+
"\ufe93", #Initial
|
385
|
+
"\ufe94", #Medial
|
388
386
|
false)
|
389
387
|
map[new_character.common_encoding] = new_character
|
390
388
|
|
391
389
|
# Tatweel
|
392
390
|
new_character = ArabicCharacterInfo.new(
|
393
|
-
"
|
394
|
-
"
|
395
|
-
"
|
396
|
-
"
|
397
|
-
"
|
391
|
+
"\u0640", #Common
|
392
|
+
"\u0640", #Isolated
|
393
|
+
"\u0640", #Final
|
394
|
+
"\u0640", #Initial
|
395
|
+
"\u0640", #Medial
|
398
396
|
true)
|
399
397
|
map[new_character.common_encoding] = new_character
|
400
398
|
|
401
399
|
# Alef Layyena
|
402
400
|
new_character = ArabicCharacterInfo.new(
|
403
|
-
"
|
404
|
-
"
|
405
|
-
"
|
406
|
-
"
|
407
|
-
"
|
401
|
+
"\u0649", #Common
|
402
|
+
"\ufeef", #Isolated
|
403
|
+
"\ufef0", #Final
|
404
|
+
"\ufeef", #Initial
|
405
|
+
"\ufef0", #Medial
|
408
406
|
false)
|
409
407
|
map[new_character.common_encoding] = new_character
|
410
408
|
|
@@ -460,7 +458,7 @@ class String
|
|
460
458
|
previous_letter = ''
|
461
459
|
before_previous_letter = ''
|
462
460
|
|
463
|
-
self.
|
461
|
+
self.chars {|c|
|
464
462
|
|
465
463
|
if previous_letter != ''
|
466
464
|
|
@@ -488,7 +486,7 @@ class String
|
|
488
486
|
end
|
489
487
|
|
490
488
|
if is_arabic
|
491
|
-
return connected_arabic.
|
489
|
+
return connected_arabic.reverse
|
492
490
|
else
|
493
491
|
return connected_arabic
|
494
492
|
end
|