— Feb 05, 2013
Update: After writing this, I discovered a better method
for solving this problem. I thought it worth going ahead and publishing this
post since I took the time to write it. Maybe there’s some good buried in here
somewhere. I think my favorite part of the below idea is its use of inject
. It
uses short-circuited logic to quickly match during the injection loop. Live and
learn! :)
For a recent Rails project, I needed to exclude some items from an Array
. The
problem was I needed to exclude items that matched certain patterns rather than
the exact strings. So my_arr - excluded_items
was out.
Say we have an array that looks like this:
And we want to exclude any elements containing the string "_with"
or
"_suffix1"
.
Array#fuzzy_include?
https://gist.github.com/iamvery/4692735
This method will see if the any of the array’s items match the given string. It uses each value of the array as a regular expression against the given value.
The above problem can be solved by:
You can also provide a “format” (for lack of a better word) for the regular expression that will be used to match items.
You could for example find if a given string ended in a number of suffixes.
In this example, the second value "something_with_this_also"
is not excluded
because it does not end with "_with"
as specified by the format "%s$"
.
I must admit, something about this solution doesn’t quite feel “right”, but it was at least a fun little experiment. Feel free to tell me if you think I’m way out in left field over this solution. :)