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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b44f2721e1423ee982bac9aecfe6deb099a0b4b0
4
- data.tar.gz: 34c3c9e314e25ff1045e3a375bf82f95e2e5273f
3
+ metadata.gz: ed5cb64794646322c328c48ded27528d28c99e9a
4
+ data.tar.gz: bdf83975cb435248cda5c501480dd84c0b7b1ae3
5
5
  SHA512:
6
- metadata.gz: 6c60b592613bcb6f287c05f035865c79b00277731982cb4a6377358c017d1e4a51cb3cd45d124cbe1ebca36cd81ca2065ea86c92f27a408edffc70d330872462
7
- data.tar.gz: a2ea78a47f545d3e636a10effa27c2c8d34a16c2ae1d1212113c43fb8acea8663fc98e2c7071384800505b7c553645878936e15a29bc2974eebbed586919aea1
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.unicode_to_utf8
15
+ @common_encoding = common
18
16
  @format_encodings = Hash.new
19
- @format_encodings[CharacterFormat::Isolated] = isolated.unicode_to_utf8
20
- @format_encodings[CharacterFormat::Initial] = initial.unicode_to_utf8
21
- @format_encodings[CharacterFormat::Medial] = medial.unicode_to_utf8
22
- @format_encodings[CharacterFormat::Final] = final.unicode_to_utf8
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
- "U+0627", #Common
37
- "U+fe8d", #Isolated
38
- "U+fe8e", #Final
39
- "U+fe8d", #Initial
40
- "U+fe8e", #Medial
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
- "U+0628", #Common
47
- "U+fe8f", #Isolated
48
- "U+fe90", #Final
49
- "U+fe91", #Initial
50
- "U+fe92", #Medial
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
- "U+062a", #Common
57
- "U+fe95", #Isolated
58
- "U+fe96", #Final
59
- "U+fe97", #Initial
60
- "U+fe98", #Medial
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
- "U+062b", #Common
67
- "U+fe99", #Isolated
68
- "U+fe9a", #Final
69
- "U+fe9b", #Initial
70
- "U+fe9c", #Medial
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
- "U+062c", #Common
77
- "U+fe9d", #Isolated
78
- "U+fe9e", #Final
79
- "U+fe9f", #Initial
80
- "U+fea0", #Medial
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
- "U+062d", #Common
87
- "U+fea1", #Isolated
88
- "U+fea2", #Final
89
- "U+fea3", #Initial
90
- "U+fea4", #Medial
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
- "U+062e", #Common
97
- "U+fea5", #Isolated
98
- "U+fea6", #Final
99
- "U+fea7", #Initial
100
- "U+fea8", #Medial
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
- "U+062f", #Common
107
- "U+fea9", #Isolated
108
- "U+feaa", #Final
109
- "U+fea9", #Initial
110
- "U+feaa", #Medial
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
- "U+0630", #Common
117
- "U+feab", #Isolated
118
- "U+feac", #Final
119
- "U+feab", #Initial
120
- "U+feac", #Medial
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
- "U+0631", #Common
127
- "U+fead", #Isolated
128
- "U+feae", #Final
129
- "U+fead", #Initial
130
- "U+feae", #Medial
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
- "U+0632", #Common
137
- "U+feaf", #Isolated
138
- "U+feb0", #Final
139
- "U+feaf", #Initial
140
- "U+feb0", #Medial
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
- "U+0633", #Common
147
- "U+feb1", #Isolated
148
- "U+feb2", #Final
149
- "U+feb3", #Initial
150
- "U+feb4", #Medial
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
- "U+0634", #Common
157
- "U+feb5", #Isolated
158
- "U+feb6", #Final
159
- "U+feb7", #Initial
160
- "U+feb8", #Medial
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
- "U+0635", #Common
168
- "U+feb9", #Isolated
169
- "U+feba", #Final
170
- "U+febb", #Initial
171
- "U+febc", #Medial
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
- "U+0636", #Common
179
- "U+febd", #Isolated
180
- "U+febe", #Final
181
- "U+febf", #Initial
182
- "U+fec0", #Medial
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
- "U+0637", #Common
190
- "U+fec1", #Isolated
191
- "U+fec2", #Final
192
- "U+fec3", #Initial
193
- "U+fec4", #Medial
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
- "U+0638", #Common
200
- "U+fec5", #Isolated
201
- "U+fec6", #Final
202
- "U+fec7", #Initial
203
- "U+fec8", #Medial
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
- "U+0639", #Common
210
- "U+fec9", #Isolated
211
- "U+feca", #Final
212
- "U+fecb", #Initial
213
- "U+fecc", #Medial
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
- "U+063a", #Common
221
- "U+fecd", #Isolated
222
- "U+fece", #Final
223
- "U+fecf", #Initial
224
- "U+fed0", #Medial
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
- "U+0641", #Common
231
- "U+fed1", #Isolated
232
- "U+fed2", #Final
233
- "U+fed3", #Initial
234
- "U+fed4", #Medial
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
- "U+0642", #Common
242
- "U+fed5", #Isolated
243
- "U+fed6", #Final
244
- "U+fed7", #Initial
245
- "U+fed8", #Medial
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
- "U+0643", #Common
253
- "U+fed9", #Isolated
254
- "U+feda", #Final
255
- "U+fedb", #Initial
256
- "U+fedc", #Medial
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
- "U+0644", #Common
263
- "U+fedd", #Isolated
264
- "U+fede", #Final
265
- "U+fedf", #Initial
266
- "U+fee0", #Medial
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
- "U+0645", #Common
273
- "U+fee1", #Isolated
274
- "U+fee2", #Final
275
- "U+fee3", #Initial
276
- "U+fee4", #Medial
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
- "U+0646", #Common
283
- "U+fee5", #Isolated
284
- "U+fee6", #Final
285
- "U+fee7", #Initial
286
- "U+fee8", #Medial
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
- "U+0647", #Common
293
- "U+fee9", #Isolated
294
- "U+feea", #Final
295
- "U+feeb", #Initial
296
- "U+feec", #Medial
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
- "U+0648", #Common
303
- "U+feed", #Isolated
304
- "U+feee", #Final
305
- "U+feed", #Initial
306
- "U+feee", #Medial
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
- "U+064a", #Common
313
- "U+fef1", #Isolated
314
- "U+fef2", #Final
315
- "U+fef3", #Initial
316
- "U+fef4", #Medial
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
- "U+0621", #Common
323
- "U+fe80", #Isolated
324
- "U+fe80", #Final
325
- "U+fe80", #Initial
326
- "U+fe80", #Medial
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
- "U+0622", #Common
334
- "U+fe81", #Isolated
335
- "U+fe82", #Final
336
- "U+fe81", #Initial
337
- "U+fe82", #Medial
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
- "U+0623", #Common
344
- "U+fe83", #Isolated
345
- "U+fe84", #Final
346
- "U+fe83", #Initial
347
- "U+fe84", #Medial
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
- "U+0624", #Common
354
- "U+fe85", #Isolated
355
- "U+fe86", #Final
356
- "U+fe85", #Initial
357
- "U+fe86", #Medial
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
- "U+0625", #Common
364
- "U+fe87", #Isolated
365
- "U+fe88", #Final
366
- "U+fe87", #Initial
367
- "U+fe88", #Medial
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
- "U+0626", #Common
374
- "U+fe89", #Isolated
375
- "U+fe8a", #Final
376
- "U+fe8b", #Initial
377
- "U+fe8c", #Medial
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
- "U+0629", #Common
384
- "U+fe93", #Isolated
385
- "U+fe94", #Final
386
- "U+fe93", #Initial
387
- "U+fe94", #Medial
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
- "U+0640", #Common
394
- "U+0640", #Isolated
395
- "U+0640", #Final
396
- "U+0640", #Initial
397
- "U+0640", #Medial
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
- "U+0649", #Common
404
- "U+feef", #Isolated
405
- "U+fef0", #Final
406
- "U+feef", #Initial
407
- "U+fef0", #Medial
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.each_utf8_char {|c|
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.reverse_utf8!
489
+ return connected_arabic.reverse
492
490
  else
493
491
  return connected_arabic
494
492
  end