prawn-arabic 0.0.4 → 0.0.5

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.
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