filetype 0.1.0 → 0.3.2

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 4727e0c57dc75e0f130816a7ad47fa057d49dd72d3eb9309bdb14f497e668e6e
4
+ data.tar.gz: 7ced5c77fabf3df3015385286e5b86aff8ef4172dc27ed2ea894d7040ef08d55
5
+ SHA512:
6
+ metadata.gz: 282c798ef18f796e4e8cbb101b076c4de92e8fe5ef99f015ac96de1b7a0ef6f20d54401b1b9cfdd1b939d6615f58a36a4d18e34d789fa4f665986828d23fb3da
7
+ data.tar.gz: ab11c48de92bb964a443c057be81581a00cd602495c8a695e66c29ea67bc212c6b150c731a69bb7cfbbef91c6d8be16d60fb043896267788bf5af4301dd9abaa
data/README.md CHANGED
@@ -30,6 +30,14 @@ You can of course add your own custom file types
30
30
  Filetype.add(:cool, %w[ cool kl ])
31
31
  Filetype.get('hello.kl') #=> :cool
32
32
 
33
+ Simple
34
+ ------
35
+
36
+ You may notice how basic Filetype is, all it's doing is checking the file name
37
+ or file extension. Well, that's its intention, it was built for nothing more.
38
+ If you want more advanced information, check out the
39
+ [mime-types](http://mime-types.rubyforge.org/) library.
40
+
33
41
  Contributing
34
42
  ------------
35
43
 
data/lib/filetype.rb CHANGED
@@ -1,38 +1,52 @@
1
1
  module Filetype
2
2
  module_function
3
3
 
4
- VERSION = '0.1.0'
4
+ VERSION = '0.3.2'
5
5
 
6
6
  FTYPES = {
7
7
  :actionscript => %w[ as mxml ],
8
8
  :ada => %w[ ada adb ads ],
9
9
  :asm => %w[ asm s ],
10
10
  :batch => %w[ bat cmd ],
11
+ :bundler => /\A[Gg]emfile(?:\.lock)?\z/,
12
+ :bzip => %w[ bzip2 bzip ],
11
13
  :c => %w[ c h ],
12
14
  :clojure => %w[ clj ],
13
15
  :cpp => %w[ cpp cc cxx m hpp hh h hxx ],
14
16
  :csharp => %w[ cs ],
15
17
  :css => %w[ css ],
18
+ :diff => %w[ diff patch ],
19
+ :docker => /\A[Dd]ockerfile(?:\.\w+)?\z/,
16
20
  :elisp => %w[ el ],
21
+ :epub => %w[ epub ],
22
+ :erb => %w[ rhtml erb ],
17
23
  :erlang => %w[ erl hrl ],
24
+ :exe => %w[ exe ],
25
+ :forth => %w[ 4th ],
26
+ :fsharp => %w[ fs ],
27
+ :gem => %w[ gem ],
18
28
  :go => %w[ go ],
19
29
  :groovy => %w[ groovy gpp grunit gtmpl ],
30
+ :gzip => %w[ gzip gz ],
20
31
  :haskell => %w[ hs lhs ],
21
32
  :haml => %w[ haml ],
22
33
  :html => %w[ html xhtml shtml htm ],
23
- :java => %w[ java ],
34
+ :java => %w[ java jar ],
24
35
  :js => %w[ js ],
25
36
  :lisp => %w[ lisp lsp ],
26
37
  :lua => %w[ lua ],
27
38
  :make => /\A[Mm]akefile\z/,
28
39
  :objc => %w[ m h ],
29
40
  :ocaml => %w[ ml mli ],
41
+ :pcap => %w[ pcap ],
30
42
  :perl => %w[ pl pm t pod ],
43
+ :pgp => %w[ asc pgp gpg ],
31
44
  :php => %w[ php phpt phtml ],
32
45
  :python => %w[ py pyc ],
33
46
  :rackup => %w[ ru ],
34
47
  :rake => /\A[Rr]akefile(?:.rb)?\z/,
35
- :ruby => %w[ rb rhtml erb rake rjs ],
48
+ :rar => %w[ rar ],
49
+ :ruby => %w[ rb rake gemspec rjs ],
36
50
  :sass => %w[ sass ],
37
51
  :scala => %w[ scala ],
38
52
  :scss => %w[ scss ],
@@ -40,8 +54,12 @@ module Filetype
40
54
  :shell => %w[ sh bash ksh zsh csh ],
41
55
  :smalltalk => %w[ st ],
42
56
  :sql => %w[ sql ctl ],
57
+ :tar => %w[ tar ],
58
+ :text => %w[ txt ],
43
59
  :yaml => %w[ yaml yml ],
44
- :xml => %w[ xml xsl dtd xslt ],
60
+ :xml => %w[ xml dtd ],
61
+ :xsl => %w[ xsl xslt],
62
+ :zip => %w[ zip ]
45
63
  }
46
64
 
47
65
  # Fetch a language for this filetype
@@ -55,8 +73,7 @@ module Filetype
55
73
  FTYPES.each do |ftype, rule|
56
74
  case rule
57
75
  when Array
58
- ext = File.extname(fname)[1..-1]
59
- return ftype if rule.include? ext
76
+ return ftype if rule.include? ext(fname)
60
77
  when Regexp
61
78
  return ftype if fname.match rule
62
79
  when String, Symbol
@@ -74,8 +91,7 @@ module Filetype
74
91
  # @return [Array] The list of languages found
75
92
  def all(fname)
76
93
  FTYPES.select do |ftype, rule|
77
- ext = File.extname(fname)[1..-1]
78
- ftype if rule.is_a?(Array) && rule.include?(ext)
94
+ ftype if rule.is_a?(Array) && rule.include?(ext(fname))
79
95
  end.keys
80
96
  end
81
97
 
@@ -92,4 +108,11 @@ module Filetype
92
108
  def add(ftype, rule)
93
109
  FTYPES[ftype] = rule
94
110
  end
111
+
112
+ private
113
+
114
+ def self.ext(fname)
115
+ ext = File.extname(fname)[1..-1]
116
+ ext.downcase if ext
117
+ end
95
118
  end
@@ -2,9 +2,103 @@ require 'test_helper'
2
2
 
3
3
  class FileTypeTest < TestCase
4
4
 
5
- test 'fetching the language of a file name' do
5
+ test 'testing all languages with all extensions' do
6
+ assert_equal :bundler, Filetype.get('Gemfile')
7
+ assert_equal :bundler, Filetype.get('gemfile') # ?
8
+ assert_equal :bundler, Filetype.get('Gemfile.lock') # ?
9
+ assert_equal :bundler, Filetype.get('gemfile.lock') # ?
10
+ assert_equal :make, Filetype.get('Makefile')
11
+ assert_equal :make, Filetype.get('makefile')
12
+ assert_equal :rake, Filetype.get('Rakefile')
13
+ assert_equal :rake, Filetype.get('rakefile')
14
+ assert_equal :rake, Filetype.get('Rakefile.rb')
15
+
16
+ assert_equal :actionscript, Filetype.get('foo.as')
17
+ assert_equal :actionscript, Filetype.get('foo.AS')
18
+ assert_equal :actionscript, Filetype.get('foo.mxml')
19
+ assert_equal :ada, Filetype.get('foo.ada')
20
+ assert_equal :ada, Filetype.get('foo.adb')
21
+ assert_equal :ada, Filetype.get('foo.ads')
22
+ assert_equal :asm, Filetype.get('foo.asm')
23
+ assert_equal :asm, Filetype.get('foo.s')
24
+ assert_equal :batch, Filetype.get('foo.bat')
25
+ assert_equal :batch, Filetype.get('foo.cmd')
26
+ assert_equal :c, Filetype.get('foo.c')
27
+ assert_equal :c, Filetype.get('foo.h')
28
+ assert_equal :clojure, Filetype.get('foo.clj')
29
+ assert_equal :cpp, Filetype.get('foo.cpp')
30
+ assert_equal :cpp, Filetype.get('foo.cc')
31
+ assert_equal :cpp, Filetype.get('foo.cxx')
32
+ assert_equal :cpp, Filetype.get('foo.m')
33
+ assert_equal :cpp, Filetype.get('foo.hpp')
34
+ assert_equal :cpp, Filetype.get('foo.hh')
35
+ # assert_equal :cpp, Filetype.get('foo.h') # DUPLICATE
36
+ assert_equal :cpp, Filetype.get('foo.hxx')
37
+ assert_equal :csharp, Filetype.get('foo.cs')
38
+ assert_equal :css, Filetype.get('foo.css')
39
+ assert_equal :docker, Filetype.get('Dockerfile')
40
+ assert_equal :docker, Filetype.get('Dockerfile.build')
41
+ assert_equal :elisp, Filetype.get('foo.el')
42
+ assert_equal :epub, Filetype.get('foo.epub')
43
+ assert_equal :erb, Filetype.get('foo.rhtml')
44
+ assert_equal :erb, Filetype.get('foo.erb')
45
+ assert_equal :erlang, Filetype.get('foo.erl')
46
+ assert_equal :erlang, Filetype.get('foo.hrl')
47
+ assert_equal :go, Filetype.get('foo.go')
48
+ assert_equal :groovy, Filetype.get('foo.groovy')
49
+ assert_equal :groovy, Filetype.get('foo.gpp')
50
+ assert_equal :groovy, Filetype.get('foo.grunit')
51
+ assert_equal :groovy, Filetype.get('foo.gtmpl')
52
+ assert_equal :haskell, Filetype.get('foo.hs')
53
+ assert_equal :haskell, Filetype.get('foo.lhs')
54
+ assert_equal :haml, Filetype.get('foo.haml')
55
+ assert_equal :html, Filetype.get('foo.html')
56
+ assert_equal :html, Filetype.get('foo.xhtml')
57
+ assert_equal :html, Filetype.get('foo.shtml')
58
+ assert_equal :html, Filetype.get('foo.htm')
59
+ assert_equal :java, Filetype.get('foo.java')
60
+ assert_equal :java, Filetype.get('foo.jar')
61
+ assert_equal :js, Filetype.get('foo.js')
62
+ assert_equal :lisp, Filetype.get('foo.lisp')
63
+ assert_equal :lisp, Filetype.get('foo.lsp')
64
+ assert_equal :lua, Filetype.get('foo.lua')
65
+ # assert_equal :objc, Filetype.get('foo.m') # DUPLICATE
66
+ # assert_equal :objc, Filetype.get('foo.h') # DUPLICATE
67
+ assert_equal :ocaml, Filetype.get('foo.ml')
68
+ assert_equal :ocaml, Filetype.get('foo.mli')
69
+ assert_equal :perl, Filetype.get('foo.pl')
70
+ assert_equal :perl, Filetype.get('foo.pm')
71
+ assert_equal :perl, Filetype.get('foo.t')
72
+ assert_equal :perl, Filetype.get('foo.pod')
73
+ assert_equal :php, Filetype.get('foo.php')
74
+ assert_equal :php, Filetype.get('foo.phpt')
75
+ assert_equal :php, Filetype.get('foo.phtml')
76
+ assert_equal :python, Filetype.get('foo.py')
77
+ assert_equal :python, Filetype.get('foo.pyc')
78
+ assert_equal :rackup, Filetype.get('foo.ru')
6
79
  assert_equal :ruby, Filetype.get('foo.rb')
7
- assert_nil Filetype.get('foo.abahaha')
80
+ assert_equal :ruby, Filetype.get('foo.rake')
81
+ assert_equal :ruby, Filetype.get('foo.rjs')
82
+ assert_equal :sass, Filetype.get('foo.sass')
83
+ assert_equal :scala, Filetype.get('foo.scala')
84
+ assert_equal :scss, Filetype.get('foo.scss')
85
+ assert_equal :scheme, Filetype.get('foo.scm')
86
+ assert_equal :scheme, Filetype.get('foo.ss')
87
+ assert_equal :shell, Filetype.get('foo.sh')
88
+ assert_equal :shell, Filetype.get('foo.bash')
89
+ assert_equal :shell, Filetype.get('foo.ksh')
90
+ assert_equal :shell, Filetype.get('foo.zsh')
91
+ assert_equal :shell, Filetype.get('foo.csh')
92
+ assert_equal :smalltalk, Filetype.get('foo.st')
93
+ assert_equal :sql, Filetype.get('foo.sql')
94
+ assert_equal :sql, Filetype.get('foo.ctl')
95
+ assert_equal :text, Filetype.get('foo.txt')
96
+ assert_equal :yaml, Filetype.get('foo.yaml')
97
+ assert_equal :yaml, Filetype.get('foo.yml')
98
+ assert_equal :xml, Filetype.get('foo.xml')
99
+ assert_equal :xml, Filetype.get('foo.dtd')
100
+ assert_equal :xsl, Filetype.get('foo.xslt')
101
+ assert_equal :xsl, Filetype.get('foo.xsl')
8
102
  end
9
103
 
10
104
  test 'fetching multiple languages of a file name' do
@@ -17,4 +111,4 @@ class FileTypeTest < TestCase
17
111
  assert_equal :bar, Filetype.get('hello.foo')
18
112
  end
19
113
 
20
- end
114
+ end
data/test/test_helper.rb CHANGED
@@ -1,4 +1,4 @@
1
- class TestCase < MiniTest::Unit::TestCase
1
+ class TestCase < Minitest::Test
2
2
  def self.test(name, &block)
3
3
  test_name = "test_#{name.gsub(/\s+/, '_')}".to_sym
4
4
  defined = instance_method(test_name) rescue false
@@ -11,4 +11,4 @@ class TestCase < MiniTest::Unit::TestCase
11
11
  end
12
12
  end
13
13
  end
14
- end
14
+ end
metadata CHANGED
@@ -1,31 +1,24 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: filetype
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.1.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2
6
5
  platform: ruby
7
- authors:
6
+ authors:
8
7
  - Lee Jarvis
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
-
13
- date: 2011-04-26 00:00:00 +01:00
14
- default_executable:
11
+ date: 2021-10-12 00:00:00.000000000 Z
15
12
  dependencies: []
16
-
17
13
  description: Find a file type according to a filename or extension
18
- email:
14
+ email:
19
15
  - lee@jarvis.co
20
16
  executables: []
21
-
22
17
  extensions: []
23
-
24
18
  extra_rdoc_files: []
25
-
26
- files:
27
- - .gemtest
28
- - .gitignore
19
+ files:
20
+ - ".gemtest"
21
+ - ".gitignore"
29
22
  - LICENSE
30
23
  - README.md
31
24
  - Rakefile
@@ -33,34 +26,26 @@ files:
33
26
  - lib/filetype.rb
34
27
  - test/filetype_test.rb
35
28
  - test/test_helper.rb
36
- has_rdoc: true
37
29
  homepage: http://github.com/injekt/filetype
38
30
  licenses: []
39
-
31
+ metadata: {}
40
32
  post_install_message:
41
33
  rdoc_options: []
42
-
43
- require_paths:
34
+ require_paths:
44
35
  - lib
45
- required_ruby_version: !ruby/object:Gem::Requirement
46
- none: false
47
- requirements:
36
+ required_ruby_version: !ruby/object:Gem::Requirement
37
+ requirements:
48
38
  - - ">="
49
- - !ruby/object:Gem::Version
50
- version: "0"
51
- required_rubygems_version: !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ required_rubygems_version: !ruby/object:Gem::Requirement
42
+ requirements:
54
43
  - - ">="
55
- - !ruby/object:Gem::Version
56
- version: "0"
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
57
46
  requirements: []
58
-
59
- rubyforge_project:
60
- rubygems_version: 1.6.2
47
+ rubygems_version: 3.2.9
61
48
  signing_key:
62
- specification_version: 3
49
+ specification_version: 4
63
50
  summary: Find a files type
64
- test_files:
65
- - test/filetype_test.rb
66
- - test/test_helper.rb
51
+ test_files: []