flatulent 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/flatulent-0.0.4.gem +0 -0
  2. data/install.rb +210 -0
  3. data/lib/flatulent.rb +76 -61
  4. data/rails/app/controllers/flatulent_controller.rb +6 -4
  5. data/rails/log/development.log +7242 -0
  6. data/rails/tmp/sessions/ruby_sess.82080df62364f531 +0 -0
  7. data/rails/tmp/sessions/ruby_sess.8900d08ad306f253 +0 -0
  8. data/rails/tmp/sessions/ruby_sess.f8fa47c3571d2497 +0 -0
  9. metadata +7 -49
  10. data/flatulent-0.0.2.gem +0 -0
  11. data/rails/lib/flatulent.rb +0 -450
  12. data/rails/lib/flatulent/attributes.rb +0 -79
  13. data/rails/lib/flatulent/crypt/blowfish-tables.rb +0 -190
  14. data/rails/lib/flatulent/crypt/blowfish.rb +0 -109
  15. data/rails/lib/flatulent/crypt/cbc.rb +0 -123
  16. data/rails/lib/flatulent/crypt/gost.rb +0 -140
  17. data/rails/lib/flatulent/crypt/idea.rb +0 -193
  18. data/rails/lib/flatulent/crypt/noise.rb +0 -94
  19. data/rails/lib/flatulent/crypt/purerubystringio.rb +0 -378
  20. data/rails/lib/flatulent/crypt/rijndael-tables.rb +0 -117
  21. data/rails/lib/flatulent/crypt/rijndael.rb +0 -269
  22. data/rails/lib/flatulent/fontfiles/banner.flf +0 -2494
  23. data/rails/lib/flatulent/fontfiles/big.flf +0 -2204
  24. data/rails/lib/flatulent/fontfiles/block.flf +0 -1691
  25. data/rails/lib/flatulent/fontfiles/bubble.flf +0 -1630
  26. data/rails/lib/flatulent/fontfiles/digital.flf +0 -1286
  27. data/rails/lib/flatulent/fontfiles/ivrit.flf +0 -900
  28. data/rails/lib/flatulent/fontfiles/lean.flf +0 -1691
  29. data/rails/lib/flatulent/fontfiles/mini.flf +0 -899
  30. data/rails/lib/flatulent/fontfiles/mnemonic.flf +0 -3702
  31. data/rails/lib/flatulent/fontfiles/script.flf +0 -1493
  32. data/rails/lib/flatulent/fontfiles/shadow.flf +0 -1097
  33. data/rails/lib/flatulent/fontfiles/slant.flf +0 -1295
  34. data/rails/lib/flatulent/fontfiles/small.flf +0 -1097
  35. data/rails/lib/flatulent/fontfiles/smscript.flf +0 -1097
  36. data/rails/lib/flatulent/fontfiles/smshadow.flf +0 -899
  37. data/rails/lib/flatulent/fontfiles/smslant.flf +0 -1097
  38. data/rails/lib/flatulent/fontfiles/standard.flf +0 -2227
  39. data/rails/lib/flatulent/fontfiles/term.flf +0 -600
  40. data/rails/lib/flatulent/pervasives.rb +0 -32
  41. data/rails/lib/flatulent/stringxor.rb +0 -27
  42. data/rails/lib/flatulent/text.rb +0 -6
  43. data/rails/lib/flatulent/text/double_metaphone.rb +0 -356
  44. data/rails/lib/flatulent/text/figlet.rb +0 -17
  45. data/rails/lib/flatulent/text/figlet/font.rb +0 -117
  46. data/rails/lib/flatulent/text/figlet/smusher.rb +0 -64
  47. data/rails/lib/flatulent/text/figlet/typesetter.rb +0 -68
  48. data/rails/lib/flatulent/text/levenshtein.rb +0 -65
  49. data/rails/lib/flatulent/text/metaphone.rb +0 -97
  50. data/rails/lib/flatulent/text/porter_stemming.rb +0 -171
  51. data/rails/lib/flatulent/text/soundex.rb +0 -61
