0.01
No commit activity in last 3 years
No release in over 3 years
A simple library with common monkey patches for the standard Ruby classes.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme

The monkey-patch Ruby Library

One of the best, and worst, features of Ruby is “monkey-patching”, extending the language’s built-in classes and modules to suit your desires. This is my library for that.

Installation

gem install monkey-patch

Usage

require 'monkey-patch'

Extensions to the Pathname class

The =~ method

I often want to match file path names with regular expressions. Calling to_s first kind of irritating.

p = Pathname.new("/home/chris/.emacs.d/init.el")
p =~ /$.*\.el^/ # Matches.

Extensions to the String class

The camelcase_to_snakecase method

De-uglifies a variable name.

"lookMaICodeInJava".camelcase_to_snakecase # returns "look_ma_i_code_in_java"

The valid_json? method

Returns true if the string is parsable by JSON.parse, false otherwise.

"blarg".valid_json? # Returns false.
'{"foo": "bar"}'.valid_json? # Returns true.

Extensions to the Time class

Date builders: commercial, england, gregorian, italy, jd, jisx0301, julian, ld, mjd, ordinal, today, yesterday

For each of the above methods that construct a Date class, these will then immediately convert it into a Time. Be aware, it will use your current time zone in a lot of situations.

Time.commercial(2001,5,6) # Returns the Time: 2001-02-03 00:00:00 -0600

start_of_second, start_of_minute, start_of_half_hour, start_of_hour, start_of_half_day, start_of_day, start_of_week, start_of_month, start_of_year, start_of_decade, start_of_full_decade, start_of_century, start_of_full_century

These will all return new Time instances relative to the specified time, in the same time zone.

t = Time.new "2014-03-20 13:44:33 -0600"
t.start_of_minute # Returns the time object for 2014-03-20 13:44:00 -0600
t.start_of_half_hour # Returns the time object for 2014-03-20 13:30:00 -0600
t.start_of_hour # Returns the time object for 2014-03-20 13:00:00 -0600
t.start_of_half_day # Returns the time object for 2014-03-20 12:00:00 -0600
t.start_of_day # Returns the time object for 2014-03-20 00:00:00 -0600
# Sunday is the first day of the week, and any ISO standards that try to tell
# you otherwise are written by idiots and liars.
t.start_of_week # Returns the time object for 2014-03-17 00:00:00 -0600
t.start_of_month # Returns the time object for 2014-03-01 00:00:00 -0600
t.start_of_year # Returns the time object for 2014-01-01 00:00:00 -0600
t.start_of_decade # Returns the time object for 2010-01-01 00:00:00 -0600
t.start_of_full_decade # Returns the time object for 2011-01-01 00:00:00 -0600
t.start_of_century # Returns the time object for 2000-01-01 00:00:00 -0600
t.start_of_full_century # Returns the time object for 2001-01-01 00:00:00 -0600