    # File lib/core/facets/array/conjoin.rb, line 57
      def conjoin(*args, &block)
        return first.to_s if size < 2

        options = (Hash===args.last) ? args.pop : {}

        spacing = options.delete(:space)  || 0
        spacer  = options.delete(:spacer) || " "
        space   = spacer * spacing.to_i

        sep = []

        if block_given?
          (size - 1).times do |i|
            sep << space + yield(i, *slice(i,2)) + space
          end
        else
          separator   = args.shift || " "
          options[-1] = args.shift if args.first

          options[0]  = options.delete(:first) if options.key?(:first)
          options[-1] = options.delete(:last)  if options.key?(:last)

          separator = space + separator + space

          sep = [separator] * (size - 1)

          options.each{|i, s| sep[i] = space + s + space}
        end
        zip(sep).join
      end