@@ -1,32 +0,0 @@
1
- module Pervasives
2
- VERSION = "1.0.0"
3
- def self.version() VERSION end
4
- class ::Class
5
- def __pervasive__ m, *a, &b
6
- (( Class.instance_method(m) rescue Module.instance_method(m) rescue Object.instance_method(m) )).bind(self).call(*a, &b)
7
- end
8
- end
9
- class ::Module
10
- def __pervasive__ m, *a, &b
11
- (( Module.instance_method(m) rescue Object.instance_method(m) )).bind(self).call(*a, &b)
12
- end
13
- end
14
- class ::Object
15
- def __pervasive__ m, *a, &b
16
- (( Object.instance_method(m) )).bind(self).call(*a, &b)
17
- end
18
- end
19
-
20
- class Proxy
21
- instance_methods.each{|m| undef_method m unless m[%r/__/]}
22
- def initialize obj
23
- @obj = obj
24
- end
25
- def method_missing m, *a, &b
26
- @obj.__pervasive__ m, *a, &b
27
- end
28
- def __obj__
29
- @obj
30
- end
31
- end
32
- end
@@ -1,27 +0,0 @@
1
- # stringxor.rb Richard Kernahan <kernighan_rich@rubyforge.org>
2
-
3
- module Crypt
4
- module StringXor
5
-
6
-
7
- def ^(aString)
8
- a = self.unpack('C'*(self.length))
9
- b = aString.unpack('C'*(aString.length))
10
- if (b.length < a.length)
11
- (a.length - b.length).times { b << 0 }
12
- end
13
- xor = ""
14
- 0.upto(a.length-1) { |pos|
15
- x = a[pos] ^ b[pos]
16
- xor << x.chr()
17
- }
18
- return(xor)
19
- end
20
-
21
-
22
- end
23
- end
24
-
25
- class String
26
- include Crypt::StringXor
27
- end
@@ -1,6 +0,0 @@
1
- require 'text/double_metaphone'
2
- require 'text/figlet'
3
- require 'text/levenshtein'
4
- require 'text/metaphone'
5
- require 'text/porter_stemming'
6
- require 'text/soundex'
@@ -1,356 +0,0 @@
1
- #
2
- # Ruby implementation of the Double Metaphone algorithm by Lawrence Philips,
3
- # originally published in the June 2000 issue of C/C++ Users Journal.
4
- #
5
- # Based on Stephen Woodbridge's PHP version - http://swoodbridge.com/DoubleMetaPhone/
6
- #
7
- # Author: Tim Fletcher (twoggle@gmail.com)
8
- #
9
-
10
- module Text # :nodoc:
11
- module Metaphone
12
-
13
- # Returns the primary and secondary double metaphone tokens
14
- # (the secondary will be nil if equal to the primary).
15
- def double_metaphone(str)
16
- primary, secondary, current = [], [], 0
17
- original, length, last = "#{str} ".upcase, str.length, str.length - 1
18
- if /^GN|KN|PN|WR|PS$/ =~ original[0, 2]
19
- current += 1
20
- end
21
- if 'X' == original[0, 1]
22
- primary << :S
23
- secondary << :S
24
- current += 1
25
- end
26
- while primary.length < 4 || secondary.length < 4
27
- break if current > str.length
28
- a, b, c = double_metaphone_lookup(original, current, length, last)
29
- primary << a if a
30
- secondary << b if b
31
- current += c if c
32
- end
33
- primary, secondary = primary.to_s[0, 4], secondary.to_s[0, 4]
34
- return primary, (primary == secondary ? nil : secondary)
35
- end
36
-
37
-
38
- private
39
-
40
- def slavo_germanic?(str)
41
- /W|K|CZ|WITZ/ =~ str
42
- end
43
-
44
- def vowel?(str)
45
- /^A|E|I|O|U|Y$/ =~ str
46
- end
47
-
48
- def double_metaphone_lookup(str, pos, length, last)
49
- case str[pos, 1]
50
- when /^A|E|I|O|U|Y$/
51
- if 0 == pos
52
- return :A, :A, 1
53
- else
54
- return nil, nil, 1
55
- end
56
- when 'B'
57
- return :P, :P, ('B' == str[pos + 1, 1] ? 2 : 1)
58
- when 'Ç'
59
- return :S, :S, 1
60
- when 'C'
61
- if pos > 1 &&
62
- !vowel?(str[pos - 2, 1]) &&
63
- 'ACH' == str[pos - 1, 3] &&
64
- str[pos + 2, 1] != 'I' && (
65
- str[pos + 2, 1] != 'E' ||
66
- str[pos - 2, 6] =~ /^(B|M)ACHER$/
67
- ) then
68
- return :K, :K, 2
69
- elsif 0 == pos && 'CAESAR' == str[pos, 6]
70
- return :S, :S, 2
71
- elsif 'CHIA' == str[pos, 4]
72
- return :K, :K, 2
73
- elsif 'CH' == str[pos, 2]
74
- if pos > 0 && 'CHAE' == str[pos, 4]
75
- return :K, :X, 2
76
- elsif 0 == pos && (
77
- ['HARAC', 'HARIS'].include?(str[pos + 1, 5]) ||
78
- ['HOR', 'HYM', 'HIA', 'HEM'].include?(str[pos + 1, 3])
79
- ) && str[0, 5] != 'CHORE' then
80
- return :K, :K, 2
81
- elsif ['VAN ','VON '].include?(str[0, 4]) ||
82
- 'SCH' == str[0, 3] ||
83
- ['ORCHES','ARCHIT','ORCHID'].include?(str[pos - 2, 6]) ||
84
- ['T','S'].include?(str[pos + 2, 1]) || (
85
- ((0 == pos) || ['A','O','U','E'].include?(str[pos - 1, 1])) &&
86
- ['L','R','N','M','B','H','F','V','W',' '].include?(str[pos + 2, 1])
87
- ) then
88
- return :K, :K, 2
89
- elsif pos > 0
90
- return ('MC' == str[0, 2] ? 'K' : 'X'), 'K', 2
91
- else
92
- return :X, :X, 2
93
- end
94
- elsif 'CZ' == str[pos, 2] && 'WICZ' != str[pos - 2, 4]
95
- return :S, :X, 2
96
- elsif 'CIA' == str[pos + 1, 3]
97
- return :X, :X, 3
98
- elsif 'CC' == str[pos, 2] && !(1 == pos && 'M' == str[0, 1])
99
- if /^I|E|H$/ =~ str[pos + 2, 1] && 'HU' != str[pos + 2, 2]
100
- if (1 == pos && 'A' == str[pos - 1, 1]) ||
101
- /^UCCE(E|S)$/ =~ str[pos - 1, 5] then
102
- return :KS, :KS, 3
103
- else
104
- return :X, :X, 3
105
- end
106
- else
107
- return :K, :K, 2
108
- end
109
- elsif /^C(K|G|Q)$/ =~ str[pos, 2]
110
- return :K, :K, 2
111
- elsif /^C(I|E|Y)$/ =~ str[pos, 2]
112
- return :S, (/^CI(O|E|A)$/ =~ str[pos, 3] ? :X : :S), 2
113
- else
114
- if /^ (C|Q|G)$/ =~ str[pos + 1, 2]
115
- return :K, :K, 3
116
- else
117
- return :K, :K, (/^C|K|Q$/ =~ str[pos + 1, 1] && !(['CE','CI'].include?(str[pos + 1, 2])) ? 2 : 1)
118
- end
119
- end
120
- when 'D'
121
- if 'DG' == str[pos, 2]
122
- if /^I|E|Y$/ =~ str[pos + 2, 1]
123
- return :J, :J, 3
124
- else
125
- return :TK, :TK, 2
126
- end
127
- else
128
- return :T, :T, (/^D(T|D)$/ =~ str[pos, 2] ? 2 : 1)
129
- end
130
- when 'F'
131
- return :F, :F, ('F' == str[pos + 1, 1] ? 2 : 1)
132
- when 'G'
133
- if 'H' == str[pos + 1, 1]
134
- if pos > 0 && !vowel?(str[pos - 1, 1])
135
- return :K, :K, 2
136
- elsif 0 == pos
137
- if 'I' == str[pos + 2, 1]
138
- return :J, :J, 2
139
- else
140
- return :K, :K, 2
141
- end
142
- elsif (pos > 1 && /^B|H|D$/ =~ str[pos - 2, 1]) ||
143
- (pos > 2 && /^B|H|D$/ =~ str[pos - 3, 1]) ||
144
- (pos > 3 && /^B|H$/ =~ str[pos - 4, 1])
145
- return nil, nil, 2
146
- else
147
- if (pos > 2 && 'U' == str[pos - 1, 1] && /^C|G|L|R|T$/ =~ str[pos - 3, 1])
148
- return :F, :F, 2
149
- elsif pos > 0 && 'I' != str[pos - 1, 1]
150
- return :K, :K, 2
151
- else
152
- return nil, nil, 2
153
- end
154
- end
155
- elsif 'N' == str[pos + 1, 1]
156
- if 1 == pos && vowel?(str[0, 1]) && !slavo_germanic?(str)
157
- return :KN, :N, 2
158
- else
159
- if 'EY' != str[pos + 2, 2] && 'Y' != str[pos + 1, 1] && !slavo_germanic?(str)
160
- return :N, :KN, 2
161
- else
162
- return :KN, :KN, 2
163
- end
164
- end
165
- elsif 'LI' == str[pos + 1, 2] && !slavo_germanic?(str)
166
- return :KL, :L, 2
167
- elsif 0 == pos && ('Y' == str[pos + 1, 1] || /^(E(S|P|B|L|Y|I|R)|I(B|L|N|E))$/ =~ str[pos + 1, 2])
168
- return :K, :J, 2
169
- elsif (('ER' == str[pos + 1, 2] || 'Y' == str[pos + 1, 1]) &&
170
- /^(D|R|M)ANGER$/ !~ str[0, 6] &&
171
- /^E|I$/ !~ str[pos - 1, 1] &&
172
- /^(R|O)GY$/ !~ str[pos - 1, 3])
173
- return :K, :J, 2
174
- elsif /^E|I|Y$/ =~ str[pos + 1, 1] || /^(A|O)GGI$/ =~ str[pos - 1, 4]
175
- if (/^V(A|O)N $/ =~ str[0, 4] || 'SCH' == str[0, 3]) || 'ET' == str[pos + 1, 2]
176
- return :K, :K, 2
177
- else
178
- if 'IER ' == str[pos + 1, 4]
179
- return :J, :J, 2
180
- else
181
- return :J, :K, 2
182
- end
183
- end
184
- elsif 'G' == str[pos + 1, 1]
185
- return :K, :K, 2
186
- else
187
- return :K, :K, 1
188
- end
189
- when 'H'
190
- if (0 == pos || vowel?(str[pos - 1, 1])) && vowel?(str[pos + 1, 1])
191
- return :H, :H, 2
192
- else
193
- return nil, nil, 1
194
- end
195
- when 'J'
196
- if 'JOSE' == str[pos, 4] || 'SAN ' == str[0, 4]
197
- if (0 == pos && ' ' == str[pos + 4, 1]) || 'SAN ' == str[0, 4]
198
- return :H, :H, 1
199
- else
200
- return :J, :H, 1
201
- end
202
- else
203
- current = ('J' == str[pos + 1, 1] ? 2 : 1)
204
-
205
- if 0 == pos && 'JOSE' != str[pos, 4]
206
- return :J, :A, current
207
- else
208
- if vowel?(str[pos - 1, 1]) && !slavo_germanic?(str) && /^A|O$/ =~ str[pos + 1, 1]
209
- return :J, :H, current
210
- else
211
- if last == pos
212
- return :J, nil, current
213
- else
214
- if /^L|T|K|S|N|M|B|Z$/ !~ str[pos + 1, 1] && /^S|K|L$/ !~ str[pos - 1, 1]
215
- return :J, :J, current
216
- else
217
- return nil, nil, current
218
- end
219
- end
220
- end
221
- end
222
- end
223
- when 'K'
224
- return :K, :K, ('K' == str[pos + 1, 1] ? 2 : 1)
225
- when 'L'
226
- if 'L' == str[pos + 1, 1]
227
- if (((length - 3) == pos && /^(ILL(O|A)|ALLE)$/ =~ str[pos - 1, 4]) ||
228
- ((/^(A|O)S$/ =~ str[last - 1, 2] || /^A|O$/ =~ str[last, 1]) && 'ALLE' == str[pos - 1, 4]))
229
- return :L, nil, 2
230
- else
231
- return :L, :L, 2
232
- end
233
- else
234
- return :L, :L, 1
235
- end
236
- when 'M'
237
- if ('UMB' == str[pos - 1, 3] &&
238
- ((last - 1) == pos || 'ER' == str[pos + 2, 2])) || 'M' == str[pos + 1, 1]
239
- return :M, :M, 2
240
- else
241
- return :M, :M, 1
242
- end
243
- when 'N'
244
- return :N, :N, ('N' == str[pos + 1, 1] ? 2 : 1)
245
- when 'Ñ'
246
- return :N, :N, 1
247
- when 'P'
248
- if 'H' == str[pos + 1, 1]
249
- return :F, :F, 2
250
- else
251
- return :P, :P, (/^P|B$/ =~ str[pos + 1, 1] ? 2 : 1)
252
- end
253
- when 'Q'
254
- return :K, :K, ('Q' == str[pos + 1, 1] ? 2 : 1)
255
- when 'R'
256
- current = ('R' == str[pos + 1, 1] ? 2 : 1)
257
-
258
- if last == pos && !slavo_germanic?(str) && 'IE' == str[pos - 2, 2] && /^M(E|A)$/ !~ str[pos - 4, 2]
259
- return nil, :R, current
260
- else
261
- return :R, :R, current
262
- end
263
- when 'S'
264
- if /^(I|Y)SL$/ =~ str[pos - 1, 3]
265
- return nil, nil, 1
266
- elsif 0 == pos && 'SUGAR' == str[pos, 5]
267
- return :X, :S, 1
268
- elsif 'SH' == str[pos, 2]
269
- if /^H(EIM|OEK|OLM|OLZ)$/ =~ str[pos + 1, 4]
270
- return :S, :S, 2
271
- else
272
- return :X, :X, 2
273
- end
274
- elsif /^SI(O|A)$/ =~ str[pos, 3] || 'SIAN' == str[pos, 4]
275
- return :S, (slavo_germanic?(str) ? :S : :X), 3
276
- elsif (0 == pos && /^M|N|L|W$/ =~ str[pos + 1, 1]) || 'Z' == str[pos + 1, 1]
277
- return :S, :X, ('Z' == str[pos + 1, 1] ? 2 : 1)
278
- elsif 'SC' == str[pos, 2]
279
- if 'H' == str[pos + 2, 1]
280
- if /^OO|ER|EN|UY|ED|EM$/ =~ str[pos + 3, 2]
281
- return (/^E(R|N)$/ =~ str[pos + 3, 2] ? :X : :SK), :SK, 3
282
- else
283
- return :X, ((0 == pos && !vowel?(str[3, 1]) && ('W' != str[pos + 3, 1])) ? :S : :X), 3
284
- end
285
- elsif /^I|E|Y$/ =~ str[pos + 2, 1]
286
- return :S, :S, 3
287
- else
288
- return :SK, :SK, 3
289
- end
290
- else
291
- return (last == pos && /^(A|O)I$/ =~ str[pos - 2, 2] ? nil : 'S'), 'S', (/^S|Z$/ =~ str[pos + 1, 1] ? 2 : 1)
292
- end
293
- when 'T'
294
- if 'TION' == str[pos, 4]
295
- return :X, :X, 3
296
- elsif /^T(IA|CH)$/ =~ str[pos, 3]
297
- return :X, :X, 3
298
- elsif 'TH' == str[pos, 2] || 'TTH' == str[pos, 3]
299
- if /^(O|A)M$/ =~ str[pos + 2, 2] || /^V(A|O)N $/ =~ str[0, 4] || 'SCH' == str[0, 3]
300
- return :T, :T, 2
301
- else
302
- return 0, :T, 2
303
- end
304
- else
305
- return :T, :T, (/^T|D$/ =~ str[pos + 1, 1] ? 2 : 1)
306
- end
307
- when 'V'
308
- return :F, :F, ('V' == str[pos + 1, 1] ? 2 : 1)
309
- when 'W'
310
- if 'WR' == str[pos, 2]
311
- return :R, :R, 2
312
- end
313
- pri, sec = nil, nil
314
-
315
- if 0 == pos && (vowel?(str[pos + 1, 1]) || 'WH' == str[pos, 2])
316
- pri = :A
317
- sec = vowel?(str[pos + 1, 1]) ? :F : :A
318
- end
319
-
320
- if (last == pos && vowel?(str[pos - 1, 1])) || 'SCH' == str[0, 3] ||
321
- /^EWSKI|EWSKY|OWSKI|OWSKY$/ =~ str[pos - 1, 5]
322
- return pri, "#{sec}F".intern, 1
323
- elsif /^WI(C|T)Z$/ =~ str[pos, 4]
324
- return "#{pri}TS".intern, "#{sec}FX".intern, 4
325
- else
326
- return pri, sec, 1
327
- end
328
- when 'X'
329
- current = (/^C|X$/ =~ str[pos + 1, 1] ? 2 : 1)
330
-
331
- if !(last == pos && (/^(I|E)AU$/ =~ str[pos - 3, 3] || /^(A|O)U$/ =~ str[pos - 2, 2]))
332
- return :KS, :KS, current
333
- else
334
- return nil, nil, current
335
- end
336
- when 'Z'
337
- if 'H' == str[pos + 1, 1]
338
- return :J, :J, 2
339
- else
340
- current = ('Z' == str[pos + 1, 1] ? 2 : 1)
341
-
342
- if /^Z(O|I|A)$/ =~ str[pos + 1, 2] || (slavo_germanic?(str) && (pos > 0 && 'T' != str[pos - 1, 1]))
343
- return :S, :TS, current
344
- else
345
- return :S, :S, current
346
- end
347
- end
348
- else
349
- return nil, nil, 1
350
- end
351
- end # def double_metaphone_lookup
352
-
353
- extend self
354
-
355
- end # module Metaphone
356
- end # module Text
@@ -1,17 +0,0 @@
1
- #
2
- # Ruby implementation of the Figlet program (http://www.figlet.org/).
3
- #
4
- # Author: Tim Fletcher (twoggle@gmail.com)
5
- #
6
- # Usage:
7
- #
8
- # big_font = Text::Figlet::Font.new('big.flf')
9
- #
10
- # figlet = Text::Figlet::Typesetter.new(big_font)
11
- #
12
- # puts figlet['hello world']
13
- #
14
- #
15
- require 'text/figlet/font'
16
- require 'text/figlet/smusher'
17
- require 'text/figlet/typesetter'
@@ -1,117 +0,0 @@
1
- module Text
2
- module Figlet
3
-
4
- class UnknownFontFormat < StandardError
5
- end
6
-
7
- class Font
8
- def initialize(filename, load_german = true)
9
- file = File.open(filename, 'rb')
10
-
11
- header = file.gets.strip.split(/ /)
12
-
13
- raise UnknownFontFormat if 'flf2a' != header[0][0, 5]
14
-
15
- @hard_blank = header.shift[-1, 1]
16
- @height = header.shift.to_i
17
- @baseline = header.shift
18
- @max_length = header.shift
19
- @old_layout = header.shift.to_i
20
- @comment_count = header.shift.to_i
21
- @right_to_left = header.shift
22
- @right_to_left = !@right_to_left.nil? && @right_to_left.to_i == 1
23
-
24
- @load_german, @characters = load_german, {}
25
-
26
- load_comments file
27
- load_ascii_characters file
28
- load_german_characters file
29
- load_extended_characters file
30
-
31
- file.close
32
- end
33
-
34
- def [](char)
35
- @characters[char]
36
- end
37
-
38
- def has_char?(char)
39
- @characters.has_key? char
40
- end
41
-
42
- attr_reader :height, :hard_blank, :old_layout
43
-
44
- def right_to_left?
45
- @right_to_left
46
- end
47
-
48
-
49
- private
50
-
51
- def load_comments(file)
52
- @comment_count.times { file.gets.strip }
53
- end
54
-
55
- def load_ascii_characters(file)
56
- (32..126).each { |i| @characters[i] = load_char(file) }
57
- end
58
-
59
- def load_german_characters(file)
60
- [91, 92, 93, 123, 124, 125, 126].each do |i|
61
- if @load_german
62
- unless char = load_char(file)
63
- return
64
- end
65
- @characters[i] = char
66
- else
67
- skip_char file
68
- end
69
- end
70
- end
71
-
72
- def load_extended_characters(file)
73
- until file.eof?
74
- i = file.gets.strip.split(/ /).first
75
- if i.empty?
76
- next
77
- elsif /^\-0x/i =~ i # comment
78
- skip_char file
79
- else
80
- if /^0x/i =~ i
81
- i = i[2, 1].hex
82
- elsif '0' == i[0] && '0' != i || '-0' == i[0, 2]
83
- i = i.oct
84
- end
85
- unless char = load_char(file)
86
- return
87
- end
88
- @characters[i] = char
89
- end
90
- end
91
- end
92
-
93
- def load_char(file)
94
- char = []
95
- @height.times do
96
- return false if file.eof?
97
- line = file.gets.rstrip
98
- if match = /(.){1,2}$/.match(line)
99
- line.gsub! match[1], ''
100
- end
101
- line << "\x00"
102
- char << line
103
- end
104
- return char
105
- end
106
-
107
- def skip_char(file)
108
- @height.times do
109
- return if file.eof?
110
- return if file.gets.strip.nil?
111
- end
112
- end
113
-
114
- end
115
-
116
- end # module Figlet
117
- end # module Text