more_core_extensions 3.2.0 → 3.3.0

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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +9 -0
  3. data/.rubocop.yml +4 -0
  4. data/.rubocop_local.yml +0 -0
  5. data/.travis.yml +18 -0
  6. data/CHANGELOG.md +54 -0
  7. data/Gemfile +8 -0
  8. data/README.md +21 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/lib/more_core_extensions/all.rb +2 -0
  13. data/lib/more_core_extensions/core_ext/hash/sorting.rb +20 -0
  14. data/lib/more_core_extensions/core_ext/hash.rb +2 -1
  15. data/lib/more_core_extensions/core_ext/object/descendants.rb +17 -0
  16. data/lib/more_core_extensions/core_ext/object.rb +1 -0
  17. data/lib/more_core_extensions/core_ext/range/step_value.rb +45 -0
  18. data/lib/more_core_extensions/core_ext/range.rb +1 -0
  19. data/lib/more_core_extensions/core_ext/string/decimal_suffix.rb +17 -0
  20. data/lib/more_core_extensions/core_ext/string.rb +1 -0
  21. data/lib/more_core_extensions/core_ext/symbol/to_i.rb +9 -0
  22. data/lib/more_core_extensions/core_ext/symbol.rb +1 -0
  23. data/lib/more_core_extensions/version.rb +1 -1
  24. data/more_core_extensions.gemspec +32 -0
  25. metadata +36 -44
  26. data/spec/core_ext/array/deletes_spec.rb +0 -15
  27. data/spec/core_ext/array/duplicates_spec.rb +0 -9
  28. data/spec/core_ext/array/element_counts_spec.rb +0 -16
  29. data/spec/core_ext/array/inclusions_spec.rb +0 -51
  30. data/spec/core_ext/array/math_spec.rb +0 -16
  31. data/spec/core_ext/array/nested_spec.rb +0 -183
  32. data/spec/core_ext/array/random_spec.rb +0 -21
  33. data/spec/core_ext/array/stretch_spec.rb +0 -94
  34. data/spec/core_ext/array/tableize_spec.rb +0 -156
  35. data/spec/core_ext/hash/deletes_spec.rb +0 -15
  36. data/spec/core_ext/hash/nested_spec.rb +0 -232
  37. data/spec/core_ext/numeric/clamp_spec.rb +0 -17
  38. data/spec/core_ext/numeric/math_spec.rb +0 -6
  39. data/spec/core_ext/numeric/rounding_spec.rb +0 -19
  40. data/spec/core_ext/object/namespace_spec.rb +0 -30
  41. data/spec/core_ext/string/formats_spec.rb +0 -77
  42. data/spec/core_ext/string/hex_dump_spec.rb +0 -84
  43. data/spec/core_ext/string/iec60027_2_spec.rb +0 -13
  44. data/spec/spec_helper.rb +0 -85
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a1add9ba7e2ca9ea1cd89792999f0a40b1ae00a0
4
- data.tar.gz: 21149cb02025e1c91ad29e50a68bc4df68746808
3
+ metadata.gz: 8445d02cce0bc6bc1cfc1554bd6db773e335c2f8
4
+ data.tar.gz: 010cb3f4eb19a5d6c36a7593e77d65012b48e8c8
5
5
  SHA512:
6
- metadata.gz: 40638498bbcb894d6722018c78c9ce10eecb32eb7a64b60233735c6f442cc8a18d3685020348db60fb658a0c8b6f3bcc7cd4e6ead1cb407355ff9298c1758374
7
- data.tar.gz: 8644345821bb5bef19fecd89e4e5575dd36ff6210146cfcbd029a2dd9310c607b7ad4ca1bf0e6776ff1fa2ddbfb402ce6c052b4d08978cba5a9ee7fee4bbbf82
6
+ metadata.gz: 4731d3a3029b3aa664031f4c794ce22f57da5c4718dd6c6bd4810b0a98a112d19028c3d7ca1400c64568f3505d6e6798dd76b4eec59e106bbedba7637b894a84
7
+ data.tar.gz: f0660e800d33a9d89c02a84e21825b7ed0ff7712594844dc3b5159dc1d0dbf960023a15005221501aabe5aa0255d9986c2e9f8e64497e1ecd673c25841b63489
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rubocop.yml ADDED
@@ -0,0 +1,4 @@
1
+ inherit_from:
2
+ - https://raw.githubusercontent.com/ManageIQ/guides/master/.rubocop_base.yml
3
+ # put all local rubocop config into .rubocop_local.yml as it will be loaded by .rubocop_cc.yml as well
4
+ - .rubocop_local.yml
File without changes
data/.travis.yml ADDED
@@ -0,0 +1,18 @@
1
+ language: ruby
2
+ rvm:
3
+ - "2.0"
4
+ - "2.1"
5
+ - "2.2"
6
+ - "2.3.3"
7
+ - "2.4.0"
8
+ - ruby-head
9
+ - jruby-head
10
+ sudo: false
11
+ cache: bundler
12
+ before_install: gem install bundler -v ">= 1.13.6"
13
+ after_script: bundle exec codeclimate-test-reporter
14
+ matrix:
15
+ allow_failures:
16
+ - rvm: ruby-head
17
+ - rvm: jruby-head
18
+ fast_finish: true
data/CHANGELOG.md ADDED
@@ -0,0 +1,54 @@
1
+ # Change Log
2
+ All notable changes to this project will be documented in this file.
3
+ This project adheres to [Semantic Versioning](http://semver.org/).
4
+
5
+ ## [Unreleased]
6
+
7
+ ## [3.3.0] - 2017-07-21
8
+ ### Added
9
+ - Added Symbol#to_i [[#49](https://github.com/ManageIQ/more_core_extensions/pull/49)]
10
+ - Added Range#step_value [[#47](https://github.com/ManageIQ/more_core_extensions/pull/47)]
11
+ - Added Hash#sort! & #sort_by! [[#46](https://github.com/ManageIQ/more_core_extensions/pull/46)]
12
+ - Added Object.descendant_get [[#45](https://github.com/ManageIQ/more_core_extensions/pull/45)]
13
+ - Added String#decimal_si_to_f [[#43](https://github.com/ManageIQ/more_core_extensions/pull/43)]
14
+
15
+ ## [3.2.0] - 2017-03-03
16
+ ### Added
17
+ - Added Numeric#clamp [[#30](https://github.com/ManageIQ/more_core_extensions/pull/30)]
18
+ - Added String#to_iec_integer [[#24](https://github.com/ManageIQ/more_core_extensions/pull/24)]
19
+
20
+ ### Changed
21
+ - Updated email Regex to allow mixed case [[#39](https://github.com/ManageIQ/more_core_extensions/pull/39)]
22
+
23
+ ## [3.1.1] - 2016-12-16
24
+ ### Changed
25
+ - Updated email Regex to be more accurate and slightly less restrictive
26
+
27
+ ### Fixed
28
+ - Fixed issue where email Regex did not support more than 3 char TLDs
29
+
30
+ ## [3.1.0] - 2016-08-11
31
+ ### Added
32
+ - Add Array #deviation, #mean, #squares, #variance
33
+ - Add Numeric #square, #round_up, #round_down
34
+
35
+ ## [3.0.0] - 2016-07-07
36
+ ### Changed
37
+ - **BREAKING**: Drop support for Ruby 1.9.3 [[#22](https://github.com/ManageIQ/more_core_extensions/pull/22)]
38
+ - Drop dependency on ActiveSupport due to Rails 5 minimum Ruby version [[#22](https://github.com/ManageIQ/more_core_extensions/pull/22)]
39
+
40
+ ## [2.0.0] - 2015-12-02
41
+ ### Changed
42
+ - **BREAKING**: Remove Object#namespace [[#20](https://github.com/ManageIQ/more_core_extensions/pull/20)]
43
+ - Add ability to pass a transformation block to element_counts [[#21](https://github.com/ManageIQ/more_core_extensions/pull/21)]
44
+ - Array#include_any? and friends now accept a single argument Array. [[#18](https://github.com/ManageIQ/more_core_extensions/pull/18)]
45
+ - Upgraded to RSpec 3 [[#16](https://github.com/ManageIQ/more_core_extensions/pull/16)]
46
+ - Added the Change Log!
47
+
48
+ [Unreleased]: https://github.com/ManageIQ/more_core_extensions/compare/v3.3.0...HEAD
49
+ [3.3.0]: https://github.com/ManageIQ/more_core_extensions/compare/v3.2.0...v3.3.0
50
+ [3.2.0]: https://github.com/ManageIQ/more_core_extensions/compare/v3.1.1...v3.2.0
51
+ [3.1.1]: https://github.com/ManageIQ/more_core_extensions/compare/v3.1.0...v3.1.1
52
+ [3.1.0]: https://github.com/ManageIQ/more_core_extensions/compare/v3.0.0...v3.1.0
53
+ [3.0.0]: https://github.com/ManageIQ/more_core_extensions/compare/v2.0.0...v3.0.0
54
+ [2.0.0]: https://github.com/ManageIQ/more_core_extensions/compare/v1.2.0...v2.0.0
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in more_core_extensions.gemspec
4
+ gemspec
5
+
6
+ # HACK: Rails 5 dropped support for Ruby < 2.2.2
7
+ active_support_version = "< 5" if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.2.2")
8
+ gem 'activesupport', active_support_version
data/README.md CHANGED
@@ -51,6 +51,9 @@ MoreCoreExtensions are a set of core extensions beyond those provided by ActiveS
51
51
  * `#delete_nils` - Deletes all keys where the value is nil
52
52
  * core_ext/hash/nested.rb (see [Shared](#shared))
53
53
  * `#delete_blank_paths` - Deletes all paths where the value is blank
54
+ * core_ext/hash/sorting.rb (see [Shared](#shared))
55
+ * `#sort!` - Replace the original with the sorted hash
56
+ * `#sort_by!` - Replace the original with the sorted_by hash
54
57
 
55
58
  #### Module
56
59
 
@@ -69,11 +72,20 @@ MoreCoreExtensions are a set of core extensions beyond those provided by ActiveS
69
72
 
70
73
  #### Object
71
74
 
75
+ * core_ext/module/descendants.rb
76
+ * `#descendant_get` - Returns the descendant with a given name
72
77
  * core_ext/module/namespace.rb
73
78
  * `#in_namespace?` - Returns whether or not the object is in the given namespace
74
79
 
80
+ #### Range
81
+
82
+ * core_ext/range/step_value.rb
83
+ * `#step_value` - Step through a range at a given increment
84
+
75
85
  #### String
76
86
 
87
+ * core_ext/string/decimal_suffix.rb
88
+ * `#decimal_si_to_f` - Returns a Float based on the number and suffix given
77
89
  * core_ext/string/formats.rb
78
90
  * `#email?` - Returns whether or not the String is an= valid email
79
91
  * `#domain_name?` - Returns whether or not the String is a valid domain name
@@ -87,6 +99,11 @@ MoreCoreExtensions are a set of core extensions beyond those provided by ActiveS
87
99
  * core_ext/string/iec60027_2.rb
88
100
  * `#iec_60027_2_to_i` - Convert strings with an IEC60027-2 suffix to an integer
89
101
 
102
+ #### Symbol
103
+
104
+ * core_ext/symbol/to_i.rb
105
+ * `#to_i` - Returns the integer value of a symbol
106
+
90
107
  #### Shared
91
108
 
92
109
  * core_ext/shared/nested.rb
@@ -120,3 +137,7 @@ Or install it yourself as:
120
137
  3. Commit your changes (`git commit -am 'Add some feature'`)
121
138
  4. Push to the branch (`git push origin my-new-feature`)
122
139
  5. Create new Pull Request
140
+
141
+ ## License
142
+
143
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rspec/core/rake_task'
4
+ RSpec::Core::RakeTask.new('spec')
5
+ task :test => :spec
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "more_core_extensions"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -5,4 +5,6 @@ require 'more_core_extensions/core_ext/hash'
5
5
  require 'more_core_extensions/core_ext/module'
6
6
  require 'more_core_extensions/core_ext/numeric'
7
7
  require 'more_core_extensions/core_ext/object'
8
+ require 'more_core_extensions/core_ext/range'
8
9
  require 'more_core_extensions/core_ext/string'
10
+ require 'more_core_extensions/core_ext/symbol'
@@ -0,0 +1,20 @@
1
+ module MoreCoreExtensions
2
+ module HashSortBang
3
+ def sort!(*args, &block)
4
+ sorted = sort(*args, &block)
5
+ sorted = self.class[sorted.to_a] unless sorted.instance_of?(self.class)
6
+ replace(sorted)
7
+ end
8
+ end
9
+
10
+ module HashSortByBang
11
+ def sort_by!(*args, &block)
12
+ sorted = sort_by(*args, &block)
13
+ sorted = self.class[sorted.to_a] unless sorted.instance_of?(self.class)
14
+ replace(sorted)
15
+ end
16
+ end
17
+ end
18
+
19
+ Hash.send(:include, MoreCoreExtensions::HashSortBang) unless Hash.method_defined?(:sort!)
20
+ Hash.send(:include, MoreCoreExtensions::HashSortByBang) unless Hash.method_defined?(:sort_by!)
@@ -1,2 +1,3 @@
1
- require 'more_core_extensions/core_ext/hash/nested'
2
1
  require 'more_core_extensions/core_ext/hash/deletes'
2
+ require 'more_core_extensions/core_ext/hash/nested'
3
+ require 'more_core_extensions/core_ext/hash/sorting'
@@ -0,0 +1,17 @@
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)
@@ -1,2 +1,3 @@
1
1
  require 'active_support/core_ext/object/blank'
2
2
  require 'more_core_extensions/core_ext/object/namespace'
3
+ require 'more_core_extensions/core_ext/object/descendants'
@@ -0,0 +1,45 @@
1
+ module MoreCoreExtensions
2
+ module RangeStepValue
3
+ # Iterates over rng, starting with the beginning of rng, incrementing by the
4
+ # value, and passing that element to the block. Unlike +step+, +step_value+
5
+ # invokes the + operator to iterate over the range elements. Unless the end is
6
+ # excluded from the range, the final value of the iteration will always be the
7
+ # end value, even if the increment value goes past the end of the range.
8
+ #
9
+ # This method has performance benefits over +step+ when working with ranges of
10
+ # Time objects, for example, where step calling succ may be called an
11
+ # inordinate number of times.
12
+ #
13
+ # t = Time.now.midnight
14
+ # range = (t - 3.days)..t
15
+ # range.step_value(1.day) {|x| puts x}
16
+ #
17
+ # produces:
18
+ # Tue Dec 14 00:00:00 -0500 2010
19
+ # Wed Dec 15 00:00:00 -0500 2010
20
+ # Thu Dec 16 00:00:00 -0500 2010
21
+ # Fri Dec 17 00:00:00 -0500 2010
22
+ #
23
+ def step_value(value)
24
+ if block_given?
25
+ return if self.begin > self.end
26
+
27
+ iter = self.begin
28
+ loop do
29
+ yield iter unless iter == self.end && exclude_end?
30
+ break if iter == self.end
31
+ iter += value
32
+ iter = self.end if iter > self.end
33
+ end
34
+
35
+ self
36
+ else
37
+ ret = []
38
+ step_value(value) { |v| ret << v }
39
+ ret
40
+ end
41
+ end
42
+ end
43
+ end
44
+
45
+ Range.send(:include, MoreCoreExtensions::RangeStepValue)
@@ -0,0 +1 @@
1
+ require 'more_core_extensions/core_ext/range/step_value'
@@ -0,0 +1,17 @@
1
+ module MoreCoreExtensions
2
+ module DecimalSI
3
+ DECIMAL_SUFFIXES = {"d" => 1e-1, "c" => 1e-2, "m" => 1e-3, "μ" => 1e-6, "n" => 1e-9, "p" => 1e-12, "f" => 1e-15,
4
+ "a" => 1e-18, "h" => 1e2, "k" => 1e3, "M" => 1e6, "G" => 1e9, "T" => 1e12, "P" => 1e15,
5
+ "E" => 1e18}.freeze
6
+ def decimal_si_to_f
7
+ multiplier = DECIMAL_SUFFIXES[self[-1]]
8
+ if multiplier
9
+ Float(self[0..-2]) * multiplier
10
+ else
11
+ Float(self)
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ String.send(:prepend, MoreCoreExtensions::DecimalSI)
@@ -1,3 +1,4 @@
1
1
  require 'more_core_extensions/core_ext/string/formats'
2
2
  require 'more_core_extensions/core_ext/string/hex_dump'
3
3
  require 'more_core_extensions/core_ext/string/iec60027_2'
4
+ require 'more_core_extensions/core_ext/string/decimal_suffix'
@@ -0,0 +1,9 @@
1
+ module MoreCoreExtensions
2
+ module SymbolToI
3
+ def to_i
4
+ to_s.to_i
5
+ end
6
+ end
7
+ end
8
+
9
+ Symbol.send(:include, MoreCoreExtensions::SymbolToI) unless Symbol.method_defined?(:to_i)
@@ -0,0 +1 @@
1
+ require 'more_core_extensions/core_ext/symbol/to_i'
@@ -1,3 +1,3 @@
1
1
  module MoreCoreExtensions
2
- VERSION = "3.2.0".freeze
2
+ VERSION = "3.3.0".freeze
3
3
  end
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'more_core_extensions/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "more_core_extensions"
8
+ spec.version = MoreCoreExtensions::VERSION
9
+ spec.authors = ["Jason Frey", "Brandon Dunne"]
10
+ spec.email = ["fryguy9@gmail.com", "bdunne@redhat.com"]
11
+ spec.description = %q{MoreCoreExtensions are a set of core extensions beyond those provided by ActiveSupport.}
12
+ spec.summary = spec.description
13
+ spec.homepage = "http://github.com/ManageIQ/more_core_extensions"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ f.match(%r{^(test|spec|features)/})
18
+ end
19
+ spec.bindir = "exe"
20
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
+ spec.require_paths = ["lib"]
22
+
23
+ spec.required_ruby_version = ">= 2.0.0"
24
+
25
+ spec.add_development_dependency "bundler", "~> 1.3"
26
+ spec.add_development_dependency "codeclimate-test-reporter"
27
+ spec.add_development_dependency "rake"
28
+ spec.add_development_dependency "rspec", ">= 3.0"
29
+ spec.add_development_dependency "simplecov"
30
+
31
+ spec.add_runtime_dependency "activesupport"
32
+ end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: more_core_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Frey
8
8
  - Brandon Dunne
9
9
  autorequire:
10
- bindir: bin
10
+ bindir: exe
11
11
  cert_chain: []
12
- date: 2017-03-03 00:00:00.000000000 Z
12
+ date: 2017-07-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -26,7 +26,7 @@ dependencies:
26
26
  - !ruby/object:Gem::Version
27
27
  version: '1.3'
28
28
  - !ruby/object:Gem::Dependency
29
- name: coveralls
29
+ name: codeclimate-test-reporter
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - ">="
@@ -67,6 +67,20 @@ dependencies:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '3.0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: simplecov
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
70
84
  - !ruby/object:Gem::Dependency
71
85
  name: activesupport
72
86
  requirement: !ruby/object:Gem::Requirement
@@ -90,9 +104,18 @@ executables: []
90
104
  extensions: []
91
105
  extra_rdoc_files: []
92
106
  files:
107
+ - ".gitignore"
93
108
  - ".rspec"
109
+ - ".rubocop.yml"
110
+ - ".rubocop_local.yml"
111
+ - ".travis.yml"
112
+ - CHANGELOG.md
113
+ - Gemfile
94
114
  - LICENSE.txt
95
115
  - README.md
116
+ - Rakefile
117
+ - bin/console
118
+ - bin/setup
96
119
  - lib/more_core_extensions.rb
97
120
  - lib/more_core_extensions/all.rb
98
121
  - lib/more_core_extensions/core_ext/array.rb
@@ -108,6 +131,7 @@ files:
108
131
  - lib/more_core_extensions/core_ext/hash.rb
109
132
  - lib/more_core_extensions/core_ext/hash/deletes.rb
110
133
  - lib/more_core_extensions/core_ext/hash/nested.rb
134
+ - lib/more_core_extensions/core_ext/hash/sorting.rb
111
135
  - lib/more_core_extensions/core_ext/module.rb
112
136
  - lib/more_core_extensions/core_ext/module/namespace.rb
113
137
  - lib/more_core_extensions/core_ext/numeric.rb
@@ -115,32 +139,20 @@ files:
115
139
  - lib/more_core_extensions/core_ext/numeric/math.rb
116
140
  - lib/more_core_extensions/core_ext/numeric/rounding.rb
117
141
  - lib/more_core_extensions/core_ext/object.rb
142
+ - lib/more_core_extensions/core_ext/object/descendants.rb
118
143
  - lib/more_core_extensions/core_ext/object/namespace.rb
144
+ - lib/more_core_extensions/core_ext/range.rb
145
+ - lib/more_core_extensions/core_ext/range/step_value.rb
119
146
  - lib/more_core_extensions/core_ext/shared/nested.rb
120
147
  - lib/more_core_extensions/core_ext/string.rb
148
+ - lib/more_core_extensions/core_ext/string/decimal_suffix.rb
121
149
  - lib/more_core_extensions/core_ext/string/formats.rb
122
150
  - lib/more_core_extensions/core_ext/string/hex_dump.rb
123
151
  - lib/more_core_extensions/core_ext/string/iec60027_2.rb
152
+ - lib/more_core_extensions/core_ext/symbol.rb
153
+ - lib/more_core_extensions/core_ext/symbol/to_i.rb
124
154
  - lib/more_core_extensions/version.rb
125
- - spec/core_ext/array/deletes_spec.rb
126
- - spec/core_ext/array/duplicates_spec.rb
127
- - spec/core_ext/array/element_counts_spec.rb
128
- - spec/core_ext/array/inclusions_spec.rb
129
- - spec/core_ext/array/math_spec.rb
130
- - spec/core_ext/array/nested_spec.rb
131
- - spec/core_ext/array/random_spec.rb
132
- - spec/core_ext/array/stretch_spec.rb
133
- - spec/core_ext/array/tableize_spec.rb
134
- - spec/core_ext/hash/deletes_spec.rb
135
- - spec/core_ext/hash/nested_spec.rb
136
- - spec/core_ext/numeric/clamp_spec.rb
137
- - spec/core_ext/numeric/math_spec.rb
138
- - spec/core_ext/numeric/rounding_spec.rb
139
- - spec/core_ext/object/namespace_spec.rb
140
- - spec/core_ext/string/formats_spec.rb
141
- - spec/core_ext/string/hex_dump_spec.rb
142
- - spec/core_ext/string/iec60027_2_spec.rb
143
- - spec/spec_helper.rb
155
+ - more_core_extensions.gemspec
144
156
  homepage: http://github.com/ManageIQ/more_core_extensions
145
157
  licenses:
146
158
  - MIT
@@ -166,24 +178,4 @@ signing_key:
166
178
  specification_version: 4
167
179
  summary: MoreCoreExtensions are a set of core extensions beyond those provided by
168
180
  ActiveSupport.
169
- test_files:
170
- - spec/core_ext/array/deletes_spec.rb
171
- - spec/core_ext/array/duplicates_spec.rb
172
- - spec/core_ext/array/element_counts_spec.rb
173
- - spec/core_ext/array/inclusions_spec.rb
174
- - spec/core_ext/array/math_spec.rb
175
- - spec/core_ext/array/nested_spec.rb
176
- - spec/core_ext/array/random_spec.rb
177
- - spec/core_ext/array/stretch_spec.rb
178
- - spec/core_ext/array/tableize_spec.rb
179
- - spec/core_ext/hash/deletes_spec.rb
180
- - spec/core_ext/hash/nested_spec.rb
181
- - spec/core_ext/numeric/clamp_spec.rb
182
- - spec/core_ext/numeric/math_spec.rb
183
- - spec/core_ext/numeric/rounding_spec.rb
184
- - spec/core_ext/object/namespace_spec.rb
185
- - spec/core_ext/string/formats_spec.rb
186
- - spec/core_ext/string/hex_dump_spec.rb
187
- - spec/core_ext/string/iec60027_2_spec.rb
188
- - spec/spec_helper.rb
189
- - ".rspec"
181
+ test_files: []
@@ -1,15 +0,0 @@
1
- describe Array do
2
- it "#delete_nils" do
3
- expect([].delete_nils).to eq([])
4
- expect([1].delete_nils).to eq([1])
5
- expect([nil].delete_nils).to eq([])
6
- expect([1, [], nil].delete_nils).to eq([1, []])
7
- end
8
-
9
- it "#delete_blanks" do
10
- expect([].delete_blanks).to eq([])
11
- expect([1].delete_blanks).to eq([1])
12
- expect([nil].delete_blanks).to eq([])
13
- expect([1, [], nil].delete_blanks).to eq([1])
14
- end
15
- end
@@ -1,9 +0,0 @@
1
- describe Array do
2
- it '#duplicates' do
3
- expect([1, 2, 3, 4].duplicates).to be_empty
4
- expect([1, 2, 3, 4, 2, 4].duplicates).to match_array [2, 4]
5
-
6
- expect(['1', '2', '3', '4'].duplicates).to be_empty
7
- expect(['1', '2', '3', '4', '2', '4'].duplicates).to match_array ['2', '4']
8
- end
9
- end
@@ -1,16 +0,0 @@
1
- describe Array do
2
- describe "#element_counts" do
3
- it "without a block" do
4
- expect([].element_counts).to eq({})
5
- expect([1].element_counts).to eq({1 => 1})
6
- expect([nil].element_counts).to eq({nil => 1})
7
- expect([1, 2, 3, 1, 3, 1].element_counts).to eq({1 => 3, 2 => 1, 3 => 2})
8
- end
9
-
10
- it "with a block" do
11
- expect([].element_counts(&:size)).to eq({})
12
- expect(%w(a).element_counts(&:size)).to eq({1 => 1})
13
- expect(%w(a aa aaa a aaa a).element_counts(&:size)).to eq({1 => 3, 2 => 1, 3 => 2})
14
- end
15
- end
16
- end
@@ -1,51 +0,0 @@
1
- describe Array do
2
- it '#include_any?' do
3
- expect([1, 2, 3].include_any?(1, 2)).to be_truthy
4
- expect([1, 2, 3].include_any?(1, 4)).to be_truthy
5
- expect([1, 2, 3].include_any?(4, 5)).to be_falsey
6
- expect([1, 2, 3].include_any?([1, 4])).to be_truthy
7
- expect([1, 2, 3].include_any?([4, 5])).to be_falsey
8
-
9
- expect(['1', '2', '3'].include_any?('1', '2')).to be_truthy
10
- expect(['1', '2', '3'].include_any?('1', '4')).to be_truthy
11
- expect(['1', '2', '3'].include_any?('4', '5')).to be_falsey
12
- expect(['1', '2', '3'].include_any?(['1', '4'])).to be_truthy
13
- expect(['1', '2', '3'].include_any?(['4', '5'])).to be_falsey
14
- end
15
-
16
- it '#include_none?' do
17
- expect([1, 2, 3].include_none?(1, 2)).to be_falsey
18
- expect([1, 2, 3].include_none?(1, 4)).to be_falsey
19
- expect([1, 2, 3].include_none?(4, 5)).to be_truthy
20
- expect([1, 2, 3].include_none?([1, 4])).to be_falsey
21
- expect([1, 2, 3].include_none?([4, 5])).to be_truthy
22
-
23
- expect(['1', '2', '3'].include_none?('1', '2')).to be_falsey
24
- expect(['1', '2', '3'].include_none?('1', '4')).to be_falsey
25
- expect(['1', '2', '3'].include_none?('4', '5')).to be_truthy
26
- expect(['1', '2', '3'].include_none?(['1', '4'])).to be_falsey
27
- expect(['1', '2', '3'].include_none?(['4', '5'])).to be_truthy
28
- end
29
-
30
- it '#include_all?' do
31
- expect([1, 2, 3].include_all?(1, 2)).to be_truthy
32
- expect([1, 2, 3].include_all?(1, 4)).to be_falsey
33
- expect([1, 2, 3].include_all?(4, 5)).to be_falsey
34
- expect([1, 2, 3].include_all?([1, 2])).to be_truthy
35
- expect([1, 2, 3].include_all?([1, 4])).to be_falsey
36
-
37
- expect(['1', '2', '3'].include_all?('1', '2')).to be_truthy
38
- expect(['1', '2', '3'].include_all?('1', '4')).to be_falsey
39
- expect(['1', '2', '3'].include_all?('4', '5')).to be_falsey
40
- expect(['1', '2', '3'].include_all?(['1', '2'])).to be_truthy
41
- expect(['1', '2', '3'].include_all?(['1', '4'])).to be_falsey
42
- end
43
-
44
- it "#includes_index?" do
45
- expect([1, 2, 3].includes_index?(-4)).to be_falsey
46
- expect([1, 2, 3].includes_index?(-3)).to be_truthy
47
- expect([1, 2, 3].includes_index?(1)).to be_truthy
48
- expect([1, 2, 3].includes_index?(2)).to be_truthy
49
- expect([1, 2, 3].includes_index?(3)).to be_falsey
50
- end
51
- end
@@ -1,16 +0,0 @@
1
- describe Array do
2
- let(:floats) { [1.1, 2.2, 3.3, 4.4, 5.5] }
3
- let(:integers) { [1, 2, 3, 4, 5] }
4
-
5
- context "with floats" do
6
- it("#stddev") { expect(floats.stddev).to be_within(0.00001).of(1.73925) }
7
- it("#mean") { expect(floats.mean).to be_within(0.00001).of(3.30000) }
8
- it("#variance") { expect(floats.variance).to be_within(0.00001).of(3.02500) }
9
- end
10
-
11
- context "with integers" do
12
- it("#stddev") { expect(integers.stddev).to be_within(0.00001).of(1.58113) }
13
- it("#mean") { expect(integers.mean).to be_within(0.00001).of(3.00000) }
14
- it("#variance") { expect(integers.variance).to be_within(0.00001).of(2.50000) }
15
- end
16
- end