Skip to content

lunarmodules/lua-mimetypes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mimetypes.lua

This is just a quick Lua library designed to provide a nice, non-server-bound database of MIME types. Usage is simple:

local mimetypes = require 'mimetypes'
mimetypes.guess "docs.txt"              -- text/plain
mimetypes.guess "word.doc"              -- application/msword
mimetypes.guess "init.lua"              -- text/x-lua

Should you need your own MIME types, you can do this:

local mimedb = mimetypes.copy()
mimedb.extensions["ext"] = "application/x-cool-type"
mimetypes.guess("myfile.ext", mimedb)   -- application/x-cool-type

If you want to make sure it works, run lua test.lua (or use Shake).

API

mimetypes.copy([db]) - Copies the default MIME types database and returns the copy. If you provide db, it is copied instead of the default.

mimetypes.guess(filename[, db]) - Guesses the MIME type of the file named filename. If a MIME type could not be ascertained, nil is returned. If you provide db, it is used to look up the MIME type instead of the default database.

Databases

Each database is a table that contains two fields - extensions and filenames. filenames is checked first, as it maps literal filenames (like README) to MIME types.

If that doesn't work, the file's extension is taken and looked up in extensions. (For example, report.pdf would look up pdf and return the MIME type there, which is application/pdf.)

The default database is immutable (and hidden), because it's shared between everyone who calls guess without arguments, and messing with it would be a bad thing.

Bugs

If you encounter any missing, inaccurate, or questionably assigned MIME types, file a bug (or preferably even a PR) on the issue tracker at https://github.com/lunarmodules/lua-mimetypes.