Class Text::Format::Alpha
In: lib/text/format/alpha.rb
Parent: Object
Alpha Roman Number lib/text/format.rb lib/text/format/alpha.rb lib/text/format/roman.rb lib/text/format/number.rb Format Text dot/m_3_0.png

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
55:   def initialize(options = {}) #:yields self:
56:     @transform  = options[:transform] || nil
57:     @wrap       = options[:wrap]      || false
58:     @postfix    = options[:postfix]   || nil
59:     @prefix     = options[:prefix]    || nil
60:   end

Public Instance methods

[Source]

    # File lib/text/format/alpha.rb, line 35
35:   def [](index)
36:     if @wrap
37:       ltr = (?a + (index % 26)).chr
38:     elsif index.between?(0, 25)
39:       ltr = (?a + index).chr
40:     else
41:       ltr = nil
42:     end
43: 
44:     if ltr
45:       if @transform
46:         "#{@prefix}#{ltr.send(transform)}#{@postfix}"
47:       else
48:         "#{@prefix}#{ltr}#{@postfix}"
49:       end
50:     else
51:       ""
52:     end
53:   end

[Validate]