more_core_extensions 3.8.0 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +5 -2
- data/lib/more_core_extensions/all.rb +0 -1
- data/lib/more_core_extensions/core_ext/array/sorting.rb +22 -0
- data/lib/more_core_extensions/core_ext/class/hierarchy.rb +16 -0
- data/lib/more_core_extensions/core_ext/object.rb +0 -1
- data/lib/more_core_extensions/version.rb +1 -1
- metadata +1 -4
- data/lib/more_core_extensions/core_ext/enumerable.rb +0 -1
- data/lib/more_core_extensions/core_ext/enumerable/sorting.rb +0 -15
- data/lib/more_core_extensions/core_ext/object/descendants.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef4118bf7eac11398770bff4fe85a32527febec7e9d8d45a4c3c91f527e4bac5
|
4
|
+
data.tar.gz: c48abbcc780d5cbe1d6284de32c106795cb0d1a268b8adb3f6212c6e838c1228
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62c7e0dc1b63655c03c509899d60e9224e310626ceff3be2095ce4008165692877b9099a86f2a0768eae414831b24ac733d160dbb2cb2fb7ded18cdbc56488b2
|
7
|
+
data.tar.gz: f4921953a78e5370e90946da2ec7f6456124f3078688f6d0cc901857d9b5b6b98c5e8c4f34f43b885d8bb79ee62c80a45cacf9baf56a95f384b78070e1699a3f
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,11 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
4
4
|
|
5
5
|
## [Unreleased]
|
6
6
|
|
7
|
+
## [4.0.0] - 2020-01-31
|
8
|
+
### Changed
|
9
|
+
- **BREAKING**: Moved Object#descendant_get to Class#descendant_get [[#75](https://github.com/ManageIQ/more_core_extensions/pull/75)]
|
10
|
+
- **BREAKING**: Removed deprecated Enumerable#stable_sort_by [[#76](https://github.com/ManageIQ/more_core_extensions/pull/76)]
|
11
|
+
|
7
12
|
## [3.8.0] - 2020-01-31
|
8
13
|
### Changed
|
9
14
|
- Renamed Enumerable#stable_sort_by to Array#tabular_sort [[#68](https://github.com/ManageIQ/more_core_extensions/pull/68)]
|
data/README.md
CHANGED
@@ -14,6 +14,8 @@ MoreCoreExtensions are a set of core extensions beyond those provided by ActiveS
|
|
14
14
|
|
15
15
|
#### Array
|
16
16
|
|
17
|
+
* core_ext/array/compact_map.rb
|
18
|
+
* `#compact_map` - Collect non-nil results from the block
|
17
19
|
* core_ext/array/deletes.rb
|
18
20
|
* `#delete_blanks` - Deletes all items where the value is blank
|
19
21
|
* `#delete_nils` - Deletes all items where the value is nil
|
@@ -35,6 +37,8 @@ MoreCoreExtensions are a set of core extensions beyond those provided by ActiveS
|
|
35
37
|
* core_ext/array/random.rb
|
36
38
|
* `#random_index` - Picks a valid index randomly
|
37
39
|
* `#random_element` - Picks an element randomly
|
40
|
+
* core_ext/array/sorting.rb
|
41
|
+
* `#tabular_sort` - Sorts an Array of Hashes by specific columns
|
38
42
|
* core_ext/array/stretch.rb
|
39
43
|
* `.stretch` - Stretch all argument Arrays to make them the same size
|
40
44
|
* `.stretch!` - Stretch all argument Arrays to make them the same size. Modifies the arguments in place.
|
@@ -47,6 +51,7 @@ MoreCoreExtensions are a set of core extensions beyond those provided by ActiveS
|
|
47
51
|
#### Class
|
48
52
|
|
49
53
|
* core_ext/class/hierarchy.rb
|
54
|
+
* `#descendant_get` - Returns the descendant with a given name
|
50
55
|
* `#hierarchy` - Returns a tree-like Hash structure of all descendants.
|
51
56
|
* `#lineage` - Returns an Array of all superclasses.
|
52
57
|
* `#leaf_subclasses` - Returns an Array of all descendants which have no subclasses.
|
@@ -82,8 +87,6 @@ MoreCoreExtensions are a set of core extensions beyond those provided by ActiveS
|
|
82
87
|
|
83
88
|
#### Object
|
84
89
|
|
85
|
-
* core_ext/module/descendants.rb
|
86
|
-
* `#descendant_get` - Returns the descendant with a given name
|
87
90
|
* core_ext/module/namespace.rb
|
88
91
|
* `#in_namespace?` - Returns whether or not the object is in the given namespace
|
89
92
|
|
@@ -3,7 +3,6 @@ require 'more_core_extensions/version'
|
|
3
3
|
require 'more_core_extensions/core_ext/array'
|
4
4
|
require 'more_core_extensions/core_ext/benchmark'
|
5
5
|
require 'more_core_extensions/core_ext/class'
|
6
|
-
require 'more_core_extensions/core_ext/enumerable'
|
7
6
|
require 'more_core_extensions/core_ext/hash'
|
8
7
|
require 'more_core_extensions/core_ext/math'
|
9
8
|
require 'more_core_extensions/core_ext/module'
|
@@ -1,5 +1,27 @@
|
|
1
1
|
module MoreCoreExtensions
|
2
2
|
module StableSorting
|
3
|
+
# Sorts an Array of Hashes by specific columns.
|
4
|
+
#
|
5
|
+
# Rows are sorted by +col_names+, if given, otherwise by the given block.
|
6
|
+
# The +order+ parameter can be given :ascending or :descending and
|
7
|
+
# defaults to :ascending.
|
8
|
+
#
|
9
|
+
# Note:
|
10
|
+
# - Strings are sorted case-insensitively
|
11
|
+
# - nil values are sorted last
|
12
|
+
# - Boolean values are sorted alphabetically (i.e. false then true)
|
13
|
+
#
|
14
|
+
# [
|
15
|
+
# {:col1 => 'b', :col2 => 2},
|
16
|
+
# {:col1 => 'b', :col2 => 1},
|
17
|
+
# {:col1 => 'A', :col2 => 1}
|
18
|
+
# ].tabular_sort([:col1, :col2])
|
19
|
+
#
|
20
|
+
# # => [
|
21
|
+
# # {:col1 => 'A', :col2 => 1},
|
22
|
+
# # {:col1 => 'b', :col2 => 1},
|
23
|
+
# # {:col1 => 'b', :col2 => 2}
|
24
|
+
# # ]
|
3
25
|
def tabular_sort(col_names = nil, order = nil, &block)
|
4
26
|
# stabilizer is needed because of
|
5
27
|
# http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/170565
|
@@ -3,6 +3,22 @@ require 'active_support/core_ext/object/try'
|
|
3
3
|
|
4
4
|
module MoreCoreExtensions
|
5
5
|
module ClassHierarchy
|
6
|
+
# Returns the descendant with a given name
|
7
|
+
#
|
8
|
+
# require 'socket'
|
9
|
+
# IO.descendant_get("IO")
|
10
|
+
# # => IO
|
11
|
+
# IO.descendant_get("BasicSocket")
|
12
|
+
# # => BasicSocket
|
13
|
+
# IO.descendant_get("IPSocket")
|
14
|
+
# # => IPSocket
|
15
|
+
def descendant_get(desc_name)
|
16
|
+
return self if desc_name == name || desc_name.nil?
|
17
|
+
klass = descendants.find { |desc| desc.name == desc_name }
|
18
|
+
raise ArgumentError, "#{desc_name} is not a descendant of #{name}" unless klass
|
19
|
+
klass
|
20
|
+
end
|
21
|
+
|
6
22
|
# Returns a tree-like Hash structure of all descendants.
|
7
23
|
#
|
8
24
|
# require 'socket'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: more_core_extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Frey
|
@@ -148,8 +148,6 @@ files:
|
|
148
148
|
- lib/more_core_extensions/core_ext/benchmark/realtime_store.rb
|
149
149
|
- lib/more_core_extensions/core_ext/class.rb
|
150
150
|
- lib/more_core_extensions/core_ext/class/hierarchy.rb
|
151
|
-
- lib/more_core_extensions/core_ext/enumerable.rb
|
152
|
-
- lib/more_core_extensions/core_ext/enumerable/sorting.rb
|
153
151
|
- lib/more_core_extensions/core_ext/hash.rb
|
154
152
|
- lib/more_core_extensions/core_ext/hash/deletes.rb
|
155
153
|
- lib/more_core_extensions/core_ext/hash/nested.rb
|
@@ -164,7 +162,6 @@ files:
|
|
164
162
|
- lib/more_core_extensions/core_ext/numeric/math.rb
|
165
163
|
- lib/more_core_extensions/core_ext/numeric/rounding.rb
|
166
164
|
- lib/more_core_extensions/core_ext/object.rb
|
167
|
-
- lib/more_core_extensions/core_ext/object/descendants.rb
|
168
165
|
- lib/more_core_extensions/core_ext/object/namespace.rb
|
169
166
|
- lib/more_core_extensions/core_ext/range.rb
|
170
167
|
- lib/more_core_extensions/core_ext/range/step_value.rb
|
@@ -1 +0,0 @@
|
|
1
|
-
require 'more_core_extensions/core_ext/enumerable/sorting'
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module MoreCoreExtensions
|
2
|
-
module StableSorting
|
3
|
-
def self.included(klass)
|
4
|
-
klass.class_eval do
|
5
|
-
# <b>DEPRECATED:</b> Please use <tt>tabular_sort</tt> instead.
|
6
|
-
def stable_sort_by(*args)
|
7
|
-
warn "[DEPRECATION] `stable_sort_by` is deprecated. Please use `Array#tabular_sort` instead."
|
8
|
-
to_a.tabular_sort(*args)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
Enumerable.send(:include, MoreCoreExtensions::StableSorting)
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'active_support/core_ext/class/subclasses'
|
2
|
-
|
3
|
-
module MoreCoreExtensions
|
4
|
-
module Descendants
|
5
|
-
#
|
6
|
-
# Retrieve a descendant by its name
|
7
|
-
#
|
8
|
-
def descendant_get(desc_name)
|
9
|
-
return self if desc_name == name || desc_name.nil?
|
10
|
-
klass = descendants.find { |desc| desc.name == desc_name }
|
11
|
-
raise ArgumentError, "#{desc_name} is not a descendant of #{name}" unless klass
|
12
|
-
klass
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
Object.send(:include, MoreCoreExtensions::Descendants)
|