to_collection 2.0.0 → 2.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b7f4554abcadb801dd15c605c27fd9f2136afe4af6daaeceae11c1acf0f4e81d
4
- data.tar.gz: 450a6c4275d9f288a9ad12d0206b4bae758b53ed4bc4fb0235405e6630124f9e
3
+ metadata.gz: 0f47b3f3b4c1dac9e8a35181d9286a03ff0fc246179ec73eb842378f6e2b9da2
4
+ data.tar.gz: 6521e3dd2db1ca1ae61719842ac225253bbb54dc38b958765c759129d6495cb8
5
5
  SHA512:
6
- metadata.gz: 0ba415baef5dabf5bbf237d5f6bace35f8942db4198125e119c7ad465ef037d371b199537b09a81582129363da2a1934c481ba897302805a8558c062faa608c1
7
- data.tar.gz: a1db7fd8b9762c1d595c23041fab690b379711500e814ac8681d6e7d0d610f60c3350add4e1212dc313bb954de91da3c98dc4941395e03e9e51fc002b3cbce62
6
+ metadata.gz: 69bc9ff83efa0d7eafa084d3680020a0f8531e0856c80d4de524b40553812de76f82261609616b27cfb4f42653086e9b5145c148d0b3de056ef632cf04f20862
7
+ data.tar.gz: abb6bcf672a80e01768ef20da26e5485258042d814cab8eef0784a382b494f23d6e43cc021171d1ee014c144df044c7b522d350b15670b3b14bedbc57288db69
@@ -0,0 +1,13 @@
1
+ ### v2.0.1
2
+
3
+ - Opal support via monkey-patching
4
+
5
+ ### v2.0.0
6
+
7
+ - Revamped API using Ruby Refinements (safer than monkey-patching)
8
+ - Removed `super_module` gem dependency
9
+ - Dropped safety options since Ruby Refinements already handle things safely
10
+
11
+ ### v1.0.1
12
+
13
+ - Updated `super_module` gem version to relax indirect `method_source` gem version dependency
data/LICENSE CHANGED
@@ -1,5 +1,3 @@
1
- MIT License
2
-
3
1
  Copyright (c) 2017-2020 Andy Maleh
4
2
 
