typor 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/Gemfile +2 -0
- data/LICENSE.txt +21 -0
- data/README.md +38 -0
- data/Rakefile +9 -0
- data/lib/typor.rb +30 -0
- data/lib/typor/magic.rb +413 -0
- data/lib/typor/version.rb +9 -0
- data/typor.gemspec +24 -0
- metadata +110 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0364d61fca8f071d08eede93a928ca812e517ea5
|
4
|
+
data.tar.gz: bc55e534e5dcec384fea52b18e585f4dcf46c4fc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: bff0e1e5655d22a133f96b5f23500b8cc9318b9b5fd6967e5dff6548685c6ff4771a5292b57139cf1d89c705c9291843b46e5c6138b06e6a7335225a54c2941a
|
7
|
+
data.tar.gz: 6c72de5c1d3979df3f8212afee9963f2129c48903b3755c855a438b04521855ef80f680ff34a3a9cfe96a13329a8960724e7df85e018daa9bbd5080c8dded9d0
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2016 Paul Duncan
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# Typor
|
2
|
+
|
3
|
+
Stupid Type Magic for Ruby
|
4
|
+
|
5
|
+
## Presentation
|
6
|
+
|
7
|
+
This library provides MIME detection magic based on file contents - nothing more.
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
### Gemfile
|
12
|
+
```ruby
|
13
|
+
gem 'typor'
|
14
|
+
```
|
15
|
+
|
16
|
+
### Terminal
|
17
|
+
```bash
|
18
|
+
gem install -V typor
|
19
|
+
```
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
Typor provides basic detection of most MIME types, based on actual file contents.
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
# Determine File Type
|
27
|
+
Typor.file 'raccoon.png'
|
28
|
+
# => 'image/png'
|
29
|
+
|
30
|
+
# Determine Data Type
|
31
|
+
data = File.read 'raccoon.png'
|
32
|
+
Typor.data data
|
33
|
+
# => 'image/png'
|
34
|
+
```
|
35
|
+
|
36
|
+
## License
|
37
|
+
|
38
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
data/lib/typor.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# Typor
|
2
|
+
# by Eresse <eresse@eresse.net>
|
3
|
+
|
4
|
+
# External Includes
|
5
|
+
require 'aromat'
|
6
|
+
|
7
|
+
# Internal Includes
|
8
|
+
require 'typor/version'
|
9
|
+
require 'typor/magic'
|
10
|
+
|
11
|
+
# Typor Module
|
12
|
+
# Root Module for Typor
|
13
|
+
module Typor
|
14
|
+
|
15
|
+
# Get File Type
|
16
|
+
# Determines MIME Type of Local File
|
17
|
+
# @param [String] f Path to a File
|
18
|
+
# @return [String] MIME Type
|
19
|
+
def self.file f
|
20
|
+
(Magic.detect_magic(File.read(f)) || []).try :first
|
21
|
+
end
|
22
|
+
|
23
|
+
# Get Data Type
|
24
|
+
# Determine MIME Type of Data String
|
25
|
+
# @param [String] d Data String
|
26
|
+
# @return [String] MIME Type
|
27
|
+
def self.data d
|
28
|
+
(Magic.detect_magic(d) || []).try :first
|
29
|
+
end
|
30
|
+
end
|
data/lib/typor/magic.rb
ADDED
@@ -0,0 +1,413 @@
|
|
1
|
+
# Typor
|
2
|
+
# by Eresse <eresse@eresse.net>
|
3
|
+
|
4
|
+
# Typor Module
|
5
|
+
module Typor
|
6
|
+
|
7
|
+
# Magic Module
|
8
|
+
module Magic
|
9
|
+
|
10
|
+
# Magic
|
11
|
+
MAGIC = [
|
12
|
+
['image/jpeg', [[0, "\377\330\377"], [0, "\377\330"]]],
|
13
|
+
['image/png', [[0, "\211PNG"]]],
|
14
|
+
['image/gif', [[0, 'GIF8']]],
|
15
|
+
['image/tiff', [[0, "MM\000*"], [0, "II*\000"]]],
|
16
|
+
['image/bmp', [[0, 'BM', [[14, "\f"], [14, '@'], [14, '(']]]]],
|
17
|
+
['image/vnd.adobe.photoshop', []],
|
18
|
+
['image/webp', [[0, 'RIFF', [[8, 'WEBP']]]]],
|
19
|
+
['image/svg+xml', [[0..256, '<!DOCTYPE svg'], [0..256, '<svg']]],
|
20
|
+
['video/x-msvideo', [[0, 'RIFF', [[8, 'AVI ']]], [0, 'AVF0', [[8, 'AVI ']]]]],
|
21
|
+
['video/mp4', [[4, 'ftypisom'], [4, 'ftypmp42'], [4, 'ftypMSNV'], [4, 'ftypM4V '], [4, 'ftypf4v ']]],
|
22
|
+
['video/quicktime', [[12, 'mdat'], [4, 'mdat'], [4, 'moov'], [4, 'ftypqt']]],
|
23
|
+
['video/mpeg', [[0, "G?\377\020"], [0, "\000\000\001\263"], [0, "\000\000\001\272"]]],
|
24
|
+
['video/ogg', [[0, 'OggS']]],
|
25
|
+
['video/webm', [[0, "\032E\337\243", [[5..65, "B\202", [[8..75, 'webm']]]]]]],
|
26
|
+
['video/x-flv', [[0, 'FLV']]],
|
27
|
+
['audio/mpeg', [[0, "\377\373"], [0, 'ID3']]],
|
28
|
+
['audio/x-wav', [[8, 'WAVE'], [8, 'WAV ']]],
|
29
|
+
['audio/aac', [[0, 'ADIF']]],
|
30
|
+
['audio/flac', [[0, 'fLaC']]],
|
31
|
+
['audio/mp4', [[4, 'ftypM4A']]],
|
32
|
+
['audio/ogg', [[0, 'OggS']]],
|
33
|
+
['application/pdf', [[0..1024, '%PDF-']]],
|
34
|
+
['application/msword', [[0, "1\276\000\000"], [0, 'PO^Q`'], [0, "\3767\000#"], [0, "\333\245-\000\000\000"], [2112, 'MSWordDoc'], [2108, 'MSWordDoc'], [2112, 'Microsoft Word document data'], [546, 'bjbj'], [546, 'jbjb']]],
|
35
|
+
['application/vnd.ms-excel', [[2080, 'Microsoft Excel 5.0 Worksheet']]],
|
36
|
+
['application/vnd.stardivision.writer', [[2089, 'StarWriter']]],
|
37
|
+
['application/x-docbook+xml', [[0, '<?xml', [[0..100, '-//OASIS//DTD DocBook XML'], [0..100, '-//KDE//DTD DocBook XML']]]]],
|
38
|
+
['image/x-eps', [[0, '%!', [[15, 'EPS']]], [0, "\004%!", [[16, 'EPS']]], [0, "\305\320\323\306"]]],
|
39
|
+
['application/prs.plucker', [[60, 'DataPlkr']]],
|
40
|
+
['application/vnd.corel-draw', []],
|
41
|
+
['application/x-fictionbook+xml', [[0..256, '<FictionBook']]],
|
42
|
+
['application/x-mobipocket-ebook', [[60, 'BOOKMOBI']]],
|
43
|
+
['application/x-mozilla-bookmarks', [[0..64, '<!DOCTYPE NETSCAPE-Bookmark-file-1>']]],
|
44
|
+
['application/x-nzb', [[0..256, '<nzb']]],
|
45
|
+
['application/x-pak', [[0, 'PACK']]],
|
46
|
+
['application/x-php', [[0..64, '<?php']]],
|
47
|
+
['application/x-xliff', [[0..256, '<xliff']]],
|
48
|
+
['application/x-zip-compressed-fb2', [[0, "PK\003\004", [[30..256, '.fb2']]]]],
|
49
|
+
['audio/x-flac+ogg', [[0, 'OggS', [[28, 'fLaC']]], [0, 'OggS', [[28, "\177FLAC"]]]]],
|
50
|
+
['audio/x-opus+ogg', [[0, 'OggS', [[28, 'OpusHead']]]]],
|
51
|
+
['audio/x-speex+ogg', [[0, 'OggS', [[28, 'Speex ']]]]],
|
52
|
+
['audio/x-vorbis+ogg', [[0, 'OggS', [[28, "\001vorbis"]]]]],
|
53
|
+
['image/x-kodak-kdc', [[242, 'EASTMAN KODAK COMPANY']]],
|
54
|
+
['image/x-niff', [[0, 'IIN1']]],
|
55
|
+
['text/x-qml', [[0..256, 'import Qt ']]],
|
56
|
+
['video/x-ogm+ogg', [[0, 'OggS', [[29, 'video']]]]],
|
57
|
+
['video/x-theora+ogg', [[0, 'OggS', [[28, "\200theora"]]]]],
|
58
|
+
['application/atom+xml', [[0..256, '<feed ']]],
|
59
|
+
['application/rss+xml', [[0..256, '<rss '], [0..256, '<RSS ']]],
|
60
|
+
['application/vnd.apple.mpegurl', [[0, '#EXTM3U', [[0..128, '#EXT-X-TARGETDURATION'], [0..128, '#EXT-X-STREAM-INF']]]]],
|
61
|
+
['text/x-opml+xml', [[0..256, '<opml ']]],
|
62
|
+
['application/vnd.ms-cab-compressed', [[0, "MSCF\000\000\000\000"]]],
|
63
|
+
['application/vnd.ms-wpl', [[0..256, '<?wpl']]],
|
64
|
+
['application/x-7z-compressed', [[0, "7z\274\257'\034"]]],
|
65
|
+
['application/x-ace', [[7, '**ACE**']]],
|
66
|
+
['application/x-arc', []],
|
67
|
+
['application/x-cpio', [[0, "\307q"], [0, '070701'], [0, '070702'], [0, "q\307"]]],
|
68
|
+
['application/x-font-type1', [[0, 'LWFN'], [65, 'LWFN'], [0, '%!PS-AdobeFont-1.'], [6, '%!PS-AdobeFont-1.'], [0, '%!FontType1-1.'], [6, '%!FontType1-1.']]],
|
69
|
+
['application/x-java-pack200', [[0, "\312\376\320\r"]]],
|
70
|
+
['application/x-karbon', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-karbon\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-karbon']]]]]]],
|
71
|
+
['application/x-kchart', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-kchart\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-kchart']]]]]]],
|
72
|
+
['application/x-kformula', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-kformula\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-kformula']]]]]]],
|
73
|
+
['application/x-killustrator', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-killustrator\004\006"]]]]]]],
|
74
|
+
['application/x-kivio', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-kivio\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-kivio']]]]]]],
|
75
|
+
['application/x-kontour', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-kontour\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-kontour']]]]]]],
|
76
|
+
['application/x-kpresenter', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-kpresenter\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-kpresenter']]]]]]],
|
77
|
+
['application/x-krita', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-krita\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-krita']]]]]]],
|
78
|
+
['application/x-kspread', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-kspread\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-kspread']]]]]]],
|
79
|
+
['application/x-kword', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-kword\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-kword']]]]]]],
|
80
|
+
['application/x-lha', [[2, '-lh -'], [2, '-lh0-'], [2, '-lh1-'], [2, '-lh2-'], [2, '-lh3-'], [2, '-lh4-'], [2, '-lh5-'], [2, '-lh40-'], [2, '-lhd-'], [2, '-lz4-'], [2, '-lz5-'], [2, '-lzs-']]],
|
81
|
+
['application/x-lrzip', [[0, 'LRZI']]],
|
82
|
+
['application/x-lz4', [[0, "\004\"M\030"], [0, "\002!L\030"]]],
|
83
|
+
['application/x-lzip', [[0, 'LZIP']]],
|
84
|
+
['application/x-lzop', [[0, "\211LZO\000\r\n\032\n"]]],
|
85
|
+
['application/x-par2', [[0, 'PAR2']]],
|
86
|
+
['application/x-qpress', [[0, 'qpress10']]],
|
87
|
+
['application/x-quicktime-media-link', [[0, '<?xml', [[0..64, '<?quicktime']]], [0, 'RTSPtext'], [0, 'rtsptext'], [0, 'SMILtext']]],
|
88
|
+
['application/x-rar', [[0, 'Rar!']]],
|
89
|
+
['application/x-stuffit', [[0, 'StuffIt '], [0, 'SIT!']]],
|
90
|
+
['application/x-tar', [[257, "ustar\000"], [257, "ustar \000"]]],
|
91
|
+
['application/x-xar', [[0, 'xar!']]],
|
92
|
+
['application/x-xz', [[0, "\3757zXZ\000"]]],
|
93
|
+
['application/x-zoo', [[20, "\334\247\304\375"]]],
|
94
|
+
['application/xhtml+xml', [[0..256, '//W3C//DTD XHTML '], [0..256, 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'], [0..256, "<html xmlns=\"http://www.w3.org/1999/xhtml"], [0..256, "<HTML xmlns=\"http://www.w3.org/1999/xhtml"]]],
|
95
|
+
['audio/vnd.dts.hd', [[0..18725, 'dX %']]],
|
96
|
+
['text/x-txt2tags', [[0, '%!postproc'], [0, '%!encoding']]],
|
97
|
+
['application/smil+xml', [[0..256, '<smil']]],
|
98
|
+
['audio/x-ms-asx', [[0, 'ASF '], [0..64, '<ASX'], [0..64, '<asx'], [0..64, '<Asx']]],
|
99
|
+
['application/annodex', [[0, 'OggS', [[28, "fishead\000", [[56..512, "CMML\000\000\000\000"]]]]]]],
|
100
|
+
['application/dicom', [[128, 'DICM']]],
|
101
|
+
['application/epub+zip', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/epub+zip'], [43, 'application/epub+zip']]]]]]],
|
102
|
+
['application/font-woff', [[0, 'wOFF']]],
|
103
|
+
['application/gnunet-directory', [[0, "\211GND\r\n\032\n"]]],
|
104
|
+
['application/gzip', [[0, "\037\213"]]],
|
105
|
+
['application/mac-binhex40', [[11, 'must be converted with BinHex']]],
|
106
|
+
['application/mathematica', [[0, '(************** Content-type: application/mathematica'], [100..256, 'This notebook can be used on any computer system with Mathematica'], [10..256, 'This is a Mathematica Notebook file. It contains ASCII text']]],
|
107
|
+
['application/metalink+xml', [[0..256, "<metalink version=\"3.0\""]]],
|
108
|
+
['application/metalink4+xml', [[0..256, "<metalink xmlns=\"urn"]]],
|
109
|
+
['application/mxf', [[0..256, "\006\016+4\002\005\001\001\r\001\002\001\001\002"]]],
|
110
|
+
['application/ogg', [[0, 'OggS']]],
|
111
|
+
['application/owl+xml', [[0..256, '<Ontology']]],
|
112
|
+
['application/pgp-encrypted', [[0, '-----BEGIN PGP MESSAGE-----']]],
|
113
|
+
['application/pgp-keys', [[0, '-----BEGIN PGP PUBLIC KEY BLOCK-----'], [0, '-----BEGIN PGP PRIVATE KEY BLOCK-----'], [0, "\225\001"], [0, "\225\000"], [0, "\231\000"], [0, "\231\001"]]],
|
114
|
+
['application/pgp-signature', [[0, '-----BEGIN PGP SIGNATURE-----']]],
|
115
|
+
['application/postscript', [[0, "\004%!"], [0, '%!']]],
|
116
|
+
['application/rtf', [[0, "{\\rtf"]]],
|
117
|
+
['application/sdp', [[0, 'v=', [[0..256, 's=']]]]],
|
118
|
+
['application/vnd.adobe.flash.movie', [[0, 'FWS'], [0, 'CWS']]],
|
119
|
+
['application/vnd.debian.binary-package', [[0, '!<arch>', [[8, 'debian']]]]],
|
120
|
+
['application/vnd.emusic-emusic_package', [[0, 'nF7YLao']]],
|
121
|
+
['application/vnd.iccprofile', [[36, 'acsp']]],
|
122
|
+
['application/vnd.lotus-1-2-3', [[0, "\000\000\002\000\006\004\006\000\b\000\000\000\000\000"]]],
|
123
|
+
['application/vnd.lotus-wordpro', [[0, 'WordPro']]],
|
124
|
+
['application/vnd.ms-access', [[0, "\000\001\000\000Standard Jet DB"]]],
|
125
|
+
['application/vnd.ms-asf', [[0, "0&\262u"], [0, '[Reference]']]],
|
126
|
+
['application/vnd.ms-tnef', [[0, "x\237>\""]]],
|
127
|
+
['application/vnd.oasis.opendocument.chart', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.chart']]]]]]],
|
128
|
+
['application/vnd.oasis.opendocument.chart-template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.chart-template']]]]]]],
|
129
|
+
['application/vnd.oasis.opendocument.database', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.base']]]]]]],
|
130
|
+
['application/vnd.oasis.opendocument.formula', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.formula']]]]]]],
|
131
|
+
['application/vnd.oasis.opendocument.formula-template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.formula-template']]]]]]],
|
132
|
+
['application/vnd.oasis.opendocument.graphics', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.graphics']]]]]]],
|
133
|
+
['application/vnd.oasis.opendocument.graphics-template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.graphics-template']]]]]]],
|
134
|
+
['application/vnd.oasis.opendocument.image', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.image']]]]]]],
|
135
|
+
['application/vnd.oasis.opendocument.presentation', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.presentation']]]]]]],
|
136
|
+
['application/vnd.oasis.opendocument.presentation-template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.presentation-template']]]]]]],
|
137
|
+
['application/vnd.oasis.opendocument.spreadsheet', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.spreadsheet']]]]]]],
|
138
|
+
['application/vnd.oasis.opendocument.spreadsheet-template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.spreadsheet-template']]]]]]],
|
139
|
+
['application/vnd.oasis.opendocument.text', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.text']]]]]]],
|
140
|
+
['application/vnd.oasis.opendocument.text-master', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.text-master']]]]]]],
|
141
|
+
['application/vnd.oasis.opendocument.text-template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.text-template']]]]]]],
|
142
|
+
['application/vnd.oasis.opendocument.text-web', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.text-web']]]]]]],
|
143
|
+
['application/vnd.rn-realmedia', [[0, '.RMF']]],
|
144
|
+
['application/vnd.sun.xml.calc', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.calc']]]]]]],
|
145
|
+
['application/vnd.sun.xml.calc.template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.calc']]]]]]],
|
146
|
+
['application/vnd.sun.xml.draw', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.draw']]]]]]],
|
147
|
+
['application/vnd.sun.xml.draw.template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.draw']]]]]]],
|
148
|
+
['application/vnd.sun.xml.impress', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.impress']]]]]]],
|
149
|
+
['application/vnd.sun.xml.impress.template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.impress']]]]]]],
|
150
|
+
['application/vnd.sun.xml.math', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.math']]]]]]],
|
151
|
+
['application/vnd.sun.xml.writer', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.writer']]]]]]],
|
152
|
+
['application/vnd.sun.xml.writer.global', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.writer']]]]]]],
|
153
|
+
['application/vnd.sun.xml.writer.template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.writer']]]]]]],
|
154
|
+
['application/vnd.symbian.install', [[8, "\031\004\000\020"]]],
|
155
|
+
['application/vnd.tcpdump.pcap', [[0, "\324\303\262\241"], [0, "\241\262\303\324"]]],
|
156
|
+
['application/vnd.wordperfect', [[1, 'WPC']]],
|
157
|
+
['application/vnd.xdgapp', [[0, "xdg-app\000\001\000\211\345"]]],
|
158
|
+
['application/winhlp', [[0, "?_\003\000"]]],
|
159
|
+
['application/x-abiword', [[0..256, '<abiword'], [0..256, '<!DOCTYPE abiword']]],
|
160
|
+
['application/x-alz', [[0, 'ALZ']]],
|
161
|
+
['application/x-amiga-disk-format', [[0, "DOS\000"]]],
|
162
|
+
['application/x-aportisdoc', [[60, 'TEXtREAd'], [60, 'TEXtTlDc']]],
|
163
|
+
['application/x-applix-spreadsheet', [[0, '*BEGIN SPREADSHEETS'], [0, '*BEGIN', [[7, 'SPREADSHEETS']]]]],
|
164
|
+
['application/x-applix-word', [[0, '*BEGIN', [[7, 'WORDS']]]]],
|
165
|
+
['application/x-arj', [[0, "`\352"]]],
|
166
|
+
['application/x-awk', [[0, '#!/bin/gawk'], [0, '#! /bin/gawk'], [0, '#!/usr/bin/gawk'], [0, '#! /usr/bin/gawk'], [0, '#!/usr/local/bin/gawk'], [0, '#! /usr/local/bin/gawk'], [0, '#!/bin/awk'], [0, '#! /bin/awk'], [0, '#!/usr/bin/awk'], [0, '#! /usr/bin/awk']]],
|
167
|
+
['application/x-bittorrent', [[0, 'd8:announce']]],
|
168
|
+
['application/x-blender', [[0, 'BLENDER']]],
|
169
|
+
['application/x-bzip', [[0, 'BZh']]],
|
170
|
+
['application/x-ccmx', [[0, 'CCMX']]],
|
171
|
+
['application/x-cdrdao-toc', [[0, "CD_ROM\n"], [0, "CD_DA\n"], [0, "CD_ROM_XA\n"], [0, 'CD_TEXT '], [0, "CATALOG \"", [[22, "\""]]]]],
|
172
|
+
['application/x-chess-pgn', [[0, '[Event ']]],
|
173
|
+
['application/x-cisco-vpn-settings', [[0, '[main]', [[0..256, 'AuthType=']]]]],
|
174
|
+
['application/x-compress', [[0, "\037\235"]]],
|
175
|
+
['application/x-core', [[0, "\177ELF", [[5, "\001", [[16, "\004\000"]]]]], [0, "\177ELF", [[5, "\002", [[16, "\000\004"]]]]], [0, "Core\001"], [0, "Core\002"]]],
|
176
|
+
['application/x-csh', [[2..16, '/bin/tcsh'], [2..16, '/bin/csh'], [2..16, '/bin/env csh'], [2..16, '/bin/env tcsh']]],
|
177
|
+
['application/x-dar', [[0, "\000\000\000{"]]],
|
178
|
+
['application/x-designer', [[0..256, '<ui '], [0..256, '<UI ']]],
|
179
|
+
['application/x-desktop', [[0..32, '[Desktop Entry]'], [0, '[Desktop Action'], [0, '[KDE Desktop Entry]'], [0, '# Config File'], [0, '# KDE Config File']]],
|
180
|
+
['application/x-dia-diagram', [[5..100, '<dia:']]],
|
181
|
+
['application/x-dia-shape', [[5..100, '<shape']]],
|
182
|
+
['application/x-doom-wad', [[0, 'IWAD'], [0, 'PWAD']]],
|
183
|
+
['application/x-dvi', [[0, "\367\002"]]],
|
184
|
+
['application/x-fluid', [[0, '# data file for the Fltk']]],
|
185
|
+
['application/x-font-bdf', [[0, 'STARTFONT ']]],
|
186
|
+
['application/x-font-dos', [[0, "\377FON"], [7, "\000EGA"], [7, "\000VID"]]],
|
187
|
+
['application/x-font-framemaker', [[0, '<MakerScreenFont']]],
|
188
|
+
['application/x-font-libgrx', [[0, "\024\002Y\031"]]],
|
189
|
+
['application/x-font-linux-psf', [[0, "6\004"]]],
|
190
|
+
['application/x-font-otf', [[0, 'OTTO']]],
|
191
|
+
['application/x-font-pcf', [[0, "\001fcp"]]],
|
192
|
+
['application/x-font-speedo', [[0, "D1.0\r"]]],
|
193
|
+
['application/x-font-sunos-news', [[0, 'StartFont'], [0, "\023z)"], [8, "\023z+"]]],
|
194
|
+
['application/x-font-tex', [[0, "\367\203"], [0, "\367Y"], [0, "\367\312"]]],
|
195
|
+
['application/x-font-tex-tfm', [[2, "\000\021"], [2, "\000\022"]]],
|
196
|
+
['application/x-font-ttf', [[0, 'FFIL'], [65, 'FFIL'], [0, "\000\001\000\000\000"]]],
|
197
|
+
['application/x-font-ttx', [[0..256, "<ttFont sfntVersion=\"\\000\\001\\000\\000\" ttLibVersion=\""]]],
|
198
|
+
['application/x-font-vfont', [[0, 'FONT']]],
|
199
|
+
['application/x-frame', [[0, '<MakerFile'], [0, '<MIFFile'], [0, '<MakerDictionary'], [0, '<MakerScreenFon'], [0, '<MML'], [0, '<Book'], [0, '<Maker']]],
|
200
|
+
['application/x-gameboy-rom', [[260, "\316\355ff\314\r\000\v\003s\000\203\000\f\000\r\000\b\021\037\210\211\000\016"]]],
|
201
|
+
['application/x-gamecube-rom', [[28, "\3023\237="]]],
|
202
|
+
['application/x-gdbm', [[0, "\023W\232\316"], [0, "\316\232W\023"], [0, 'GDBM']]],
|
203
|
+
['application/x-gedcom', [[0, '0 HEAD']]],
|
204
|
+
['application/x-genesis-rom', [[256, 'SEGA'], [640, 'EAGN'], [640, 'EAMG']]],
|
205
|
+
['application/x-gettext-translation', [[0, "\336\022\004\225"], [0, "\225\004\022\336"]]],
|
206
|
+
['application/x-glade', [[0..256, '<glade-interface']]],
|
207
|
+
['application/x-gnumeric', [[0..64, 'gmr:Workbook'], [0..64, 'gnm:Workbook']]],
|
208
|
+
['application/x-go-sgf', [[0, '(;FF[3]'], [0, '(;FF[4]']]],
|
209
|
+
['application/x-gtk-builder', [[0..256, '<interface']]],
|
210
|
+
['application/x-gtktalog', [[4, 'gtktalog ']]],
|
211
|
+
['application/x-hdf', [[0, "\211HDF\r\n\032\n"], [0, "\016\003\023\001"]]],
|
212
|
+
['application/x-hwp', [[0, 'HWP Document File']]],
|
213
|
+
['application/x-ipod-firmware', [[0, 'S T O P']]],
|
214
|
+
['application/x-it87', [[0, 'IT8.7']]],
|
215
|
+
['application/x-iwork-keynote-sffkey', [[0, "PK\003\004", [[30, 'index.apxl']]]]],
|
216
|
+
['application/x-java', [[0, "\312\376\272\276"]]],
|
217
|
+
['application/x-java-jce-keystore', [[0, "\316\316\316\316"]]],
|
218
|
+
['application/x-java-jnlp-file', [[0..256, '<jnlp']]],
|
219
|
+
['application/x-java-keystore', [[0, "\355\376\355\376"]]],
|
220
|
+
['application/x-kspread-crypt', [[0, "\r\032'\002"]]],
|
221
|
+
['application/x-ksysv-package', [[4, 'KSysV', [[15, "\001"]]]]],
|
222
|
+
['application/x-kword-crypt', [[0, "\r\032'\001"]]],
|
223
|
+
['application/x-lyx', [[0, '#LyX']]],
|
224
|
+
['application/x-macbinary', [[102, 'mBIN']]],
|
225
|
+
['application/x-matroska', [[0, "\032E\337\243", [[5..65, "B\202", [[8..75, 'matroska']]]]]]],
|
226
|
+
['application/x-ms-dos-executable', [[0, 'MZ']]],
|
227
|
+
['application/x-ms-wim', [[0, "MSWIM\000\000\000"]]],
|
228
|
+
['application/x-mswinurl', [[1, 'InternetShortcut'], [1, 'DEFAULT', [[11, 'BASEURL=']]]]],
|
229
|
+
['application/x-n64-rom', [[0, "\2007\022@"], [0, "7\200@\022"], [0, "@\0227\200"]]],
|
230
|
+
['application/x-nautilus-link', [[0..32, '<nautilus_object nautilus_link']]],
|
231
|
+
['application/x-navi-animation', [[0, 'RIFF', [[8, 'ACON']]]]],
|
232
|
+
['application/x-netshow-channel', [[0, '[Address]']]],
|
233
|
+
['application/x-object', [[0, "\177ELF", [[5, "\001", [[16, "\001\000"]]]]], [0, "\177ELF", [[5, "\002", [[16, "\000\001"]]]]]]],
|
234
|
+
['application/x-ole-storage', [[0, "\320\317\021\340\241\261\032\341"], [0, "\320\317\021\340"]]],
|
235
|
+
['application/x-oleo', [[31, 'Oleo']]],
|
236
|
+
['application/x-pef-executable', [[0, 'Joy!']]],
|
237
|
+
['application/x-perl', [[0, "eval \"exec /usr/local/bin/perl"], [2..16, '/bin/perl'], [2..16, '/bin/env perl'], [0..256, 'use strict'], [0..256, 'use warnings'], [0..256, 'use diagnostics'], [0..256, 'use Test::'], [0..256, 'BEGIN {']]],
|
238
|
+
['application/x-pocket-word', [[0, "{\\pwi"]]],
|
239
|
+
['application/x-python-bytecode', [[0, "\231N\r\n"]]],
|
240
|
+
['application/x-qtiplot', [[0, 'QtiPlot']]],
|
241
|
+
['application/x-rpm', [[0, "\355\253\356\333"]]],
|
242
|
+
['application/x-ruby', [[2..16, '/bin/env ruby'], [2..16, '/bin/ruby']]],
|
243
|
+
['application/x-sami', [[0..256, '<SAMI>']]],
|
244
|
+
['application/x-saturn-rom', [[0, 'SEGA SEGASATURN'], [16, 'SEGA SEGASATURN']]],
|
245
|
+
['application/x-sc', [[38, 'Spreadsheet']]],
|
246
|
+
['application/x-sharedlib', [[0, "\177ELF", [[5, "\001", [[16, "\003\000"]]]]], [0, "\177ELF", [[5, "\002", [[16, "\000\003"]]]]], [0, "\203\001"]]],
|
247
|
+
['application/x-shellscript', [[10, '# This is a shell archive'], [2..16, '/bin/bash'], [2..16, '/bin/nawk'], [2..16, '/bin/zsh'], [2..16, '/bin/sh'], [2..16, '/bin/ksh'], [2..16, '/bin/dash'], [2..16, '/bin/env sh'], [2..16, '/bin/env bash'], [2..16, '/bin/env zsh'], [2..16, '/bin/env ksh']]],
|
248
|
+
['application/x-shorten', [[0, 'ajkg']]],
|
249
|
+
['application/x-smaf', [[0, 'MMMD']]],
|
250
|
+
['application/x-spss-por', [[40, 'ASCII SPSS PORT FILE']]],
|
251
|
+
['application/x-spss-sav', [[0, '$FL2'], [0, '$FL3']]],
|
252
|
+
['application/x-sqlite2', [[0, '** This file contains an SQLite']]],
|
253
|
+
['application/x-sqlite3', [[0, 'SQLite format 3']]],
|
254
|
+
['application/x-subrip', [[0, '1', [[0..256, ' --> ']]]]],
|
255
|
+
['application/x-t602', [[0, '@CT 0'], [0, '@CT 1'], [0, '@CT 2']]],
|
256
|
+
['application/x-tgif', [[0, '%TGIF']]],
|
257
|
+
['application/x-wii-rom', [[24, "]\034\236\243"], [0, 'WBFS'], [0, "WII\001DISC"]]],
|
258
|
+
['application/x-wii-wad', [[4, "Is\000\000"], [4, "ib\000\000"], [4, "Bk\000\000"]]],
|
259
|
+
['application/x-xbel', [[0..256, '<!DOCTYPE xbel']]],
|
260
|
+
['application/x-yaml', [[0, '%YAML']]],
|
261
|
+
['application/xslt+xml', [[0..256, '<xsl:stylesheet']]],
|
262
|
+
['application/xspf+xml', [[0..64, "<playlist version=\"1"], [0..64, "<playlist version='1"]]],
|
263
|
+
['audio/AMR', [[0, "#!AMR\n"], [0, "#!AMR_MC1.0\n"]]],
|
264
|
+
['audio/AMR-WB', [[0, "#!AMR-WB\n"], [0, "#!AMR-WB_MC1.0\n"]]],
|
265
|
+
['audio/ac3', [[0, "\vw"]]],
|
266
|
+
['audio/annodex', [[0, 'OggS', [[28, "fishead\000", [[56..512, "CMML\000\000\000\000"]]]]]]],
|
267
|
+
['audio/midi', [[0, 'MThd']]],
|
268
|
+
['audio/prs.sid', [[0, 'PSID']]],
|
269
|
+
['audio/vnd.dts', [[0, "\177\376\200\001"], [0, "\200\001\177\376"], [0, "\037\377\350\000"], [0, "\350\000\037\377"]]],
|
270
|
+
['audio/x-adpcm', [[0, '.snd', [[12, "\000\000\000\027"]]], [0, ".sd\000", [[12, "\001\000\000\000"], [12, "\002\000\000\000"], [12, "\003\000\000\000"], [12, "\004\000\000\000"], [12, "\005\000\000\000"], [12, "\006\000\000\000"], [12, "\a\000\000\000"], [12, "\027\000\000\000"]]]]],
|
271
|
+
['audio/x-aifc', [[8, 'AIFC']]],
|
272
|
+
['audio/x-aiff', [[8, 'AIFF'], [8, '8SVX']]],
|
273
|
+
['audio/x-ape', [[0, 'MAC ']]],
|
274
|
+
['audio/x-iriver-pla', [[4, 'iriver UMS PLA']]],
|
275
|
+
['audio/x-it', [[0, 'IMPM']]],
|
276
|
+
['audio/x-m4b', [[4, 'ftypM4B']]],
|
277
|
+
['audio/x-mo3', [[0, 'MO3']]],
|
278
|
+
['audio/x-mod', [[0, 'MTM'], [0, 'MMD0'], [0, 'MMD1'], [0, 'if'], [0, 'JN'], [0, 'MAS_UTrack_V00']]],
|
279
|
+
['audio/x-mpegurl', [[0, '#EXTM3U']]],
|
280
|
+
['audio/x-musepack', [[0, 'MP+']]],
|
281
|
+
['audio/x-psf', [[0, 'PSF']]],
|
282
|
+
['audio/x-s3m', [[44, 'SCRM']]],
|
283
|
+
['audio/x-scpls', [[0, '[playlist]'], [0, '[Playlist]'], [0, '[PLAYLIST]']]],
|
284
|
+
['audio/x-speex', [[0, 'Speex']]],
|
285
|
+
['audio/x-stm', [[20, "!Scream!\032"], [20, "!SCREAM!\032"], [20, "BMOD2STM\032"]]],
|
286
|
+
['audio/x-tta', [[0, 'TTA1']]],
|
287
|
+
['audio/x-wavpack', [[0, 'wvpk']]],
|
288
|
+
['audio/x-wavpack-correction', [[0, 'wvpk']]],
|
289
|
+
['audio/x-xi', [[0, 'Extended Instrument:']]],
|
290
|
+
['audio/x-xm', [[0, 'Extended Module:']]],
|
291
|
+
['audio/x-xmf', [[0, 'XMF_'], [0, "XMF_2.00\000\000\000\002"]]],
|
292
|
+
['image/dpx', [[0, 'SDPX']]],
|
293
|
+
['image/fits', [[0, 'SIMPLE =']]],
|
294
|
+
['image/jp2', [[0, "\377O\377Q\000"], [3, "\fjP "], [20, 'jp2']]],
|
295
|
+
['image/openraster', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'image/openraster']]]]]]],
|
296
|
+
['image/vnd.djvu', [[0, 'AT&TFORM', [[12, 'DJVU']]], [0, 'FORM', [[8, 'DJVU']]]]],
|
297
|
+
['image/vnd.djvu+multipage', [[0, 'AT&TFORM', [[12, 'DJVM']]], [0, 'FORM', [[8, 'DJVM']]]]],
|
298
|
+
['image/vnd.dxf', [[0..64, "\nHEADER\n"], [0..64, "\r\nHEADER\r\n"]]],
|
299
|
+
['image/vnd.microsoft.icon', [[0, "\000\000\001\000", [[5, "\000"]]]]],
|
300
|
+
['image/vnd.ms-modi', [[0, "EP*\000"]]],
|
301
|
+
['image/vnd.zbrush.pcx', [[0, "\n", [[1, "\000"], [1, "\002"], [1, "\003"], [1, "\005"]]]]],
|
302
|
+
['image/x-applix-graphics', [[0, '*BEGIN', [[7, 'GRAPHICS']]]]],
|
303
|
+
['image/x-canon-crw', [[0, "II\032\000\000\000HEAPCCDR"]]],
|
304
|
+
['image/x-dds', [[0, 'DDS']]],
|
305
|
+
['image/x-dib', [[0, "(\000\000\000"]]],
|
306
|
+
['image/x-emf', [[0, "\001\000\000\000", [[40, ' EMF', [[44, "\000\000\001\000", [[58, "\000\000"]]]]]]]]],
|
307
|
+
['image/x-exr', [[0, "v/1\001"]]],
|
308
|
+
['image/x-fpx', [[0, 'FPix']]],
|
309
|
+
['image/x-fuji-raf', [[0, 'FUJIFILMCCD-RAW ']]],
|
310
|
+
['image/x-icns', [[0, 'icns']]],
|
311
|
+
['image/x-ilbm', [[8, 'ILBM'], [8, 'PBM ']]],
|
312
|
+
['image/x-minolta-mrw', [[0, "\000MRM"]]],
|
313
|
+
['image/x-olympus-orf', [[0, "IIRO\b\000\000\000"]]],
|
314
|
+
['image/x-panasonic-raw', [[0, "IIU\000\b\000\000\000"]]],
|
315
|
+
['image/x-panasonic-raw2', [[0, "IIU\000\030\000\000\000"]]],
|
316
|
+
['image/x-pict', [[522, "\000\021", [[524, "\002\377", [[526, "\f\000", [[528, "\377\376"]]]]]]]]],
|
317
|
+
['image/x-pict', [[10, "\000\021", [[12, "\002\377", [[14, "\f\000", [[16, "\377\376"]]]]]]]]],
|
318
|
+
['image/x-portable-bitmap', [[0, 'P1', [[2, "\n"], [2, ' '], [2, "\t"], [2, "\r"]]], [0, 'P4', [[2, "\n"], [2, ' '], [2, "\t"], [2, "\r"]]]]],
|
319
|
+
['image/x-portable-graymap', [[0, 'P2', [[2, "\n"], [2, ' '], [2, "\t"], [2, "\r"]]], [0, 'P5', [[2, "\n"], [2, ' '], [2, "\t"], [2, "\r"]]]]],
|
320
|
+
['image/x-portable-pixmap', [[0, 'P3', [[2, "\n"], [2, ' '], [2, "\t"], [2, "\r"]]], [0, 'P6', [[2, "\n"], [2, ' '], [2, "\t"], [2, "\r"]]]]],
|
321
|
+
['image/x-quicktime', [[4, 'idat']]],
|
322
|
+
['image/x-sigma-x3f', [[0, 'FOVb']]],
|
323
|
+
['image/x-skencil', [[0, '##Sketch']]],
|
324
|
+
['image/x-sun-raster', [[0, "Y\246j\225"]]],
|
325
|
+
['image/x-tga', [[1, "\000\002", [[16, "\b"], [16, "\020"], [16, "\030"], [16, ' ']]]]],
|
326
|
+
['image/x-win-bitmap', [[0, "\000\000\002\000", [[5, "\000"]]]]],
|
327
|
+
['image/x-wmf', [[0, "\327\315\306\232", [[22, "\001\000", [[24, "\t\000"]]]]], [0, "\001\000", [[2, "\t\000"]]]]],
|
328
|
+
['image/x-xcf', [[0, 'gimp xcf file'], [0, 'gimp xcf v']]],
|
329
|
+
['image/x-xcursor', [[0, 'Xcur']]],
|
330
|
+
['image/x-xfig', [[0, '#FIG']]],
|
331
|
+
['image/x-xpixmap', [[0, '/* XPM']]],
|
332
|
+
['message/news', [[0, 'Article'], [0, 'Path:'], [0, 'Xref:']]],
|
333
|
+
['message/rfc822', [[0, '#! rnews'], [0, 'Forward to'], [0, 'From:'], [0, 'N#! rnews'], [0, 'Pipe to'], [0, 'Received:'], [0, 'Relay-Version:'], [0, 'Return-Path:'], [0, 'Return-path:'], [0, 'Subject: ']]],
|
334
|
+
['text/cache-manifest', [[0, 'CACHE MANIFEST', [[14, ' '], [14, "\t"], [14, "\n"], [14, "\r"]]]]],
|
335
|
+
['text/calendar', [[0, 'BEGIN:VCALENDAR'], [0, 'begin:vcalendar']]],
|
336
|
+
['text/html', [[0..256, '<!DOCTYPE HTML'], [0..256, '<!doctype html'], [0..256, '<HEAD'], [0..256, '<head'], [0..256, '<TITLE'], [0..256, '<title'], [0..256, '<HTML'], [0..256, '<html'], [0..256, '<SCRIPT'], [0..256, '<script'], [0, '<BODY'], [0, '<body'], [0, '<!--'], [0, '<h1'], [0, '<H1'], [0, '<!doctype HTML'], [0, '<!DOCTYPE html']]],
|
337
|
+
['text/plain', [[0, 'This is TeX,'], [0, 'This is METAFONT,']]],
|
338
|
+
['text/spreadsheet', [[0, 'ID;']]],
|
339
|
+
['text/troff', [[0, ".\\\""], [0, "'\\\""], [0, "'.\\\""], [0, "\\\""]]],
|
340
|
+
['text/vcard', [[0, 'BEGIN:VCARD'], [0, 'begin:vcard']]],
|
341
|
+
['text/vnd.graphviz', [[0, 'digraph '], [0, 'strict digraph '], [0, 'graph '], [0, 'strict graph ']]],
|
342
|
+
['text/vnd.sun.j2me.app-descriptor', [[0, 'MIDlet-']]],
|
343
|
+
['text/vnd.trolltech.linguist', [[0..256, '<TS']]],
|
344
|
+
['text/vtt', [[0, 'WEBVTT']]],
|
345
|
+
['text/x-bibtex', [[0, '% This file was created with JabRef']]],
|
346
|
+
['text/x-emacs-lisp', [[0, "\n("], [0, ";ELC\023\000\000\000"]]],
|
347
|
+
['text/x-gettext-translation-template', [[0..256, "#, fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version:"]]],
|
348
|
+
['text/x-google-video-pointer', [[0, '#.download.the.free.Google.Video.Player'], [0, '# download the free Google Video Player']]],
|
349
|
+
['text/x-iMelody', [[0, 'BEGIN:IMELODY']]],
|
350
|
+
['text/x-iptables', [[0..256, '/etc/sysconfig/iptables'], [0..256, '*filter', [[0..256, ':INPUT', [[0..256, ':FORWARD', [[0..256, ':OUTPUT']]]]]]], [0..256, '-A INPUT', [[0..256, '-A FORWARD', [[0..256, '-A OUTPUT']]]]], [0..256, '-P INPUT', [[0..256, '-P FORWARD', [[0..256, '-P OUTPUT']]]]]]],
|
351
|
+
['text/x-ldif', [[0, 'dn: cn='], [0, 'dn: mail=']]],
|
352
|
+
['text/x-lua', [[2..16, '/bin/lua'], [2..16, '/bin/luajit'], [2..16, '/bin/env lua'], [2..16, '/bin/env luajit']]],
|
353
|
+
['text/x-makefile', [[0, '#!/usr/bin/make'], [0, '#! /usr/bin/make']]],
|
354
|
+
['text/x-matlab', [[0, 'function']]],
|
355
|
+
['text/x-microdvd', [[0, '{1}'], [0, '{0}'], [0..6, '}{']]],
|
356
|
+
['text/x-modelica', [[0, 'class']]],
|
357
|
+
['text/x-modelica', [[0, 'record']]],
|
358
|
+
['text/x-modelica', [[0, 'model']]],
|
359
|
+
['text/x-modelica', [[0, 'function']]],
|
360
|
+
['text/x-mpsub', [[0..256, 'FORMAT=']]],
|
361
|
+
['text/x-mrml', [[0, '<mrml ']]],
|
362
|
+
['text/x-ms-regedit', [[0, 'REGEDIT'], [0, 'Windows Registry Editor Version 5.00'], [0, "\377\376W\000i\000n\000d\000o\000w\000s\000 \000R\000e\000g\000i\000s\000t\000r\000y\000 \000E\000d\000i\000t\000o\000r\000"]]],
|
363
|
+
['text/x-mup', [[0, '//!Mup']]],
|
364
|
+
['text/x-patch', [[0, "diff\t"], [0, 'diff '], [0, "***\t"], [0, '*** '], [0, '=== '], [0, '--- '], [0, "Only in\t"], [0, 'Only in '], [0, 'Common subdirectories: '], [0, 'Index:']]],
|
365
|
+
['text/x-python', [[0, '#!/bin/python'], [0, '#! /bin/python'], [0, "eval \"exec /bin/python"], [0, '#!/usr/bin/python'], [0, '#! /usr/bin/python'], [0, "eval \"exec /usr/bin/python"], [0, '#!/usr/local/bin/python'], [0, '#! /usr/local/bin/python'], [0, "eval \"exec /usr/local/bin/python"], [2..16, '/bin/env python']]],
|
366
|
+
['text/x-rpm-spec', [[0, 'Summary: '], [0, '%define ']]],
|
367
|
+
['text/x-ssa', [[0..256, '[Script Info]'], [0..256, 'Dialogue: ']]],
|
368
|
+
['text/x-subviewer', [[0, '[INFORMATION]']]],
|
369
|
+
['text/x-tex', [[1, 'documentclass']]],
|
370
|
+
['text/x-uuencode', [[0, 'begin ']]],
|
371
|
+
['text/xmcd', [[0, '# xmcd']]],
|
372
|
+
['video/3gpp', [[4, 'ftyp3ge'], [4, 'ftyp3gg'], [4, 'ftyp3gp'], [4, 'ftyp3gs']]],
|
373
|
+
['video/3gpp2', [[4, 'ftyp3g2']]],
|
374
|
+
['video/annodex', [[0, 'OggS', [[28, "fishead\000", [[56..512, "CMML\000\000\000\000"]]]]]]],
|
375
|
+
['video/dv', []],
|
376
|
+
['video/mp2t', []],
|
377
|
+
['video/vnd.mpegurl', [[0, '#EXTM4U']]],
|
378
|
+
['video/x-flic', [[0, "\021\257"], [0, "\022\257"]]],
|
379
|
+
['video/x-mng', [[0, "\212MNG\r\n\032\n"]]],
|
380
|
+
['video/x-nsv', [[0, 'NSVf']]],
|
381
|
+
['video/x-sgi-movie', [[0, 'MOVI']]],
|
382
|
+
['x-epoc/x-sisx-app', [[0, "z\032 \020"]]],
|
383
|
+
['application/x-archive', [[0, '<ar>'], [0, '!<arch>']]],
|
384
|
+
['application/x-riff', [[0, 'RIFF']]],
|
385
|
+
['application/x-executable', [[0, "\177ELF", [[5, "\001", [[16, "\002\000"]]]]], [0, "\177ELF", [[5, "\002", [[16, "\000\002"]]]]], [0, 'MZ'], [0, "\034R"], [0, "\020\001"], [0, "\021\001"], [0, "\203\001"]]],
|
386
|
+
['application/x-iff', [[0, 'FORM']]],
|
387
|
+
['application/x-perl', [[0..256, "\n=pod"], [0..256, "\n=head1 NAME"], [0..256, "\n=head1 DESCRIPTION"]]],
|
388
|
+
['application/xml', [[0, '<?xml'], [0, '<!--']]],
|
389
|
+
['application/zip', [[0, "PK\003\004"]]],
|
390
|
+
['audio/basic', [[0, '.snd']]],
|
391
|
+
['video/x-javafx', [[0, 'FLV']]],
|
392
|
+
['application/x-mobipocket-ebook', [[60, 'TEXtREAd']]],
|
393
|
+
['text/x-csrc', [[0, '/*'], [0, '//'], [0, '#include']]],
|
394
|
+
['text/x-objcsrc', [[0, '#import']]],
|
395
|
+
['application/mbox', [[0, 'From ']]],
|
396
|
+
['image/x-tga', [[1, "\001\001"], [1, "\0019"], [1, "\000\003"], [1, "\000\n"], [1, "\000\v"]]],
|
397
|
+
['text/x-matlab', [[0, '%']]],
|
398
|
+
['text/x-matlab', [[0, '##']]],
|
399
|
+
['text/x-modelica', [[0, '//']]],
|
400
|
+
['text/x-tex', [[0, '%']]]
|
401
|
+
]
|
402
|
+
|
403
|
+
# Detect Magic
|
404
|
+
def self.detect_magic data
|
405
|
+
MAGIC.find { |_type, magic| check_magic data, magic }
|
406
|
+
end
|
407
|
+
|
408
|
+
# Check Magic
|
409
|
+
def self.check_magic data, magic
|
410
|
+
magic.any? { |off, val, sub| ((Range === off) ? data.slice(off).include?(val) : (data.slice(off, val.size) == val)) && (!sub || check_magic(data, sub)) }
|
411
|
+
end
|
412
|
+
end
|
413
|
+
end
|
data/typor.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'typor/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'typor'
|
8
|
+
spec.version = Typor::VERSION
|
9
|
+
spec.authors = ['Eresse']
|
10
|
+
spec.email = ['eresse@eresse.net']
|
11
|
+
|
12
|
+
spec.summary = 'Detect File Type from MIME Magic'
|
13
|
+
spec.description = 'Provides MIME detection magic based on file contents - nothing more.'
|
14
|
+
spec.homepage = 'http://redmine.eresse.net/projects/typor'
|
15
|
+
spec.license = 'MIT'
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
spec.require_paths = ['lib']
|
19
|
+
|
20
|
+
spec.add_development_dependency 'bundler'
|
21
|
+
spec.add_development_dependency 'rake'
|
22
|
+
spec.add_runtime_dependency 'minitest'
|
23
|
+
spec.add_runtime_dependency 'aromat'
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: typor
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Eresse
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-02-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: aromat
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: Provides MIME detection magic based on file contents - nothing more.
|
70
|
+
email:
|
71
|
+
- eresse@eresse.net
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- Gemfile
|
78
|
+
- Gemfile.lock
|
79
|
+
- LICENSE.txt
|
80
|
+
- README.md
|
81
|
+
- Rakefile
|
82
|
+
- lib/typor.rb
|
83
|
+
- lib/typor/magic.rb
|
84
|
+
- lib/typor/version.rb
|
85
|
+
- typor.gemspec
|
86
|
+
homepage: http://redmine.eresse.net/projects/typor
|
87
|
+
licenses:
|
88
|
+
- MIT
|
89
|
+
metadata: {}
|
90
|
+
post_install_message:
|
91
|
+
rdoc_options: []
|
92
|
+
require_paths:
|
93
|
+
- lib
|
94
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
requirements: []
|
105
|
+
rubyforge_project:
|
106
|
+
rubygems_version: 2.5.1
|
107
|
+
signing_key:
|
108
|
+
specification_version: 4
|
109
|
+
summary: Detect File Type from MIME Magic
|
110
|
+
test_files: []
|