Class Text::Format::Alpha
In: lib/text/format/alpha.rb
Parent: Object

Provides a numbering object that will produce letters. Accepts four options for numbering that will control how the letters are presented when given as #[](index). This numbering object will only provide 26 values (“a” .. “z”) unless :wrap is true.

:transform:The symbol representing the method to be called on the letter. This must be a method that does not require any arguments.
:postfix:The value that will be appended to the letter presented by #[]. Defaults to nil.
:prefix:The value that will be prepended to the letter presented by #[]. Defaults to nil.
:wrap:If true, then indexes will be wrapped from “z” to “a”.
  a1 = Text::Format::Alpha.new(:postfix => ".")
  puts a1[0]  # => "a."
  puts a1[1]  # => "b.
  puts a1[27] # => ""

  a2 = Text::Format::Alpha.new(:prefix => "A.")
  puts a2[0]  # => "A.a"
  puts a2[1]  # => "A.b"
  puts a2[27] # => ""

  a3 = Text::Format::Alpha.new(:transform => :upcase)
  puts a3[0]  # => "A"
  puts a3[1]  # => "B"
  puts a3[27] # => ""

  a4 = Text::Format::Alpha.new(:wrap => true)
  puts a4[0]  # => "a"
  puts a4[27] # => "b"

Methods

[]   new  

Public Class methods

[Source]

# File lib/text/format/alpha.rb, line 55
  def initialize(options = {}) #:yields self:
    @transform  = options[:transform] || nil
    @wrap       = options[:wrap]      || false
    @postfix    = options[:postfix]   || nil
    @prefix     = options[:prefix]    || nil
  end

Public Instance methods

[Source]

# File lib/text/format/alpha.rb, line 35
  def [](index)
    if @wrap
      ltr = (?a + (index % 26)).chr
    elsif index.between?(0, 25)
      ltr = (?a + index).chr
    else
      ltr = nil
    end

    if ltr
      if @transform
        "#{@prefix}#{ltr.send(transform)}#{@postfix}"
      else
        "#{@prefix}#{ltr}#{@postfix}"
      end
    else
      ""
    end
  end

[Validate]