{"id":13483644,"url":"https://github.com/BattleBrisket/finishing_moves","last_synced_at":"2025-03-27T14:31:30.619Z","repository":{"id":23615231,"uuid":"26984541","full_name":"BattleBrisket/finishing_moves","owner":"BattleBrisket","description":"Small, focused, awesome methods added to core Ruby classes. Home of the endlessly useful nil_chain.","archived":false,"fork":false,"pushed_at":"2022-09-12T18:41:14.000Z","size":139,"stargazers_count":204,"open_issues_count":0,"forks_count":10,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-10-30T01:37:07.667Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BattleBrisket.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-11-22T01:11:19.000Z","updated_at":"2024-09-16T20:57:33.000Z","dependencies_parsed_at":"2022-07-10T09:46:09.418Z","dependency_job_id":null,"html_url":"https://github.com/BattleBrisket/finishing_moves","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BattleBrisket%2Ffinishing_moves","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BattleBrisket%2Ffinishing_moves/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BattleBrisket%2Ffinishing_moves/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BattleBrisket%2Ffinishing_moves/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BattleBrisket","download_url":"https://codeload.github.com/BattleBrisket/finishing_moves/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245863101,"owners_count":20684788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T17:01:13.688Z","updated_at":"2025-03-27T14:31:30.607Z","avatar_url":"https://github.com/BattleBrisket.png","language":"Ruby","funding_links":[],"categories":["Core Extensions","Ruby"],"sub_categories":[],"readme":"# Finishing Moves\n[![Gem Version](https://badge.fury.io/rb/finishing_moves.svg)](https://rubygems.org/gems/finishing_moves)\n[![Build Status](https://travis-ci.org/forgecrafted/finishing_moves.svg?branch=master)](https://travis-ci.org/forgecrafted/finishing_moves)\n[![Mentioned in Awesome Ruby](https://awesome.re/mentioned-badge.svg)](https://github.com/markets/awesome-ruby)\n\nRuby 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.\n\nIn the right situation, they kick serious [cyclomatic butt](https://en.wikipedia.org/wiki/Cyclomatic_complexity).\n\n## Installation\n\nGemfile\n```\ngem 'finishing_moves'\n```\n\nCommand line\n```\ngem install 'finishing_moves'\n```\n\n## Documentation\n\n**Not sure if this gem is for you?** Check out the methods marked with a :boom: first.\n\n  - [`Array#to_hash_values`](https://github.com/BattleBrisket/finishing_moves/wiki/Array#arrayto_hash_values) :boom:\n  - [`Array#to_indexed_hash`](https://github.com/BattleBrisket/finishing_moves/wiki/Array#arrayto_indexed_hash)\n  - [`Array#to_hash_keys`](https://github.com/BattleBrisket/finishing_moves/wiki/Array#arrayto_hash_keys)\n  - [`Array#to_sym_strict`](https://github.com/BattleBrisket/finishing_moves/wiki/Array#arrayto_sym_strict)\n  - [`Array#to_sym_loose`](https://github.com/BattleBrisket/finishing_moves/wiki/Array#arrayto_sym_loose)\n  - [`Enumerable#key_map`](https://github.com/BattleBrisket/finishing_moves/wiki/Enumerable#enumerablekey_map) :boom:\n  - [`Enumerable#key_map_reduce`](https://github.com/BattleBrisket/finishing_moves/wiki/Enumerable#enumerablekey_map_reduce)\n  - [`Hash#delete!`](https://github.com/BattleBrisket/finishing_moves/wiki/Hash#hashdelete)\n  - [`Hash#delete_each`](https://github.com/BattleBrisket/finishing_moves/wiki/Hash#hashdelete_each)\n  - [`Hash#delete_each!`](https://github.com/BattleBrisket/finishing_moves/wiki/Hash#hashdelete_each-1)\n  - [`Integer#length`](https://github.com/BattleBrisket/finishing_moves/wiki/Numeric#integerlength)\n  - [`Kernel#nil_chain`](https://github.com/BattleBrisket/finishing_moves/wiki/Kernel#kernelnil_chain) :boom::boom:\n  - [`Kernel#bool_chain`](https://github.com/BattleBrisket/finishing_moves/wiki/Kernel#kernelbool_chain)\n  - [`Kernel#silently`](https://github.com/BattleBrisket/finishing_moves/wiki/Kernel#kernelsilently)\n  - [`Kernel#cascade`](https://github.com/BattleBrisket/finishing_moves/wiki/Kernel#kernelcascade)\n  - [`Kernel#class_exists?`](https://github.com/BattleBrisket/finishing_moves/wiki/Kernel#kernelclass_exists)\n  - [`Numeric#add_percent`](https://github.com/BattleBrisket/finishing_moves/wiki/Numeric#numericadd_percent)\n  - [`Numeric#subtract_percent`](https://github.com/BattleBrisket/finishing_moves/wiki/Numeric#numericsubtract_percent)\n  - [`Object#same_as`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objectsame_as)\n  - [`Object#not_nil?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objectnot_nil)\n  - [`Object#numeric?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objectnumeric) :boom:\n  - [`Object#is_an?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objectis_an)\n  - [`Object#is_not_a?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objectis_not_a)\n  - [`Object#is_one_of?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objectis_one_of) :boom:\n  - [`Object#true?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objecttruefalsebool)\n  - [`Object#false?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objecttruefalsebool)\n  - [`Object#bool?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objecttruefalsebool)\n  - [`Object#true_?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objecttrue_-objectfalse_)\n  - [`Object#false_?`](https://github.com/BattleBrisket/finishing_moves/wiki/Object#objecttrue_-objectfalse_)\n  - [`String#dedupe`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringdedupe)\n  - [`String#keyify`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringkeyify)\n  - [`String#slugify`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringslugify)\n  - [`String#nl2br`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringnl2br)\n  - [`String#newline_to`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringnewline_to)\n  - [`String#remove_whitespace`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringremove_whitespace)\n  - [`String#replace_whitespace`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringreplace_whitespace)\n  - [`String#strip_all`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringstrip_all) :boom:\n  - [`String#to_uuid`](https://github.com/BattleBrisket/finishing_moves/wiki/String#stringto_uuid)\n  - [Boolean Typecasting](https://github.com/BattleBrisket/finishing_moves/wiki/Boolean-Typecasting) (*multi-class enhancement*)\n\n### Ruby Version\n\nTested against all supported versions of official RVM, currently **`3.1` and above**.\n\n## Development approach\n\n- **Never** override default Ruby behavior, only add functionality.\n- Follow the Unix philosophy of *\"Do one job really well.\"*\n- Minimize assumptions, e.g. avoid formatting output, mutating values, and conditional logic flows.\n- Play nice with major Ruby players like Rake, Rails, and Sinatra.\n- Test all the things.\n\n## Bug Reports\n\n[Drop us a line in the issues section](https://github.com/BattleBrisket/finishing_moves/issues).\n\n**Be sure to include sample code that reproduces the problem.**\n\n## Add your own finisher!\n\n1. Fork this repo\n2. Write your tests\n3. Add your finisher\n4. Repeat steps 2 and 3 until you see a brilliant luster\n5. Submit a pull request\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBattleBrisket%2Ffinishing_moves","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FBattleBrisket%2Ffinishing_moves","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBattleBrisket%2Ffinishing_moves/lists"}