Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/BattleBrisket/finishing_moves
Small, focused, awesome methods added to core Ruby classes. Home of the endlessly useful nil_chain.
https://github.com/BattleBrisket/finishing_moves
Last synced: 2 months ago
JSON representation
Small, focused, awesome methods added to core Ruby classes. Home of the endlessly useful nil_chain.
- Host: GitHub
- URL: https://github.com/BattleBrisket/finishing_moves
- Owner: BattleBrisket
- License: mit
- Created: 2014-11-22T01:11:19.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2022-09-12T18:41:14.000Z (over 2 years ago)
- Last Synced: 2024-10-30T01:37:07.667Z (2 months ago)
- Language: Ruby
- Homepage:
- Size: 136 KB
- Stars: 204
- Watchers: 10
- Forks: 10
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ruby - Finishing Moves - Small, focused, incredibly useful methods added to core Ruby classes. Includes the endlessly useful `nil_chain`. (Core Extensions)
README
# Finishing Moves
[![Gem Version](https://badge.fury.io/rb/finishing_moves.svg)](https://rubygems.org/gems/finishing_moves)
[![Build Status](https://travis-ci.org/forgecrafted/finishing_moves.svg?branch=master)](https://travis-ci.org/forgecrafted/finishing_moves)
[![Mentioned in Awesome Ruby](https://awesome.re/mentioned-badge.svg)](https://github.com/markets/awesome-ruby)Ruby includes a huge amount of default awesomeness that tackles most common development challenges. But every now and then, you find yourself performing contortions to achieve results that, honestly, **should feel more natural** given the language's design elegance. Finishing Moves is a collection of methods designed to assist in those "why is this awkward?" scenarios.
In the right situation, they kick serious [cyclomatic butt](https://en.wikipedia.org/wiki/Cyclomatic_complexity).
## Installation
Gemfile
```
gem 'finishing_moves'
```Command line
```
gem install 'finishing_moves'
```## Documentation
**Not sure if this gem is for you?** Check out the methods marked with a :boom: first.
- [`Array#to_hash_values`](https://github.com/BattleBrisket/finishing_moves/wiki/Array#arrayto_hash_values) :boom:
- [`Array#to_indexed_hash`](https://github.com/BattleBrisket/finishing_moves/wiki/Array#arrayto_indexed_hash)
- [`Array#to_hash_keys`](https://github.com/BattleBrisket/finishing_moves/wiki/Array#arrayto_hash_keys)
- [`Array#to_sym_strict`](https://github.com/BattleBrisket/finishing_moves/wiki/Array#arrayto_sym_strict)
- [`Array#to_sym_loose`](https://github.com/BattleBrisket/finishing_moves/wiki/Array#arrayto_sym_loose)
- [`Enumerable#key_map`](https://github.com/BattleBrisket/finishing_moves/wiki/Enumerable#enumerablekey_map) :boom:
- [`Enumerable#key_map_reduce`](https://github.com/BattleBrisket/finishing_moves/wiki/Enumerable#enumerablekey_map_reduce)
- [`Hash#delete!`](https://github.com/BattleBrisket/finishing_moves/wiki/Hash#hashdelete)
- [`Hash#delete_each`](https://github.com/BattleBrisket/finishing_moves/wiki/Hash#hashdelete_each)
- [`Hash#delete_each!`](https://github.com/BattleBrisket/finishing_moves/wiki/Hash#hashdelete_each-1)
- [`Integer#length`](https://github.com/BattleBrisket/finishing_moves/wiki/Numeric#integerlength)
- [`Kernel#nil_chain`](https://github.com/BattleBrisket/finishing_moves/wiki/Kernel#kernelnil_chain) :boom::boom:
- [`Kernel#bool_chain`](https://github.com/BattleBrisket/finishing_moves/wiki/Kernel#kernelbool_chain)
- [`Kernel#silently`](https://github.com/BattleBrisket/finishing_moves/wiki/Kernel#kernelsilently)
- [`Kernel#cascade`](https://github.com/BattleBrisket/finishing_moves/wiki/Kernel#kernelcascade)
- [`Kernel#class_exists?`](https://github.com/BattleBrisket/finishing_moves/wiki/Kernel#kernelclass_exists)
- [`Numeric#add_percent`](https://github.com/BattleBrisket/finishing_moves/wiki/Numeric#numericadd_percent)
- [`Numeric#subtract_percent`](https://github.com/BattleBrisket/finishing_moves/wiki/Numeric#numericsubtract_percent)
- [`Object#same_as`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objectsame_as)
- [`Object#not_nil?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objectnot_nil)
- [`Object#numeric?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objectnumeric) :boom:
- [`Object#is_an?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objectis_an)
- [`Object#is_not_a?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objectis_not_a)
- [`Object#is_one_of?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objectis_one_of) :boom:
- [`Object#true?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objecttruefalsebool)
- [`Object#false?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objecttruefalsebool)
- [`Object#bool?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objecttruefalsebool)
- [`Object#true_?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objecttrue_-objectfalse_)
- [`Object#false_?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objecttrue_-objectfalse_)
- [`String#dedupe`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringdedupe)
- [`String#keyify`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringkeyify)
- [`String#slugify`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringslugify)
- [`String#match?`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringmatch)
- [`String#nl2br`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringnl2br)
- [`String#newline_to`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringnewline_to)
- [`String#remove_whitespace`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringremove_whitespace)
- [`String#replace_whitespace`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringreplace_whitespace)
- [`String#strip_all`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringstrip_all) :boom:
- [`String#to_uuid`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringto_uuid)
- [Boolean Typecasting](https://github.com/BattleBrisket/finishing_moves/wiki/Boolean-Typecasting) (*multi-class enhancement*)### Ruby Version
Tested against all supported versions of official RVM, currently **`2.7.6` and above**.
## Development approach
- **Never** override default Ruby behavior, only add functionality.
- Follow the Unix philosophy of *"Do one job really well."*
- Minimize assumptions, e.g. avoid formatting output, mutating values, and conditional logic flows.
- Play nice with major Ruby players like Rake, Rails, and Sinatra.
- Test all the things.## Bug Reports
[Drop us a line in the issues section](https://github.com/BattleBrisket/finishing_moves/issues).
**Be sure to include sample code that reproduces the problem.**
## Add your own finisher!
1. Fork this repo
2. Write your tests
3. Add your finisher
4. Repeat steps 2 and 3 until you see a brilliant luster
5. Submit a pull request