Sha256: 70f42756c0bc52ae15832545a667d2ebac68b6b4282aa4b29a5e1f9c4d190eea

Contents?: true

Size: 759 Bytes

Versions: 14

Compression:

Stored size: 759 Bytes

Contents

module Rbexy
  module Refinements
    module Array
      module InsertBetweenTypes
        refine ::Array do
          def insert_between_types(type1, type2, &block)
            map.with_index do |curr, i|
              prev_i = i - 1

              if prev_i >= 0 && InsertBetweenTypes.one_of_each_type?([self[prev_i], curr], [type1, type2])
                [block.call, curr]
              else
                [curr]
              end
            end.flatten
          end
        end

        def self.one_of_each_type?(items_pair, types_pair)
          items_pair[0].is_a?(types_pair[0]) && items_pair[1].is_a?(types_pair[1]) ||
            items_pair[0].is_a?(types_pair[1]) && items_pair[1].is_a?(types_pair[0])
        end
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
rbexy-2.0.0.rc5 lib/rbexy/refinements/array/insert_between_types.rb
rbexy-2.0.0.rc4 lib/rbexy/refinements/array/insert_between_types.rb
rbexy-2.0.0.rc3 lib/rbexy/refinements/array/insert_between_types.rb
rbexy-2.0.0.rc2 lib/rbexy/refinements/array/insert_between_types.rb
rbexy-2.0.0.rc1 lib/rbexy/refinements/array/insert_between_types.rb
rbexy-2.0.0.beta9 lib/rbexy/refinements/array/insert_between_types.rb
rbexy-2.0.0.beta8 lib/rbexy/refinements/array/insert_between_types.rb
rbexy-2.0.0.beta7 lib/rbexy/refinements/array/insert_between_types.rb
rbexy-2.0.0.beta6 lib/rbexy/refinements/array/insert_between_types.rb
rbexy-2.0.0.beta5 lib/rbexy/refinements/array/insert_between_types.rb
rbexy-2.0.0.beta4 lib/rbexy/refinements/array/insert_between_types.rb
rbexy-2.0.0.beta3 lib/rbexy/refinements/array/insert_between_types.rb
rbexy-2.0.0.beta2 lib/rbexy/refinements/array/insert_between_types.rb
rbexy-2.0.0.beta1 lib/rbexy/refinements/array/insert_between_types.rb