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.