MoreCoreExtensions
MoreCoreExtensions are a set of core extensions beyond those provided by ActiveSupport.
Extensions Provided
Array
- core_ext/array/compact_map.rb
#compact_map
- Collect non-nil results from the block
- core_ext/array/deletes.rb
#delete_blanks
- Deletes all items where the value is blank#delete_nils
- Deletes all items where the value is nil#deep_delete
- Deletes nested hash key elements
- core_ext/array/duplicates.rb
#duplicates
- Returns an Array of the duplicates found
- core_ext/array/element_counts.rb
#element_counts
- Returns a Hash of each element to the count of those elements
- core_ext/array/inclusions.rb
#include_all?
- Returns whether the Array contains all of the items#include_any?
- Returns whether the Array contains any of the items#include_none?
- Returns whether the Array contains none of the items#includes_index?
- Returns whether the Array has a value at the index
- core_ext/array/math.rb
#mean
- Returns the mean of an Array of Numerics#stddev
- Returns the standard deviation of an Array of Numerics#variance
- Returns the variance of an Array of Numerics
- core_ext/array/nested.rb (see Shared)
#delete_blank_paths
- Deletes all paths where the value is blank
- core_ext/array/random.rb
#random_index
- Picks a valid index randomly#random_element
- Picks an element randomly
- core_ext/array/sorting.rb
#tabular_sort
- Sorts an Array of Hashes by specific columns
- core_ext/array/stretch.rb
.stretch
- Stretch all argument Arrays to make them the same size.stretch!
- Stretch all argument Arrays to make them the same size. Modifies the arguments in place.#stretch
- Stretch receiver to be the same size as the longest argument Array.#stretch
! - Stretch receiver to be the same size as the longest argument Array. Modifies the receiver in place.#zip_stretched
- Zip arguments stretching the receiver if necessary
- core_ext/array/tableize.rb
#tableize
- Create a string representation of receiver in a tabular format if receiver is an Array of Arrays or an Array of Hashes
Class
- core_ext/class/hierarchy.rb
#descendant_get
- Returns the descendant with a given name#hierarchy
- Returns a tree-like Hash structure of all descendants.#lineage
- Returns an Array of all superclasses.#leaf_subclasses
- Returns an Array of all descendants which have no subclasses.
Hash
- core_ext/hash/deletes.rb
#delete_blanks
- Deletes all keys where the value is blank#delete_nils
- Deletes all keys where the value is nil#deep_delete
- Deletes nested hash key elements
- core_ext/hash/nested.rb (see Shared)
#delete_blank_paths
- Deletes all paths where the value is blank
- core_ext/hash/sorting.rb (see Shared)
#sort!
- Replace the original with the sorted hash#sort_by!
- Replace the original with the sorted_by hash
Module
- core_ext/module/cache_with_timeout.rb
#cache_with_timeout
- Creates singleton methods that cache the results of the given block, but only for a short amount of time..clear_all_cache_with_timeout
- Globally clears all cached values across all classes.
- core_ext/module/namespace.rb
#namespace
- Returns an Array with the namespace to the current Module
Numeric
- core_ext/numeric/clamp.rb
#clamp
- Clamp a number to a minimum and/or maximum value
- core_ext/numeric/math.rb
#square
- Returns the square of a Numeric
- core_ext/numeric/rounding.rb
#round_down
- Round down to the specified precision#round_up
- Round up to the specified precision
Object
- core_ext/module/deep_send.rb
#deep_send
- Invokes the specified methods continuously, unless encountering a nil value.
- core_ext/module/namespace.rb
#in_namespace?
- Returns whether or not the object is in the given namespace
Process
- core_ext/process/pause_resume.rb
.pause
- Pauses a process.resume
- Resumes a paused process.alive?
- Returns whether or not a process is running
Range
- core_ext/range/step_value.rb
#step_value
- Step through a range at a given increment
String
- core_ext/string/decimal_suffix.rb
#decimal_si_to_big_decimal
- Returns a BigDecimal based on the number and suffix given#decimal_si_to_f
- Returns a Float based on the number and suffix given
- core_ext/string/formats.rb
#email?
- Returns whether or not the String is an= valid email#domain_name?
- Returns whether or not the String is a valid domain name#hostname?
- Returns whether or not the String is a valid hostname#ipv4?
- Returns whether or not the String is an IPv4 address#ipv6?
- Returns whether or not the String is an IPv6 address#ipaddress?
- Returns whether or not the String is an IPv4 or IPv6 address#integer?
- Returns whether or not the String is an integer#guid?
- Returns whether or not the String is a valid GUID
- core_ext/string/hex_dump.rb
#hex_dump
- Dumps the string in a hex editor style format
- core_ext/string/iec60027_2.rb
#iec_60027_2_to_i
- Convert strings with an IEC60027-2 suffix to an integer
- core_ext/string/to_i_with_method.rb
#to_f_with_method
- Converts to a Float while also evaluating a method invocation#to_i_with_method
- Converts to an Integer while also evaluating a method invocation#number_with_method?
- Determines if the object contains a number with a method invocation
Symbol
- core_ext/symbol/to_i.rb
#to_i
- Returns the integer value of a symbol
Shared
- core_ext/shared/nested.rb
#deep_clone
- Performs a Marshal based deep clone#delete_path
- Delete the value at the specified nesting#fetch_path
- Fetch the value at the specified nesting#find_path
- Detect which nesting holds the specified value#has_key_path?
- Check if a key exists at the specified nesting#include_path?
- alias of#has_key_path?
#key_path?
- alias of#has_key_path?
#member_path?
- alias of#has_key_path?
#store_path
- Store a value at the specified nesting
Installation
Add this line to your application's Gemfile:
gem 'more_core_extensions'
And then execute:
$ bundle
Or install it yourself as:
$ gem install more_core_extensions
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
License
The gem is available as open source under the terms of the MIT License.