Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MIME::Types#add_type will add exact duplicate objects #79

Closed
halostatue opened this issue Oct 29, 2014 · 0 comments · Fixed by #111
Closed

MIME::Types#add_type will add exact duplicate objects #79

halostatue opened this issue Oct 29, 2014 · 0 comments · Fixed by #111
Labels
Milestone

Comments

@halostatue
Copy link
Member

The type variants and extension index code contains Array objects, not Set objects, which means that you can do:

text = MIME::Type['text/plain'].first
types = MIME::Types.new
types.add(text, text)

Text will be listed in the lookup fields twice.

@halostatue halostatue added the Bug label Oct 29, 2014
@halostatue halostatue added this to the 2.5 milestone Oct 29, 2014
@halostatue halostatue modified the milestones: 2.5, 3.0 Apr 26, 2015
halostatue added a commit that referenced this issue Nov 21, 2015
- Require Ruby 2.0 or later. Resolves #97.
- Remove deprecated methods.
- Update known registries when a MIME type extension changes. Resolves #84.
- Relicensed mime-types 3.0 as MIT only. Resolves #95.
- Extracted data from this gem to mime-types-data; removed deprecated data.
- Rewrote tests to better understand what is being tested—some of the tests
  were almost ten years old and didn’t make a lot of sense with this version. I
  have switched to minitest/spec with assertions.
- Columnar data is now the default registry store. Because JSON is not required
  by default, this change resolves #85.
- MIME::Types containers are now implemented with Set instead of Array to
  prevent data duplication. Resolves #79.
halostatue added a commit that referenced this issue Nov 21, 2015
- Require Ruby 2.0 or later. Resolves #97.
- Remove deprecated methods.
- Update known registries when a MIME type extension changes. Resolves #84.
- Relicensed mime-types 3.0 as MIT only. Resolves #95.
- Extracted data from this gem to mime-types-data; removed deprecated data.
- Rewrote tests to better understand what is being tested—some of the tests
  were almost ten years old and didn’t make a lot of sense with this version. I
  have switched to minitest/spec with assertions.
- Columnar data is now the default registry store. Because JSON is not required
  by default, this change resolves #85.
- MIME::Types containers are now implemented with Set instead of Array to
  prevent data duplication. Resolves #79.
jsonn pushed a commit to jsonn/pkgsrc that referenced this issue Dec 14, 2015
== 3.0 / 2015-11-21

* 2 governance changes

  * This project and the related mime-types-data project are now exclusively
    MIT licensed. Resolves
    {#95}[mime-types/ruby-mime-types#95].

  * All projects under the mime-types organization now have a standard code of
    conduct adapted from the {Contributor
    Covenant}[http://contributor-covenant.org]. This text can be found in the
    {Code-of-Conduct.rdoc}[Code-of-Conduct_rdoc.html] file.

* 3 major changes

  * All methods deprecated in mime-types 2.x have been removed.
  * mime-types now requires Ruby 2.0 compatibility or later. Resolves
    {#97}[mime-types/ruby-mime-types#97].
  * The registry data has been removed from mime-types and put into
    mime-types-data, maintained and released separately. It can be found at
    {mime-types-data}[https://github.com/mime-types/mime-types-data].

* 17 minor changes:

  * MIME::Type changes:

    * Changed the way that simplified types representations are creatd to
      reflect the fact that +x-+ prefixes are no longer considered special
      according to IANA. A simplified MIME type is case-folded to lowercase. A
      new keyword parameter, +remove_x_prefix+, can be provided to remove +x-+
      prefixes.
    * Improved initialization with an Array works so that extensions do not
      need to be wrapped in another array. This means that <tt>%w(text/yaml
      yaml yml)</tt> works in the same way that <tt>['text/yaml', %w(yaml
      yml)]</tt> did (and still does).
    * Changed +priority_compare+ to conform with attributes that no longer
      exist.
    * Changed the internal implementation of extensions to use a frozen Set.
    * When extensions are set or modified with +add_extensions+, the primary
      registry will be informed of a need to reindex extensions. Resolves
      {#84}[mime-types/ruby-mime-types#84].
    * The preferred extension can be set explicitly. If not set, it will be the
      first extension. If the preferred extension is not in the extension list,
      it will be added.
    * Improved how xref URLs are generated.
    * Converted +obsolete+, +registered+ and +signature+ to attr_accessors.

  * MIME::Types changes:

    * Modified MIME::Types.new to track instances of MIME::Types so that they
      can be told to reindex the extensions as necessary.
    * Removed +data_version+ attribute.
    * Changed #[] so that the +complete+ and +registered+ flags are keywords
      instead of a generic options parameter.
    * Extracted the class methods to a separate file.
    * Changed the container implementation to use a Set instead of an Array to
      prevent data duplication. Resolves
      {#79}[mime-types/ruby-mime-types#79].

  * MIME::Types::Cache changes:

    * Caching is now based on the data gem version instead of the mime-types
      version.
    * Caching is compatible with columnar registry stores.

  * MIME::Types::Loader changes:

    * MIME::Types::Loader::PATH has been removed and replaced with
      MIME::Types::Data::PATH from the mime-types-data gem. The environment
      variable RUBY_MIME_TYPES_DATA is still used.
    * Support for the long-deprecated mime-types v1 format has been removed.
    * The registry is default loaded from the columnar store by default. The
      internal format of the columnar store has changed; many of the boolean
      flags are now loaded from a single file. Resolves
      {#85}[https://github.com/mime-types/ruby-mime-types/85].
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant