sixarm_ruby_magic_number_type 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,2 @@
1
+ �A��|\[�$���9e
2
+ µ�4L-.�>϶�A��ҡ��~.�
@@ -0,0 +1,12 @@
1
+ LICENSE
2
+
3
+ You may choose any of these licenses:
4
+
5
+ - CreativeCommons License, Non-commercial Share Alike
6
+ - LGPL, GNU Lesser General Public License
7
+ - MIT License
8
+ - Ruby License
9
+
10
+ THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
11
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
12
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
@@ -0,0 +1,30 @@
1
+
2
+ = SixArm.com » Ruby » MagicNumberType
3
+
4
+ Author:: Joel Parker Henderson, joelparkerhenderson@gmail.com
5
+ Copyright:: Copyright (c) 2010 Joel Parker Henderson
6
+ License:: See LICENSE.txt file
7
+
8
+ MagicNumberType infers the mime type of data from the leading bits.
9
+
10
+ It infers based on widespread programming conventions for data file formats.
11
+
12
+ Magic numbers are the first bits of a file or data stream
13
+ which uniquely identify the type of file or data stream.
14
+
15
+ For example when the first bits are "BM",
16
+ this identifies the file as a bitmap image file.
17
+
18
+ These magic numbers are by convention and we are using this guide:
19
+ http://www.astro.keele.ac.uk/oldusers/rno/Computing/File_magic.html
20
+
21
+ Typical uses of magic numbers:
22
+ - to quickly identify a file's data type
23
+ - to check if data matches the file's MIME type or extension
24
+ - to check if a web form file upload matches its HTTP content type
25
+
26
+ Compare:
27
+ - MIME::Types ruby library
28
+ - Unix magic() command for testing files on disk
29
+ - http://shared-mime.rubyforge.org/
30
+
@@ -0,0 +1,144 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin rdoc
3
+
4
+ = SixArm.com » Ruby » MagicNumberType
5
+
6
+ Author:: Joel Parker Henderson, joelparkerhenderson@gmail.com
7
+ Copyright:: Copyright (c) 2010 Joel Parker Henderson
8
+ License:: See LICENSE.txt file
9
+
10
+ MagicNumberType infers a data type from the data's leading bytes.
11
+
12
+ It infers based on widespread programming conventions for data file formats.
13
+
14
+ Magic numbers are the first bits of a file or data stream
15
+ which uniquely identify the type of file or data stream.
16
+
17
+ For example when the first bits are "BM",
18
+ this identifies the file as a bitmap image file.
19
+
20
+ These magic numbers are by convention and we are using this guide:
21
+ http://www.astro.keele.ac.uk/oldusers/rno/Computing/File_magic.html
22
+
23
+ Typical uses of magic numbers:
24
+ - to quickly identify a file's data type
25
+ - to check if data matches the file's MIME type or extension
26
+ - to check if a web form file upload matches its HTTP content type
27
+
28
+ Compare:
29
+ - MIME::Types ruby library
30
+ - Unix magic() command for testing files on disk
31
+ - http://shared-mime.rubyforge.org/
32
+
33
+ =end
34
+
35
+ require 'pp'
36
+
37
+ class IO
38
+
39
+ # We implement magic by using a lookup hash.
40
+ # The key is a string that encodes the first bits.
41
+ # The value is a symbol that indicates the magic type.
42
+ #
43
+ # Examples:
44
+ # IO::MagicNumberType("BM") => :bitmap
45
+ # IO::MagicNumberType("GIF8") => :gif
46
+ # IO::MagicNumberType("\xa6\x00") => :pgp_encrypted_data
47
+ #
48
+ # Quirks:
49
+ # - JPEG adjustment:
50
+ # - Some cameras put JPEG Exif data in bytes 3 & 4,
51
+ # so we only check the first two bytes of a JPEG.
52
+ # - TIFF has two possible matches:
53
+ # - MM** is Motorola big endian
54
+ # - II** is Intel little ending
55
+ #
56
+ # See:
57
+ # - IO#magic_number_type
58
+ # - File.magic_number_type
59
+
60
+ MagicNumberTypeHash = {
61
+ "BC" => :bitcode,
62
+ "BM" => :bitmap,
63
+ "BZ" => :bzip,
64
+ "MZ" => :exe,
65
+ "SIMPLE"=> :fits,
66
+ "GIF8" => :gif,
67
+ "GKSM" => :gks,
68
+ [0x01,0xDA].pack('c*') => :iris_rgb,
69
+ [0xF1,0x00,0x40,0xBB].pack('c*') => :itc,
70
+ [0xFF,0xD8].pack('c*') => :jpeg,
71
+ "IIN1" => :niff,
72
+ "MThd" => :midi,
73
+ "%PDF" => :pdf,
74
+ "VIEW" => :pm,
75
+ [0x89].pack('c*') + "PNG" => :png,
76
+ "%!" => :postscript,
77
+ "Y" + [0xA6].pack('c*') + "j" + [0x95].pack('c*') => :sun_rasterfile,
78
+ "MM*" + [0x00].pack('c*') => :tiff,
79
+ "II*" + [0x00].pack('c*') => :tiff,
80
+ "gimp xcf" => :gimp_xcf,
81
+ "#FIG" => :xfig,
82
+ "/* XPM */" => :xpm,
83
+ [0x23,0x21].pack('c*') => :shebang,
84
+ [0x1F,0x9D].pack('c*') => :compress,
85
+ [0x1F,0x8B].pack('c*') => :gzip,
86
+ "PK" + [0x03,0x04].pack('c*') => :pkzip,
87
+ "MZ" => :dos_os2_windows_executable,
88
+ ".ELF" => :unix_elf,
89
+ [0x99,0x00].pack('c*') => :pgp_public_ring,
90
+ [0x95,0x01].pack('c*') => :pgp_security_ring,
91
+ [0x95,0x00].pack('c*') => :pgp_security_ring,
92
+ [0xA6,0x00].pack('c*') => :pgp_encrypted_data,
93
+ [0xD0,0xCF,0x11,0xE0].pack('c*') => :docfile
94
+ }
95
+
96
+ # Detect the data type by checking various "magic number" conventions
97
+ # for the introductory bytes of a data stream
98
+ #
99
+ # Return the "magic number" as a symbol:
100
+ # - :bitmap = Bitmap image file, typical extension ".bmp"
101
+ # - :gzip = Unix GZIP compressed data, typical extension ".gz"
102
+ # - :postscript = Postscript pages, typical extension ".ps"
103
+ #
104
+ # Return nil if there's no match for any known magic number.
105
+ #
106
+ # Example:
107
+ # f = File.open("test.ps","rb")
108
+ # put f.magic_number(s)
109
+ # => :postscript
110
+ #
111
+ # See:
112
+ # - IO::MagicNumberTypeHash
113
+ # - File.magic_number_type
114
+
115
+ def magic_number_type(bytes=self.read(9))
116
+ MagicNumberTypeHash.each_pair do |byte_string,type_symbol|
117
+ return type_symbol if byte_string==bytes[0,byte_string.length]
118
+ end
119
+ return nil
120
+ end
121
+
122
+ end
123
+
124
+
125
+ class File
126
+
127
+ # Detect the file's data type by opening the file then
128
+ # using IO#magic_number_type to read the first bits.
129
+ #
130
+ # Return a magic number type symbol, e.g. :bitmap, :jpg, etc.
131
+ #
132
+ # Example:
133
+ # puts File.magic_number_type("test.ps") => :postscript
134
+ #
135
+ # See
136
+ # - IO#MagicNumberTypeHash
137
+ # - IO#magic_number_type
138
+
139
+ def self.magic_number_type(file_name)
140
+ File.open(file_name,"rb"){|f| f.magic_number_type }
141
+ end
142
+
143
+ end
144
+
@@ -0,0 +1,348 @@
1
+ %!PS-Adobe-3.0
2
+ %%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
3
+ %%Title: sample.ps
4
+ %%CreationDate: Sun Feb 6 22:49:17 2011
5
+ %%DocumentData: Clean7Bit
6
+ %%LanguageLevel: 2
7
+ %%Pages: 1
8
+ %%BoundingBox: 14 14 115 115
9
+ %%EndComments
10
+ %%BeginProlog
11
+ % Use own dictionary to avoid conflicts
12
+ 10 dict begin
13
+ %%EndProlog
14
+ %%Page: 1 1
15
+ % Translate for offset
16
+ 14.173228346456694 14.173228346456694 translate
17
+ % Translate to begin of first scanline
18
+ 0 99.999999999999986 translate
19
+ 99.999999999999986 -99.999999999999986 scale
20
+ % Image geometry
21
+ 100 100 8
22
+ % Transformation matrix
23
+ [ 100 0 0 100 0 0 ]
24
+ % Strings to hold RGB-samples per scanline
25
+ /rstr 100 string def
26
+ /gstr 100 string def
27
+ /bstr 100 string def
28
+ {currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
29
+ {currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
30
+ {currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
31
+ true 3
32
+ %%BeginData: 3724 ASCII Bytes
33
+ colorimage
34
+ SHaT~>
35
+ Sc=3~>
36
+ SH+0~>
37
+ SHaT~>
38
+ Sc=3~>
39
+ SH+0~>
40
+ SHaT~>
41
+ Sc=3~>
42
+ SH+0~>
43
+ SHaT~>
44
+ Sc=3~>
45
+ SH+0~>
46
+ SHaT~>
47
+ Sc=3~>
48
+ SH+0~>
49
+ SHaT~>
50
+ Sc=3~>
51
+ SH+0~>
52
+ SHaT~>
53
+ Sc=3~>
54
+ SH+0~>
55
+ SHaT~>
56
+ Sc=3~>
57
+ SH+0~>
58
+ SHaT~>
59
+ Sc=3~>
60
+ SH+0~>
61
+ SHaT~>
62
+ Sc=3~>
63
+ SH+0~>
64
+ SHaT~>
65
+ Sc=3~>
66
+ SH+0~>
67
+ SHaT~>
68
+ Sc=3~>
69
+ SH+0~>
70
+ SHaT~>
71
+ Sc=3~>
72
+ SH+0~>
73
+ SHaT~>
74
+ Sc=3~>
75
+ SH+0~>
76
+ SHaT~>
77
+ Sc=3~>
78
+ SH+0~>
79
+ SHaT~>
80
+ Sc=3~>
81
+ SH+0~>
82
+ SHaT~>
83
+ Sc=3~>
84
+ SH+0~>
85
+ SHaT~>
86
+ Sc=3~>
87
+ SH+0~>
88
+ SHaT~>
89
+ Sc=3~>
90
+ SH+0~>
91
+ SHaT~>
92
+ Sc=3~>
93
+ SH+0~>
94
+ SHaT~>
95
+ Sc=3~>
96
+ SH+0~>
97
+ SHaT~>
98
+ Sc=3~>
99
+ SH+0~>
100
+ SHaT~>
101
+ Sc=3~>
102
+ SH+0~>
103
+ SHaT~>
104
+ Sc=3~>
105
+ SH+0~>
106
+ SHaT~>
107
+ Sc=3~>
108
+ SH+0~>
109
+ SHaT~>
110
+ Sc=3~>
111
+ SH+0~>
112
+ SHaT~>
113
+ Sc=3~>
114
+ SH+0~>
115
+ SHaT~>
116
+ Sc=3~>
117
+ SH+0~>
118
+ SHaT~>
119
+ Sc=3~>
120
+ SH+0~>
121
+ SHaT~>
122
+ Sc=3~>
123
+ SH+0~>
124
+ SHaT~>
125
+ Sc=3~>
126
+ SH+0~>
127
+ SHaT~>
128
+ Sc=3~>
129
+ SH+0~>
130
+ SHaT~>
131
+ Sc=3~>
132
+ SH+0~>
133
+ SHaT~>
134
+ Sc=3~>
135
+ SH+0~>
136
+ SHaT~>
137
+ Sc=3~>
138
+ SH+0~>
139
+ SHaT~>
140
+ Sc=3~>
141
+ SH+0~>
142
+ SHaT~>
143
+ Sc=3~>
144
+ SH+0~>
145
+ SHaT~>
146
+ Sc=3~>
147
+ SH+0~>
148
+ ]a"H9j9C,~>
149
+ ^&S'3jSs`~>
150
+ SH+0~>
151
+ p'(a*!W`9$!<NAM#6"V`#(Q~>
152
+ pAYBH=;_5I*^FVis8E#Zs*t~>
153
+ SH+0~>
154
+ pBCU$q#JbGrW)!`J,~>
155
+ p\t9:$2OYKs8E#Zs*t~>
156
+ SH+0~>
157
+ pBCm)!!!**"pG,1cj'ILj9C,~>
158
+ p\tLe!!%lFq:_2pd/X(FjSs`~>
159
+ SH+0~>
160
+ pBLTsp'(L"r;Zm"!X8N,rW!90!WW6'"pG&.!<`6(rW!*+!s&B&"8rH'!<!*+"9JT(!!3;l#(Q~>
161
+ p\t=(!!)]drrA\j!!<KNA)$t^rW!>u?O@U/s4p*K(O,cTs8E!&rJN!-+F<b\s8E#srs#l+(^1L=
162
+ X7-(=~>
163
+ SH+0~>
164
+ pBLTs!<NH""on`$!!!3%#6"T&!rW*"!s/?#!!E0(rVup"qu?]trW`?%rWW?(q>^Ksn-4C~>
165
+ p\t@+!!$BRq#:>$qZ$X,fDbgL!!#pq!!.urr;ZhNrVuis!+l'."$cY^s8E#urrN+3q>^M-nGe"~>
166
+ SH+0~>
167
+ pBCU"r;Zm"!sJK*#Qb,4"pP/0!!<-(rW!!$"pFo*"Tel2!!!&u#6"T/!<iZ2!<<*%"pY&,rrrf5
168
+ !!!$'"pG&.!!MfrJ,~>
169
+ p\t55r;ZpMJ%PXVrs2f$jSS:s!!$7&s8E!":%+hU!!Q'bT`>'<rVuis#q*plbp`VmNW9%X!<<'+
170
+ SH&X?`qnUe!!&__s*t~>
171
+ SH+0~>
172
+ p'(L!qZ$Wt"nr6$!!!'!#6"T("U521!!3<.#6"W$#6"T&"TAT/"98E&"pY&,rrrQ+!!!3%"p5#/
173
+ !!2ToJ,~>
174
+ p\t<mJ-u2S!@?@mrr`0!!#tq;rW!#Is76-h"jd5F!!!3$s8Duu^&J$8^&S-fs8W&us8N0Y!!(1@
175
+ rr_Kc!'0TLJ,~>
176
+ SH+0~>
177
+ oEG<u!rW*!!rW<("9SE"rW`?%rW`?%rW`?%r<E6$r!*-#rs&H&rs&/snHOL~>
178
+ p&>-[O'3+o!!#=arri=j5nsP$!!!0$s8E!"q>^Hn!!W/trrE*"rVuis!;?El"nhor$31&)!<<'!
179
+ $MXT$%.X@J~>
180
+ SH+0~>
181
+ ncf*u!r`3!"onc#!<*3%!<*3%!<*3%!<!-$!;m'#!<39&!<38s!:^8D~>
182
+ o)AjU7fWMprr2t@p]1<nrW)rtrW)rtrW)osrVurlrr3/q!!!?*s8E#urr<E#!:g)>~>
183
+ SH+0~>
184
+ n-8jlrW`?%!!N9*rW)p%rW)p%rW)p%rW)m$rVup$rWWN/!!!$(#6"W&"p4l+!!VWlJ,~>
185
+ nc&^\!!!K-rrs&8!2oJhoDSahs8E#ts8E#ts8E#ss8Duu^Ae-9^&S-fs8W&us8N0[!!(a<s*t~>
186
+ SH+0~>
187
+ pBC["!sSZ.!s8N'!r`E'!!<?."TnZ'rW`?%rW`?%rW`?%r<E6$#lt26"T\T'!sSu/!<361"98E&
188
+ "9o&6"9S\p#(Q~>
189
+ p\tOOJACIJmY1]A7/m2j%0-C6q:emJ!<3#t!<3#t!<3#t!<)rs!!t+!qT^Mi!0$sXrW)uu$D@G"
190
+ 0Yd;XkIl?rnc++~>
191
+ SH+0~>
192
+ pBLBm!!W?+!!E-!!!<-"rW`?%rW`?%rW`?%r<E6$!!<&u!!3''rW)p%!!DurnHOL~>
193
+ p]($h!=?jHrr?j4!!$@)!<3#t!<3#t!<3#t!<)rs!!$U.!!>@[s8W&urr2t>p]0jaJ,~>
194
+ SH+0~>
195
+ pBC[%!Wi9#!W`?+r!!<,!<<-&#6"W%#6"W%#6"W%#6"W$#6"T+"p4l+!<`9)rW)m$#R(81!!!$#
196
+ !sS3!J,~>
197
+ p\tMl@5&;r#9dL*rVm)uINJ_8IJa!Drr;rtrr;rtrr;rtrVuis#5sH+"s8*_rr;rtrVm/@>pBXY
198
+ (I*>qnc++~>
199
+ SH+0~>
200
+ ap.hFf*6a~>
201
+ b5_G@fDg@~>
202
+ SH+0~>
203
+ ap.hFf*6a~>
204
+ b5_G@fDg@~>
205
+ SH+0~>
206
+ ap.hFf*6a~>
207
+ b5_G@fDg@~>
208
+ SH+0~>
209
+ ap.hFf*6a~>
210
+ b5_G@fDg@~>
211
+ SH+0~>
212
+ SHaT~>
213
+ Sc=3~>
214
+ SH+0~>
215
+ SHaT~>
216
+ Sc=3~>
217
+ SH+0~>
218
+ SHaT~>
219
+ Sc=3~>
220
+ SH+0~>
221
+ SHaT~>
222
+ Sc=3~>
223
+ SH+0~>
224
+ SHaT~>
225
+ Sc=3~>
226
+ SH+0~>
227
+ SHaT~>
228
+ Sc=3~>
229
+ SH+0~>
230
+ SHaT~>
231
+ Sc=3~>
232
+ SH+0~>
233
+ SHaT~>
234
+ Sc=3~>
235
+ SH+0~>
236
+ SHaT~>
237
+ Sc=3~>
238
+ SH+0~>
239
+ SHaT~>
240
+ Sc=3~>
241
+ SH+0~>
242
+ SHaT~>
243
+ Sc=3~>
244
+ SH+0~>
245
+ SHaT~>
246
+ Sc=3~>
247
+ SH+0~>
248
+ SHaT~>
249
+ Sc=3~>
250
+ SH+0~>
251
+ SHaT~>
252
+ Sc=3~>
253
+ SH+0~>
254
+ SHaT~>
255
+ Sc=3~>
256
+ SH+0~>
257
+ SHaT~>
258
+ Sc=3~>
259
+ SH+0~>
260
+ SHaT~>
261
+ Sc=3~>
262
+ SH+0~>
263
+ SHaT~>
264
+ Sc=3~>
265
+ SH+0~>
266
+ SHaT~>
267
+ Sc=3~>
268
+ SH+0~>
269
+ SHaT~>
270
+ Sc=3~>
271
+ SH+0~>
272
+ SHaT~>
273
+ Sc=3~>
274
+ SH+0~>
275
+ SHaT~>
276
+ Sc=3~>
277
+ SH+0~>
278
+ SHaT~>
279
+ Sc=3~>
280
+ SH+0~>
281
+ SHaT~>
282
+ Sc=3~>
283
+ SH+0~>
284
+ SHaT~>
285
+ Sc=3~>
286
+ SH+0~>
287
+ SHaT~>
288
+ Sc=3~>
289
+ SH+0~>
290
+ SHaT~>
291
+ Sc=3~>
292
+ SH+0~>
293
+ SHaT~>
294
+ Sc=3~>
295
+ SH+0~>
296
+ SHaT~>
297
+ Sc=3~>
298
+ SH+0~>
299
+ SHaT~>
300
+ Sc=3~>
301
+ SH+0~>
302
+ SHaT~>
303
+ Sc=3~>
304
+ SH+0~>
305
+ SHaT~>
306
+ Sc=3~>
307
+ SH+0~>
308
+ SHaT~>
309
+ Sc=3~>
310
+ SH+0~>
311
+ SHaT~>
312
+ Sc=3~>
313
+ SH+0~>
314
+ SHaT~>
315
+ Sc=3~>
316
+ SH+0~>
317
+ SHaT~>
318
+ Sc=3~>
319
+ SH+0~>
320
+ SHaT~>
321
+ Sc=3~>
322
+ SH+0~>
323
+ SHaT~>
324
+ Sc=3~>
325
+ SH+0~>
326
+ SHaT~>
327
+ Sc=3~>
328
+ SH+0~>
329
+ SHaT~>
330
+ Sc=3~>
331
+ SH+0~>
332
+ SHaT~>
333
+ Sc=3~>
334
+ SH+0~>
335
+ SHaT~>
336
+ Sc=3~>
337
+ SH+0~>
338
+ SHaT~>
339
+ Sc=3~>
340
+ SH+0~>
341
+ SHaT~>
342
+ Sc=3~>
343
+ SH+0~>
344
+ %%EndData
345
+ showpage
346
+ %%Trailer
347
+ end
348
+ %%EOF
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sixarm_ruby_magic_number_type
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 1.0.0
6
+ platform: ruby
7
+ authors:
8
+ - SixArm
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain:
12
+ - |
13
+ -----BEGIN CERTIFICATE-----
14
+ MIIDBDCCAm2gAwIBAgIJAKPwEETU5bHoMA0GCSqGSIb3DQEBBQUAMGAxCzAJBgNV
15
+ BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
16
+ c2NvMQ8wDQYDVQQKEwZTaXhBcm0xEzARBgNVBAMTCnNpeGFybS5jb20wHhcNMTAx
17
+ MjEzMjMyNzEzWhcNMTMwOTA4MjMyNzEzWjBgMQswCQYDVQQGEwJVUzETMBEGA1UE
18
+ CBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEPMA0GA1UEChMG
19
+ U2l4QXJtMRMwEQYDVQQDEwpzaXhhcm0uY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GN
20
+ ADCBiQKBgQC94mD9JDwBsunsOI0VR3CXXbOWg9cWaWciwFyJNFiM7A9I8KPLfXUw
21
+ QC4czUe5ZuG4WHvinrWhkrCK+1dWBqoEClxdF/FoKO5a+tonGCjjmfy81JmFjjyx
22
+ eTsjsHyvw+Qik9kpf9aj6+pnkNrVswgNHVea2o9yabbEiS6VSeJWoQIDAQABo4HF
23
+ MIHCMB0GA1UdDgQWBBQzPJtqmSgc53eDN7aSzDQwr9TALDCBkgYDVR0jBIGKMIGH
24
+ gBQzPJtqmSgc53eDN7aSzDQwr9TALKFkpGIwYDELMAkGA1UEBhMCVVMxEzARBgNV
25
+ BAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xDzANBgNVBAoT
26
+ BlNpeEFybTETMBEGA1UEAxMKc2l4YXJtLmNvbYIJAKPwEETU5bHoMAwGA1UdEwQF
27
+ MAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAooEexP/oPam1TP71SyuhxMb+uTrZbSQe
28
+ jVB+ExRwWadGwaNPUA56d39qwavwP+iu+3JpeonNMVvbWXF5naCX/dNFIeREHzER
29
+ ZDRQYMqru9TEMna6HD9zpcstF7vwThGovlOQ+3Y6plQ4nMzipXcZ9THqs65PIL0q
30
+ eabwpCbAopo=
31
+ -----END CERTIFICATE-----
32
+
33
+ date: 2011-02-07 00:00:00 -08:00
34
+ default_executable:
35
+ dependencies: []
36
+
37
+ description:
38
+ email: sixarm@sixarm.com
39
+ executables: []
40
+
41
+ extensions: []
42
+
43
+ extra_rdoc_files: []
44
+
45
+ files:
46
+ - README.rdoc
47
+ - LICENSE.txt
48
+ - lib/sixarm_ruby_magic_number_type.rb
49
+ - test/sixarm_ruby_magic_number_type/sample.fit
50
+ - test/sixarm_ruby_magic_number_type/sample.gif
51
+ - test/sixarm_ruby_magic_number_type/sample.jpg
52
+ - test/sixarm_ruby_magic_number_type/sample.png
53
+ - test/sixarm_ruby_magic_number_type/sample.ps
54
+ - test/sixarm_ruby_magic_number_type/sample.ras
55
+ - test/sixarm_ruby_magic_number_type/sample.sgi
56
+ - test/sixarm_ruby_magic_number_type/sample.tiff
57
+ - test/sixarm_ruby_magic_number_type/sample.xcf.bz2
58
+ - test/sixarm_ruby_magic_number_type/sample.xcf.gz
59
+ has_rdoc: true
60
+ homepage: http://sixarm.com/
61
+ licenses: []
62
+
63
+ post_install_message:
64
+ rdoc_options: []
65
+
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: "0"
80
+ requirements: []
81
+
82
+ rubyforge_project:
83
+ rubygems_version: 1.5.0
84
+ signing_key:
85
+ specification_version: 3
86
+ summary: "SixArm.com \xC2\xBB Ruby \xC2\xBB Magic number type inspects bytes to decide on a mime type"
87
+ test_files: []
88
+
@@ -0,0 +1,2 @@
1
+ C>kf���l�&����������?�N���O�ȹ_��ѫ��ƃ � �#W���{�x��mv-PK(u���O�Fl5��>�<
2
+ 8�X�J.k�����RʲO��A9�����~Y�iwq�x[R