Sha256: bdb218a5a63535960687576b72a7d90072e8bc56e1a17f9bba62749e18aa81e6

Contents?: true

Size: 1.12 KB

Versions: 44

Compression:

Stored size: 1.12 KB

Contents

#          Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
# All files in this distribution are subject to the terms of the Ruby license.

module Ramaze
  module CoreExtensions

    # Extensions for Array

    module Array

      #   a = [1, 2, 3]
      #   a.put_within(4, :after => 2, :before => 3)
      #   a # => [1, 2, 4, 3]

      def put_within(object, constrain)
        pre, post = constrain.values_at(:after, :before)

        return put_after(pre, object) if rindex(post) - index(pre) == 1

        raise ArgumentError, "Too many elements within constrain"
      end

      #   a = [1, 2, 3]
      #   a.put_after(2, 4)
      #   a # => [1, 2, 4, 3]

      def put_after(element, object)
        return self[index(element) + 1, 0] = object if include?(element)

        raise ArgumentError, "The given element doesn't exist"
      end

      #   a = [1, 2, 3]
      #   a.put_before(2, 4)
      #   a # => [1, 4, 2, 3]

      def put_before(element, object)
        return self[rindex(element), 0] = object if include?(element)

        raise ArgumentError, "The given element doesn't exist"
      end
    end
  end
end

Version data entries

44 entries across 44 versions & 5 rubygems

Version Path
Pistos-ramaze-2008.09 lib/ramaze/snippets/array/put_within.rb
Pistos-ramaze-2008.12 lib/ramaze/snippets/array/put_within.rb
Pistos-ramaze-2009.01 lib/ramaze/snippets/array/put_within.rb
Pistos-ramaze-2009.02 lib/ramaze/snippets/array/put_within.rb
Pistos-ramaze-2009.04.08 lib/ramaze/snippets/array/put_within.rb
Pistos-ramaze-2009.06.12 lib/ramaze/snippets/array/put_within.rb
manveru-ramaze-2008.09 lib/ramaze/snippets/array/put_within.rb
manveru-ramaze-2008.10 lib/ramaze/snippets/array/put_within.rb
manveru-ramaze-2008.12 lib/ramaze/snippets/array/put_within.rb
manveru-ramaze-2009.01 lib/ramaze/snippets/array/put_within.rb
manveru-ramaze-2009.04.01 lib/ramaze/snippets/array/put_within.rb
manveru-ramaze-2009.04.08 lib/ramaze/snippets/array/put_within.rb
manveru-ramaze-2009.04.18 lib/ramaze/snippets/array/put_within.rb
manveru-ramaze-2009.04.22 lib/ramaze/snippets/array/put_within.rb
manveru-ramaze-2009.04 lib/ramaze/snippets/array/put_within.rb
manveru-ramaze-2009.05.08 lib/ramaze/snippets/array/put_within.rb
manveru-ramaze-2009.05 lib/ramaze/snippets/array/put_within.rb
manveru-ramaze-2009.06.04 lib/ramaze/snippets/array/put_within.rb
manveru-ramaze-2009.06.12 lib/ramaze/snippets/array/put_within.rb
manveru-ramaze-2009.06 lib/ramaze/snippets/array/put_within.rb