Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jwaldrip/mime-types-cr
MIME Types for Crystal :: A port of the Ruby MIME::Types library
https://github.com/jwaldrip/mime-types-cr
Last synced: about 2 months ago
JSON representation
MIME Types for Crystal :: A port of the Ruby MIME::Types library
- Host: GitHub
- URL: https://github.com/jwaldrip/mime-types-cr
- Owner: jwaldrip
- License: mit
- Created: 2017-01-10T08:44:00.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-06-15T20:12:01.000Z (over 6 years ago)
- Last Synced: 2024-10-16T00:01:59.713Z (about 2 months ago)
- Language: Crystal
- Homepage: https://jwaldrip.github.io/mime-types.cr/
- Size: 199 KB
- Stars: 10
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-crystal - mime-types.cr - A port of the Ruby MIME-types library (Framework Components)
README
# MIME Types for Crystal [![Build Status](https://img.shields.io/travis/jwaldrip/mime-types.cr.svg)](https://travis-ci.org/jwaldrip/mime-types.cr) [![GitHub release](https://img.shields.io/github/tag/jwaldrip/mime-types.cr.svg)](https://github.com/jwaldrip/mime-types.cr/releases) [![Crystal Docs](https://img.shields.io/badge/Crystal-Docs-8A2BE2.svg)](https://jwaldrip.github.com/mime-types.cr)
## Description
The mime-types library provides a library and registry for information about
MIME content type definitions. It can be used to determine defined filename
extensions for MIME types, or to use filename extensions to look up the likely
MIME type definitions.### About MIME Media Types
MIME content types are used in MIME-compliant communications, as in e-mail or
HTTP traffic, to indicate the type of content which is transmitted. The
mime-types library provides the ability for detailed information about MIME
entities (provided as an enumerable collection of `MIME::Type` objects) to be
determined and used. There are many types defined by RFCs and vendors, so the
list is long but by definition incomplete; don't hesitate to add additional
type definitions. MIME type definitions found in mime-types are from RFCs, W3C
recommendations, the [IANA Media Types
registry](https://www.iana.org/assignments/media-types/media-types.xhtml), and
user contributions. It conforms to RFCs 2045 and 2231.## Synopsis
MIME types are used in MIME entities, as in email or HTTP traffic. It is useful
at times to have information available about MIME types (or, inversely, about
files). A `MIME::Type` stores the known information about one MIME type.```crystal
require "mime/types"plaintext = MIME::Types["text/plain"] # => [ text/plain ]
text = plaintext.first # => text/plainputs text.media_type # => "text"
puts text.sub_type # => "plain"puts text.extensions.join(' ') # => "txt asc c cc h hh cpp hpp dat hlp"
puts text.preferred_extension # => "txt"
puts text.friendly # => "Text Document"
puts text.i18n_key # => "text.plain"puts text.encoding # => quoted-printable
puts text.default_encoding # => quoted-printable
puts text.binary? # => false
puts text.ascii? # => true
puts text.obsolete? # => false
puts text.registered? # => true
puts text.complete? # => trueputs text # => "text/plain"
puts text == "text/plain" # => true
puts "text/plain" == text # => true
puts text == "text/x-plain" # => false
puts "text/x-plain" == text # => falseputs MIME::Type.simplified("x-appl/x-zip") # => "x-appl/x-zip"
puts MIME::Type.i18n_key("x-appl/x-zip") # => "x-appl.x-zip"puts text.like?("text/x-plain") # => true
puts text.like?(MIME::Type.new("x-text/x-plain")) # => trueputs text.xref_urls
# => [ "http://www.iana.org/go/rfc2046",
# "http://www.iana.org/go/rfc3676",
# "http://www.iana.org/go/rfc5147" ]xtext = MIME::Type.new("x-text/x-plain")
puts xtext.media_type # => "text"
puts xtext.raw_media_type # => "x-text"
puts xtext.sub_type # => "plain"
puts xtext.raw_sub_type # => "x-plain"
puts xtext.complete? # => falseputs MIME::Types.any? { |type| type.content_type == "text/plain" } # => true
puts MIME::Types.all?(&.registered?) # => false# Various string representations of MIME types
qcelp = MIME::Types["audio/QCELP"].first # => audio/QCELP
puts qcelp.content_type # => "audio/QCELP"
puts qcelp.simplified # => "audio/qcelp"xwingz = MIME::Types["application/x-Wingz"].first # => application/x-Wingz
puts xwingz.content_type # => "application/x-Wingz"
puts xwingz.simplified # => "application/x-wingz"
```