5
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # ToCollection 2.0.0 Ruby Refinement
1
+ # ToCollection 2.0.1 Ruby Refinement
2
2
  [![Gem Version](https://badge.fury.io/rb/to_collection.svg)](http://badge.fury.io/rb/to_collection)
3
3
  [![Build Status](https://travis-ci.org/AndyObtiva/to_collection.svg?branch=master)](https://travis-ci.org/AndyObtiva/to_collection)
4
4
  [![Coverage Status](https://coveralls.io/repos/github/AndyObtiva/to_collection/badge.svg?branch=master)](https://coveralls.io/github/AndyObtiva/to_collection?branch=master)
@@ -9,6 +9,8 @@ Especially useful in processing REST Web Service API JSON responses in a uniform
9
9
 
10
10
  `ToCollection` is a Ruby Refinement, so it may be safely enabled via `using ToCollection` where needed only.
11
11
 
12
+ Now also supports [Opal Ruby](https://opalrb.com) by degrading gracefully to monkey-patching.
13
+
12
14
  ## Introduction
13
15
 
14
16
  Canonicalize data to treat uniformly whether it comes in as a single object or an array of objects, dropping `nils` out automatically.
@@ -44,20 +46,26 @@ end
44
46
 
45
47
  ### Bundler
46
48
 
47
- - Add `gem 'to_collection', '~> 2.0.0'` to Gemfile
49
+ - Add `gem 'to_collection', '~> 2.0.1'` to Gemfile
48
50
  - Run `bundle`
49
51
  - Require `to_collection` ruby gem in code (e.g. via `Bundler.require(:default)` or `require 'bundler/setup'` & `require 'to_collection'`)
50
52
  - Add `using ToCollection` to the top of the Ruby file you would like to refine `Object` in with `#to_collection` method.
51
53
 
52
54
  ### Manual Gem Install
53
55
 
54
- - Run `gem install to_collection -v2.0.0`
56
+ - Run `gem install to_collection -v2.0.1`
55
57
  - Add `require 'to_collection'` to code
56
58
  - Add `using ToCollection` to the top of the Ruby file you would like to refine `Object` in with `#to_collection` method.
57
59
 
60
+ ### Opal Ruby
61
+
62
+ - Follow the first step in [Bundler](#bundler) or [Manual Gem Install](#manual-gem-install) instructions to add the gem.
63
+ - Add Opal.use_gem 'to_collection' to "config/initializers/assets.rb" in Rails unless using as part of another gem.
64
+ - Add `require 'to_collection'` to code (this adds the functionality via monkey-patching not refinements in [Opal](https://opalrb.com))
65
+
58
66
  ### Note
59
67
 
60
- If '#to_collection' was already defined on `Object` in a project, requiring the `to_collection` library will print a warning.
68
+ If '#to_collection' was already defined on `Object` in a project, requiring the `to_collection` library will print a warning.
61
69
 
62
70
  It is still safe to require as it does not overwrite `Object#to_collection` except in Ruby files where `using ToCollection` is added.
63
71
 
@@ -261,20 +269,12 @@ You asked for "Elegant" didn't you? I hope that was what you were looking for.
261
269
 
262
270
  ## How It Works
263
271
 
264
- A Ruby Refinement is activated via `using ToCollection` adding/overwriting the `#to_collection` method in `Object`, which
272
+ A Ruby Refinement is activated via `using ToCollection` adding/overwriting the `#to_collection` method in `Object`, which
265
273
  is the ancestor of all Ruby objects.
266
274
 
267
- ## Release Notes
268
-
269
- ### v2.0.0
275
+ ## Change Log
270
276
 
271
- - Revamped API using Ruby Refinements (safer than monkey-patching)
272
- - Removed `super_module` gem dependency
273
- - Dropped safety options since Ruby Refinements already handle things safely
274
-
275
- ### v1.0.1
276
-
277
- - Updated `super_module` gem version to relax indirect `method_source` gem version dependency
277
+ [CHANGELOG.md](CHANGELOG.md)
278
278
 
279
279
  ## Contributing
280
280
 
@@ -290,5 +290,6 @@ is the ancestor of all Ruby objects.
290
290
 
291
291
  ## Copyright
292
292
 
293
- Copyright (c) 2017-2020 Andy Maleh. See LICENSE.txt for
294
- further details.
293
+ [MIT](LICENSE.txt)
294
+
295
+ Copyright (c) 2017-2020 Andy Maleh.
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 2.0.1
@@ -1,6 +1,29 @@
1
- # require 'super_module'
1
+ # Copyright (c) 2017-2020 Andy Maleh
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in all
11
+ # copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ # SOFTWARE.
2
20
 
3
21
  module ToCollection
22
+ if RUBY_PLATFORM == 'opal'
23
+ def self.refine(class_or_module, &refinement)
24
+ class_or_module.class_eval(&refinement)
25
+ end
26
+ end
4
27
  refine Object do
5
28
  begin
6
29
  method(:to_collection)
@@ -15,3 +38,10 @@ module ToCollection
15
38
  end
16
39
  end
17
40
  end
41
+
42
+ if RUBY_PLATFORM == 'opal'
43
+ # Create a shim `using` method that does nothing since we monkey-patch in Opal earlier in the `refine` method
44
+ def self.using(refinement)
45
+ # NO OP
46
+ end
47
+ end
@@ -0,0 +1,48 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+ # stub: to_collection 2.0.1 ruby lib
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = "to_collection".freeze
9
+ s.version = "2.0.1"
10
+
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib".freeze]
13
+ s.authors = ["Andy Maleh".freeze]
14
+ s.date = "2020-12-09"
15
+ s.description = "ToCollection Ruby Refinement - Treat an array of objects and a singular object uniformly as a collection of objects".freeze
16
+ s.email = "andy.am@gmail.com".freeze
17
+ s.extra_rdoc_files = [
18
+ "CHANGELOG.md",
19
+ "LICENSE",
20
+ "README.md"
21
+ ]
22
+ s.files = [
23
+ "CHANGELOG.md",
24
+ "README.md",
25
+ "VERSION",
26
+ "lib/to_collection.rb",
27
+ "to_collection.gemspec"
28
+ ]
29
+ s.homepage = "http://github.com/AndyObtiva/to_collection".freeze
30
+ s.licenses = ["MIT".freeze]
31
+ s.rubygems_version = "3.1.4".freeze
32
+ s.summary = "ToCollection Ruby Refinement - Treat an array of objects and a singular object uniformly as a collection of objects".freeze
33
+
34
+ if s.respond_to? :specification_version then
35
+ s.specification_version = 4
36
+ end
37
+
38
+ if s.respond_to? :add_runtime_dependency then
39
+ s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.3.3"])
40
+ s.add_development_dependency(%q<coveralls>.freeze, ["~> 0.8.19"])
41
+ s.add_development_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
42
+ else
43
+ s.add_dependency(%q<jeweler>.freeze, ["~> 2.3.3"])
44
+ s.add_dependency(%q<coveralls>.freeze, ["~> 0.8.19"])
45
+ s.add_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
46
+ end
47
+ end
48
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: to_collection
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-29 00:00:00.000000000 Z
11
+ date: 2020-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jeweler
@@ -58,17 +58,21 @@ email: andy.am@gmail.com
58
58
  executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files:
61
+ - CHANGELOG.md
61
62
  - LICENSE
62
63
  - README.md
63
64
  files:
65
+ - CHANGELOG.md
64
66
  - LICENSE
65
67
  - README.md
68
+ - VERSION
66
69
  - lib/to_collection.rb
70
+ - to_collection.gemspec
67
71
  homepage: http://github.com/AndyObtiva/to_collection
68
72
  licenses:
69
73
  - MIT
70
74
  metadata: {}
71
- post_install_message:
75
+ post_install_message:
72
76
  rdoc_options: []
73
77
  require_paths:
74
78
  - lib
@@ -83,8 +87,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
83
87
  - !ruby/object:Gem::Version
84
88
  version: '0'
85
89
  requirements: []
86
- rubygems_version: 3.1.2
87
- signing_key:
90
+ rubygems_version: 3.1.4
91
+ signing_key:
88
92
  specification_version: 4
89
93
  summary: ToCollection Ruby Refinement - Treat an array of objects and a singular object
90
94
  uniformly as a collection of objects