documentation and tests.
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
/*.css
|
||||
/*.js
|
||||
/*.html
|
||||
@@ -0,0 +1,79 @@
|
||||
#lang scribble/manual
|
||||
|
||||
@(require (for-label racket/base
|
||||
racket/contract
|
||||
racket-mimetypes))
|
||||
|
||||
@title{MIME Types}
|
||||
@author[@author+email["Hans Dijkema" "hans@dijkewijk.nl"]]
|
||||
|
||||
@defmodule[racket-mimetypes]
|
||||
|
||||
The @racketmodname[racket-mimetypes] library maps file extensions to MIME type
|
||||
strings. It uses a built-in table and does not inspect the contents of a file.
|
||||
|
||||
@defproc[(mimetype-for-ext
|
||||
[ext (or/c path-string? symbol?)]
|
||||
[#:default default string? "application/octet-stream"]
|
||||
[#:context context
|
||||
(or/c #f
|
||||
'application
|
||||
'audio
|
||||
'example
|
||||
'font
|
||||
'haptics
|
||||
'image
|
||||
'message
|
||||
'model
|
||||
'multipart
|
||||
'text
|
||||
'video)
|
||||
#f])
|
||||
string?]{
|
||||
|
||||
Returns the MIME type associated with @racket[ext]. The argument can be an
|
||||
extension, a path string, or a path. Symbols are accepted for extensions.
|
||||
|
||||
The following forms are accepted:
|
||||
|
||||
@itemlist[
|
||||
#:style 'compact
|
||||
@item{A string containing a bare extension, such as @racket["mp3"] or
|
||||
@racket[".MP3"].}
|
||||
@item{A symbol containing a bare extension, such as @racket['mp3].}
|
||||
@item{A string containing a file name or path, such as
|
||||
@racket["track.flac"], @racket["/music/track.flac"], or
|
||||
@racket["c:\\music\\track.flac"].}
|
||||
@item{A Racket path value, such as
|
||||
@racket[(string->path "/music/track.flac")].}
|
||||
]
|
||||
|
||||
The final path component is used and the text following its last dot is taken
|
||||
as the extension. A leading dot on a bare extension is therefore ignored.
|
||||
Both slash and backslash are recognized as path separators, independent of the
|
||||
current operating system. The resulting extension is converted to lowercase
|
||||
and stored internally as a symbol.
|
||||
|
||||
A string without a dot is treated as a bare extension. Consequently,
|
||||
@racket["README"] is looked up as the extension @racket['readme]. A name ending
|
||||
in a dot has no recognized extension and normally produces @racket[default].
|
||||
|
||||
The procedure accepts file-system paths, not URLs. Query strings and fragments
|
||||
are not removed. The contents of a file are not inspected.
|
||||
|
||||
An extension can have more than one MIME type. Without @racket[context], the
|
||||
first and most common type is returned. A context selects a MIME type whose
|
||||
top-level type matches the context. For example,
|
||||
@racket[(mimetype-for-ext "track.mp4")] returns @racket["video/mp4"], while
|
||||
@racket[(mimetype-for-ext "track.mp4" #:context 'audio)] returns
|
||||
@racket["audio/mp4"].
|
||||
|
||||
If the extension is unknown, or no type matches the supplied context,
|
||||
@racket[default] is returned.
|
||||
|
||||
For example, @racket[(mimetype-for-ext "MP3")] returns
|
||||
@racket["audio/mpeg"], @racket[(mimetype-for-ext ".flac")] returns
|
||||
@racket["audio/flac"], and
|
||||
@racket[(mimetype-for-ext "unknown" #:default "text/plain")]
|
||||
returns @racket["text/plain"].
|
||||
}
|
||||
Reference in New Issue
Block a user