sanger/sequencescape

View on GitHub
lib/oligo_enumerator.rb

Summary

Maintainability
A
0 mins
Test Coverage
F
54%
# frozen_string_literal: true

# Class OligoEnumerator provides a simple means of generating unique
# tag sequences for testing and development
#
# @author Genome Research Ltd.
#
class OligoEnumerator
  include Enumerable

  #
  # Generate an oligo enumerator
  #
  # @param [Integer] size The number of tags to generate
  #
  def initialize(size, initial = 0)
    @size = size
    @initial = initial
  end

  def last
    tag(@size)
  end

  def each
    @size.times { |i| yield tag(i + @initial) }
  end

  def tag(i)
    i.to_s(4).tr('0123', 'ATCG')
  end
end