summaryrefslogtreecommitdiff
path: root/lib/banzai/filter_array.rb
diff options
context:
space:
mode:
authorRobert Speicher <rspeicher@gmail.com>2016-03-01 15:54:35 -0500
committerRobert Speicher <rspeicher@gmail.com>2016-03-01 15:54:35 -0500
commitc9b11322172c97320f6bbddbf6c14b235ab9d7c3 (patch)
tree80c6997cf3c3910c505f60a10f600116cac6d98f /lib/banzai/filter_array.rb
parent6aa50165b0acc355925e271f07ef8e87291e0232 (diff)
downloadgitlab-ce-c9b11322172c97320f6bbddbf6c14b235ab9d7c3.tar.gz
Add FilterArray class to Banzairs-filter-array
Diffstat (limited to 'lib/banzai/filter_array.rb')
-rw-r--r--lib/banzai/filter_array.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/banzai/filter_array.rb b/lib/banzai/filter_array.rb
new file mode 100644
index 00000000000..77835a14027
--- /dev/null
+++ b/lib/banzai/filter_array.rb
@@ -0,0 +1,27 @@
+module Banzai
+ class FilterArray < Array
+ # Insert a value immediately after another value
+ #
+ # If the preceding value does not exist, the new value is added to the end
+ # of the Array.
+ def insert_after(after_value, value)
+ i = index(after_value) || length - 1
+
+ insert(i + 1, value)
+ end
+
+ # Insert a value immediately before another value
+ #
+ # If the succeeding value does not exist, the new value is added to the
+ # beginning of the Array.
+ def insert_before(before_value, value)
+ i = index(before_value) || -1
+
+ if i < 0
+ unshift(value)
+ else
+ insert(i, value)
+ end
+ end
+ end
+end